https://info.sonicretro.org/api.php?action=feedcontributions&user=Kram1024&feedformat=atom
Sonic Retro - User contributions [en]
2024-03-28T22:13:30Z
User contributions
MediaWiki 1.30.2
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208796
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-26T21:53:05Z
<p>Kram1024: /* Optional: Fix the Sound Test */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
dacBank0End := *<br />
<br />
align $8000<br />
dacBank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
dacBank1End := *<br />
align $8000<br />
<br />
align $8000<br />
dacBank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
dacBank2End := *<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
bank0End := *<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
bank1End := *<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
bank2End := *<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
bank3End := *<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/Sfx_34.Snd"<br />
Sfx_34_Snd:<br />
binclude "sound/Sfx_35.Snd"<br />
Sfx_35_Snd:<br />
binclude "sound/Sfx_36.Snd"<br />
Sfx_36_Snd:<br />
binclude "sound/Sfx_37.Snd"<br />
Sfx_37_Snd:<br />
binclude "sound/Sfx_38.Snd"<br />
Sfx_38_Snd:<br />
binclude "sound/Sfx_39.Snd"<br />
Sfx_39_Snd:<br />
binclude "sound/Sfx_3A.Snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/Sfx_3B.Snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/Sfx_3C.Snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/Sfx_3D.Snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/Sfx_3E.Snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/Sfx_3F.Snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/Sfx_40.Snd"<br />
Sfx_40_Snd:<br />
binclude "sound/Sfx_41.Snd"<br />
Sfx_41_Snd:<br />
binclude "sound/Sfx_42.Snd"<br />
Sfx_42_Snd:<br />
binclude "sound/Sfx_43.Snd"<br />
Sfx_43_Snd:<br />
binclude "sound/Sfx_44.Snd"<br />
Sfx_44_Snd:<br />
binclude "sound/Sfx_45.Snd"<br />
Sfx_45_Snd:<br />
binclude "sound/Sfx_46.Snd"<br />
Sfx_46_Snd:<br />
binclude "sound/Sfx_47.Snd"<br />
Sfx_47_Snd:<br />
binclude "sound/Sfx_48.Snd"<br />
Sfx_48_Snd:<br />
binclude "sound/Sfx_49.Snd"<br />
Sfx_49_Snd:<br />
binclude "sound/Sfx_4A.Snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/Sfx_4B.Snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/Sfx_4C.Snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/Sfx_4D.Snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/Sfx_4E.Snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/Sfx_4F.Snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/Sfx_50.Snd"<br />
Sfx_50_Snd:<br />
binclude "sound/Sfx_51.Snd"<br />
Sfx_51_Snd:<br />
binclude "sound/Sfx_52.Snd"<br />
Sfx_52_Snd:<br />
binclude "sound/Sfx_53.Snd"<br />
Sfx_53_Snd:<br />
binclude "sound/Sfx_54.Snd"<br />
Sfx_54_Snd:<br />
binclude "sound/Sfx_55.Snd"<br />
Sfx_55_Snd:<br />
binclude "sound/Sfx_56.Snd"<br />
Sfx_56_Snd:<br />
binclude "sound/Sfx_57.Snd"<br />
Sfx_57_Snd:<br />
binclude "sound/Sfx_58.Snd"<br />
Sfx_58_Snd:<br />
binclude "sound/Sfx_59.Snd"<br />
Sfx_59_Snd:<br />
binclude "sound/Sfx_5A.Snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/Sfx_5B.Snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/Sfx_5C.Snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/Sfx_5D.Snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/Sfx_5E.Snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/Sfx_5F.Snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/Sfx_60.Snd"<br />
Sfx_60_Snd:<br />
binclude "sound/Sfx_61.Snd"<br />
Sfx_61_Snd:<br />
binclude "sound/Sfx_62.Snd"<br />
Sfx_62_Snd:<br />
binclude "sound/Sfx_63.Snd"<br />
Sfx_63_Snd:<br />
binclude "sound/Sfx_64.Snd"<br />
Sfx_64_Snd:<br />
binclude "sound/Sfx_65.Snd"<br />
Sfx_65_Snd:<br />
binclude "sound/Sfx_66.Snd"<br />
Sfx_66_Snd:<br />
binclude "sound/Sfx_67.Snd"<br />
Sfx_67_Snd:<br />
binclude "sound/Sfx_68.Snd"<br />
Sfx_68_Snd:<br />
binclude "sound/Sfx_69.Snd"<br />
Sfx_69_Snd:<br />
binclude "sound/Sfx_6A.Snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/Sfx_6B.Snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/Sfx_6C.Snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/Sfx_6D.Snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/Sfx_6E.Snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/Sfx_6F.Snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/Sfx_70.Snd"<br />
Sfx_70_Snd:<br />
binclude "sound/Sfx_71.Snd"<br />
Sfx_71_Snd:<br />
binclude "sound/Sfx_72.Snd"<br />
Sfx_72_Snd:<br />
binclude "sound/Sfx_73.Snd"<br />
Sfx_73_Snd:<br />
binclude "sound/Sfx_74.Snd"<br />
Sfx_74_Snd:<br />
binclude "sound/Sfx_75.Snd"<br />
Sfx_75_Snd:<br />
binclude "sound/Sfx_76.Snd"<br />
Sfx_76_Snd:<br />
binclude "sound/Sfx_77.Snd"<br />
Sfx_77_Snd:<br />
binclude "sound/Sfx_78.Snd"<br />
Sfx_78_Snd:<br />
binclude "sound/Sfx_79.Snd"<br />
Sfx_79_Snd:<br />
binclude "sound/Sfx_7A.Snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/Sfx_7B.Snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/Sfx_7C.Snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/Sfx_7D.Snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/Sfx_7E.Snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/Sfx_7F.Snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/Sfx_80.Snd"<br />
Sfx_80_Snd:<br />
binclude "sound/Sfx_81.Snd"<br />
Sfx_81_Snd:<br />
binclude "sound/Sfx_82.Snd"<br />
Sfx_82_Snd:<br />
binclude "sound/Sfx_83.Snd"<br />
Sfx_83_Snd:<br />
binclude "sound/Sfx_84.Snd"<br />
Sfx_84_Snd:<br />
binclude "sound/Sfx_85.Snd"<br />
Sfx_85_Snd:<br />
binclude "sound/Sfx_86.Snd"<br />
Sfx_86_Snd:<br />
binclude "sound/Sfx_87.Snd"<br />
Sfx_87_Snd:<br />
binclude "sound/Sfx_88.Snd"<br />
Sfx_88_Snd:<br />
binclude "sound/Sfx_89.Snd"<br />
Sfx_89_Snd:<br />
binclude "sound/Sfx_8A.Snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/Sfx_8B.Snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/Sfx_8C.Snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/Sfx_8D.Snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/Sfx_8E.Snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/Sfx_8F.Snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/Sfx_90.Snd"<br />
Sfx_90_Snd:<br />
binclude "sound/Sfx_91.Snd"<br />
Sfx_91_Snd:<br />
binclude "sound/Sfx_92.Snd"<br />
Sfx_92_Snd:<br />
binclude "sound/Sfx_93.Snd"<br />
Sfx_93_Snd:<br />
binclude "sound/Sfx_94.Snd"<br />
Sfx_94_Snd:<br />
binclude "sound/Sfx_95.Snd"<br />
Sfx_95_Snd:<br />
binclude "sound/Sfx_96.Snd"<br />
Sfx_96_Snd:<br />
binclude "sound/Sfx_97.Snd"<br />
Sfx_97_Snd:<br />
binclude "sound/Sfx_98.Snd"<br />
Sfx_98_Snd:<br />
binclude "sound/Sfx_99.Snd"<br />
Sfx_99_Snd:<br />
binclude "sound/Sfx_9A.Snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/Sfx_9B.Snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/Sfx_9C.Snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/Sfx_9D.Snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/Sfx_9E.Snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/Sfx_9F.Snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/Sfx_A0.Snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/Sfx_A1.Snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/Sfx_A2.Snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/Sfx_A3.Snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/Sfx_A4.Snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/Sfx_A5.Snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/Sfx_A6.Snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/Sfx_A7.Snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/Sfx_A8.Snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/Sfx_A9.Snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/Sfx_AA.Snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/Sfx_AB.Snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/Sfx_AC.Snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/Sfx_AD.Snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/Sfx_AE.Snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/Sfx_AF.Snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/Sfx_B0.Snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/Sfx_B1.Snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/Sfx_B2.Snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/Sfx_B3.Snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/Sfx_B4.Snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/Sfx_B5.Snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/Sfx_B6.Snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/Sfx_B7.Snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/Sfx_B8.Snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/Sfx_B9.Snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/Sfx_BA.Snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/Sfx_BB.Snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/Sfx_BC.Snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/Sfx_BD.Snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/Sfx_BE.Snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/Sfx_BF.Snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/Sfx_C0.Snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/Sfx_C1.Snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/Sfx_C2.Snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/Sfx_C3.Snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/Sfx_C4.Snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/Sfx_C5.Snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/Sfx_C6.Snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/Sfx_C7.Snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/Sfx_C8.Snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/Sfx_C9.Snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/Sfx_CA.Snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/Sfx_CB.Snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/Sfx_CC.Snd"<br />
Sfx_CC_Snd:<br />
binclude "sound/Sfx_CD.Snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/Sfx_CE.Snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/Sfx_CF.Snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/Sfx_D0.Snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/Sfx_D1.Snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/Sfx_D2.Snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/Sfx_D3.Snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/Sfx_D4.Snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/Sfx_D5.Snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/Sfx_D6.Snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/Sfx_D7.Snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/Sfx_D8.Snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/Sfx_D9.Snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/Sfx_DA.Snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/Sfx_DB.Snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/Sfx_DC.Snd"<br />
soundBankEnd := *<br />
<br />
if dacBank0End > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{dacBank0End-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-dacBank0End} bytes free at end."<br />
endif<br />
<br />
if dacBank1End > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{dacBank1End-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-dacBank1End} bytes free at end."<br />
endif<br />
<br />
if dacBank2End > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{bank2End-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-bank2End} bytes free at end."<br />
endif<br />
<br />
if bank0End > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{bank0End-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-bank0End} bytes free at end."<br />
endif<br />
<br />
if bank1End > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{bank1End-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-bank1End} bytes free at end."<br />
endif<br />
<br />
if bank2End > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{bank2End-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-bank2End} bytes free at end."<br />
endif<br />
<br />
if bank3End > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{bank3End-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-bank3End} bytes free at end."<br />
endif<br />
<br />
if soundBankEnd > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{soundBankEnd-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-soundBankEnd} bytes free at end."<br />
endif<br />
</asm><br />
<br />
'''Note:''' Linux systems and some mac installs have a case sensitive filesystem and that can cause build errors,<br><br />
to fix, simply rename all non-sound effects to lowercase names.<br />
<br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
+ stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
<br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
now find:<br />
<asm><br />
; loc_541A:<br />
SpecialStage_Unpause:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
move.b #8,(Vint_routine).w<br />
bra.w WaitForVint<br />
</asm><br />
replace the line right after the label with:<br />
<asm><br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
</asm><br />
<br />
==Driver Data Files==<br />
Unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
; Music IDs<br />
offset := zMasterPlaylist<br />
ptrsize := 1<br />
idstart := $81<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy zMusIDPtr in the $80 slot<br />
<br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 1<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
; Sound IDs<br />
offset := SoundIndex<br />
ptrsize := 2<br />
idstart := $A0<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy SndPtr in the $80 slot<br />
<br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SndID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
<br />
==Fixing the special sounds==<br />
Any time you update the sound driver, you need to change these sounds:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_StopSFX = $78+$80 ; F8<br />
MusID_FadeOut = $79+$80 ; F9<br />
SndID_SegaSound = $7A+$80 ; FA<br />
MusID_SpeedUp = $7B+$80 ; FB<br />
MusID_SlowDown = $7C+$80 ; FC<br />
MusID_Stop = $7D+$80 ; FD<br />
MusID_Pause = $7E+$80 ; FE<br />
MusID_Unpause = $7F+$80 ; FF<br />
</asm><br />
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:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_FadeOut = $E1<br />
MusID_Stop = $E0<br />
SndID_SegaSound = $FF<br />
<br />
;these are here for compatibility<br />
MusID_StopSFX = MusID_Stop<br />
<br />
;Tempo IDs<br />
Tempo_SpeedUp = 8<br />
Tempo_SlowDown = 0<br />
</asm><br />
<br />
==Fixing the Sneakers==<br />
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.<br />
First, we will go to '''super_shoes_Tails''' and, beyond the +, we'll find this:<br />
<asm><br />
move.w #MusID_SpeedUp,d0<br />
jmp (PlayMusic).l ; Speed up tempo<br />
</asm><br />
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:<br />
<asm><br />
move.w #Tempo_SpeedUp,d0<br />
jmp (SetTempo).l ; Speed up tempo<br />
</asm><br />
The music now speeds up, but we need it to slow down when the sneakers wear off, so find:<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #MusID_SlowDown,d0 ; Slow down tempo<br />
jmp (PlayMusic).l<br />
</asm><br />
There are 2 lines that need editing here, just as before.<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #Tempo_SlowDown,d0 ; Slow down tempo<br />
jmp (SetTempo).l<br />
</asm><br />
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.<br />
==Optional: Apply New Sounds to Existing Objects==<br />
''(coming soon)''<br />
<br />
==Optional: Fix the 2P VS Screen==<br />
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:<br />
<asm><br />
move.b #MusID_Options,d0<br />
bsr.w JmpTo_PlayMusic<br />
move.w #$707,(Demo_Time_left).w<br />
clr.w (Two_player_mode).w<br />
clr.l (Camera_X_pos).w<br />
clr.l (Camera_Y_pos).w<br />
move.b #$16,(Vint_routine).w<br />
bsr.w WaitForVint<br />
move.w (VDP_Reg1_val).w,d0<br />
ori.b #$40,d0<br />
move.w d0,(VDP_control_port).l<br />
bsr.w Pal_FadeTo<br />
<br />
;loc_8DA8:<br />
LevelSelect2P_Main:<br />
</asm><br />
and change the music id to '''MusID_2PVS'''.<br><br />
the result should be:<br />
<asm><br />
move.b #MusID_2PVS,d0<br />
bsr.w JmpTo_PlayMusic<br />
move.w #$707,(Demo_Time_left).w<br />
clr.w (Two_player_mode).w<br />
clr.l (Camera_X_pos).w<br />
clr.l (Camera_Y_pos).w<br />
move.b #$16,(Vint_routine).w<br />
bsr.w WaitForVint<br />
move.w (VDP_Reg1_val).w,d0<br />
ori.b #$40,d0<br />
move.w d0,(VDP_control_port).l<br />
bsr.w Pal_FadeTo<br />
<br />
;loc_8DA8:<br />
LevelSelect2P_Main:<br />
</asm><br />
<br />
==Optional: Fix the Sound Test==<br />
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'''.<br />
Here is what we have:<br />
<asm><br />
OptionScreen_Choices:<br />
dc.l (3-1)<<24|(Player_option&$FFFFFF)<br />
dc.l (2-1)<<24|(Two_player_items&$FFFFFF)<br />
dc.l ($80-1)<<24|(Sound_test_sound&$FFFFFF)<br />
</asm><br />
change that last line to:<br />
<asm><br />
OptionScreen_Choices:<br />
dc.l ($FF)<<24|(Sound_test_sound&$FFFFFF)<br />
</asm><br />
now we have a full range, but it is not fixed yet, so we will locate:<br />
<asm><br />
move.w d2,(a1)<br />
cmpi.b #2,(Options_menu_box).w<br />
bne.s + ; rts<br />
andi.w #button_B_mask|button_C_mask,d0<br />
beq.s + ; rts<br />
move.w (Sound_test_sound).w,d0<br />
addi.w #$80,d0<br />
bsr.w JmpTo_PlayMusic<br />
lea (level_select_cheat).l,a0<br />
lea (continues_cheat).l,a2<br />
lea (Level_select_flag).w,a1<br />
moveq #0,d2 ; flag to tell the routine to enable the continues cheat<br />
bsr.w CheckCheats<br />
<br />
+<br />
</asm><br />
see that '''addi.w #$80,d0''' line? It needs to go. the result will be:<br />
<asm><br />
move.w d2,(a1)<br />
cmpi.b #2,(Options_menu_box).w<br />
bne.s + ; rts<br />
andi.w #button_B_mask|button_C_mask,d0<br />
beq.s + ; rts<br />
move.w (Sound_test_sound).w,d0<br />
bsr.w JmpTo_PlayMusic<br />
lea (level_select_cheat).l,a0<br />
lea (continues_cheat).l,a2<br />
lea (Level_select_flag).w,a1<br />
moveq #0,d2 ; flag to tell the routine to enable the continues cheat<br />
bsr.w CheckCheats<br />
<br />
+<br />
</asm><br />
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:<br />
<asm><br />
; loc_9522:<br />
LevSelControls_CheckLR:<br />
cmpi.w #$15,(Level_select_zone).w ; are we in the sound test?<br />
bne.s LevSelControls_SwitchSide ; no<br />
move.w (Sound_test_sound).w,d0<br />
move.b (Ctrl_1_Press).w,d1<br />
btst #button_left,d1<br />
beq.s +<br />
subq.b #1,d0<br />
bcc.s +<br />
moveq #$7F,d0<br />
<br />
+<br />
btst #button_right,d1<br />
beq.s +<br />
addq.b #1,d0<br />
cmpi.w #$80,d0<br />
blo.s +<br />
moveq #0,d0<br />
<br />
+<br />
btst #button_A,d1<br />
beq.s +<br />
addi.b #$10,d0<br />
andi.b #$7F,d0<br />
<br />
+<br />
move.w d0,(Sound_test_sound).w<br />
andi.w #button_B_mask|button_C_mask,d1<br />
beq.s + ; rts<br />
move.w (Sound_test_sound).w,d0<br />
addi.w #$80,d0<br />
bsr.w JmpTo_PlayMusic<br />
lea (debug_cheat).l,a0<br />
lea (super_sonic_cheat).l,a2<br />
lea (Night_mode_flag).w,a1<br />
moveq #1,d2 ; flag to tell the routine to enable the Super Sonic cheat<br />
bsr.w CheckCheats<br />
<br />
+<br />
rts<br />
</asm><br />
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:<br />
<asm><br />
; loc_9522:<br />
LevSelControls_CheckLR:<br />
cmpi.w #$15,(Level_select_zone).w ; are we in the sound test?<br />
bne.s LevSelControls_SwitchSide ; no<br />
move.w (Sound_test_sound).w,d0<br />
move.b (Ctrl_1_Press).w,d1<br />
btst #button_left,d1<br />
beq.s +<br />
subq.b #1,d0<br />
;bcc.s + ;<-- remove this line<br />
;moveq #$7F,d0 ;<-- remove this line<br />
<br />
+<br />
btst #button_right,d1<br />
beq.s +<br />
addq.b #1,d0<br />
;cmpi.w #$80,d0 ;<-- remove this line<br />
;blo.s + ;<-- remove this line<br />
;moveq #0,d0 ;<-- remove this line<br />
<br />
+<br />
btst #button_A,d1<br />
beq.s +<br />
addi.b #$10,d0<br />
;andi.b #$7F,d0 ;<-- remove this line<br />
<br />
+<br />
move.w d0,(Sound_test_sound).w<br />
andi.w #button_B_mask|button_C_mask,d1<br />
beq.s + ; rts<br />
move.w (Sound_test_sound).w,d0<br />
;addi.w #$80,d0 ;<-- remove this line<br />
bsr.w JmpTo_PlayMusic<br />
lea (debug_cheat).l,a0<br />
lea (super_sonic_cheat).l,a2<br />
lea (Night_mode_flag).w,a1<br />
moveq #1,d2 ; flag to tell the routine to enable the Super Sonic cheat<br />
bsr.w CheckCheats<br />
<br />
+<br />
rts<br />
</asm><br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208794
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-26T21:43:10Z
<p>Kram1024: /* Optional: Fix the Sound Test */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
dacBank0End := *<br />
<br />
align $8000<br />
dacBank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
dacBank1End := *<br />
align $8000<br />
<br />
align $8000<br />
dacBank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
dacBank2End := *<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
bank0End := *<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
bank1End := *<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
bank2End := *<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
bank3End := *<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/Sfx_34.Snd"<br />
Sfx_34_Snd:<br />
binclude "sound/Sfx_35.Snd"<br />
Sfx_35_Snd:<br />
binclude "sound/Sfx_36.Snd"<br />
Sfx_36_Snd:<br />
binclude "sound/Sfx_37.Snd"<br />
Sfx_37_Snd:<br />
binclude "sound/Sfx_38.Snd"<br />
Sfx_38_Snd:<br />
binclude "sound/Sfx_39.Snd"<br />
Sfx_39_Snd:<br />
binclude "sound/Sfx_3A.Snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/Sfx_3B.Snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/Sfx_3C.Snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/Sfx_3D.Snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/Sfx_3E.Snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/Sfx_3F.Snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/Sfx_40.Snd"<br />
Sfx_40_Snd:<br />
binclude "sound/Sfx_41.Snd"<br />
Sfx_41_Snd:<br />
binclude "sound/Sfx_42.Snd"<br />
Sfx_42_Snd:<br />
binclude "sound/Sfx_43.Snd"<br />
Sfx_43_Snd:<br />
binclude "sound/Sfx_44.Snd"<br />
Sfx_44_Snd:<br />
binclude "sound/Sfx_45.Snd"<br />
Sfx_45_Snd:<br />
binclude "sound/Sfx_46.Snd"<br />
Sfx_46_Snd:<br />
binclude "sound/Sfx_47.Snd"<br />
Sfx_47_Snd:<br />
binclude "sound/Sfx_48.Snd"<br />
Sfx_48_Snd:<br />
binclude "sound/Sfx_49.Snd"<br />
Sfx_49_Snd:<br />
binclude "sound/Sfx_4A.Snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/Sfx_4B.Snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/Sfx_4C.Snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/Sfx_4D.Snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/Sfx_4E.Snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/Sfx_4F.Snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/Sfx_50.Snd"<br />
Sfx_50_Snd:<br />
binclude "sound/Sfx_51.Snd"<br />
Sfx_51_Snd:<br />
binclude "sound/Sfx_52.Snd"<br />
Sfx_52_Snd:<br />
binclude "sound/Sfx_53.Snd"<br />
Sfx_53_Snd:<br />
binclude "sound/Sfx_54.Snd"<br />
Sfx_54_Snd:<br />
binclude "sound/Sfx_55.Snd"<br />
Sfx_55_Snd:<br />
binclude "sound/Sfx_56.Snd"<br />
Sfx_56_Snd:<br />
binclude "sound/Sfx_57.Snd"<br />
Sfx_57_Snd:<br />
binclude "sound/Sfx_58.Snd"<br />
Sfx_58_Snd:<br />
binclude "sound/Sfx_59.Snd"<br />
Sfx_59_Snd:<br />
binclude "sound/Sfx_5A.Snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/Sfx_5B.Snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/Sfx_5C.Snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/Sfx_5D.Snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/Sfx_5E.Snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/Sfx_5F.Snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/Sfx_60.Snd"<br />
Sfx_60_Snd:<br />
binclude "sound/Sfx_61.Snd"<br />
Sfx_61_Snd:<br />
binclude "sound/Sfx_62.Snd"<br />
Sfx_62_Snd:<br />
binclude "sound/Sfx_63.Snd"<br />
Sfx_63_Snd:<br />
binclude "sound/Sfx_64.Snd"<br />
Sfx_64_Snd:<br />
binclude "sound/Sfx_65.Snd"<br />
Sfx_65_Snd:<br />
binclude "sound/Sfx_66.Snd"<br />
Sfx_66_Snd:<br />
binclude "sound/Sfx_67.Snd"<br />
Sfx_67_Snd:<br />
binclude "sound/Sfx_68.Snd"<br />
Sfx_68_Snd:<br />
binclude "sound/Sfx_69.Snd"<br />
Sfx_69_Snd:<br />
binclude "sound/Sfx_6A.Snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/Sfx_6B.Snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/Sfx_6C.Snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/Sfx_6D.Snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/Sfx_6E.Snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/Sfx_6F.Snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/Sfx_70.Snd"<br />
Sfx_70_Snd:<br />
binclude "sound/Sfx_71.Snd"<br />
Sfx_71_Snd:<br />
binclude "sound/Sfx_72.Snd"<br />
Sfx_72_Snd:<br />
binclude "sound/Sfx_73.Snd"<br />
Sfx_73_Snd:<br />
binclude "sound/Sfx_74.Snd"<br />
Sfx_74_Snd:<br />
binclude "sound/Sfx_75.Snd"<br />
Sfx_75_Snd:<br />
binclude "sound/Sfx_76.Snd"<br />
Sfx_76_Snd:<br />
binclude "sound/Sfx_77.Snd"<br />
Sfx_77_Snd:<br />
binclude "sound/Sfx_78.Snd"<br />
Sfx_78_Snd:<br />
binclude "sound/Sfx_79.Snd"<br />
Sfx_79_Snd:<br />
binclude "sound/Sfx_7A.Snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/Sfx_7B.Snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/Sfx_7C.Snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/Sfx_7D.Snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/Sfx_7E.Snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/Sfx_7F.Snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/Sfx_80.Snd"<br />
Sfx_80_Snd:<br />
binclude "sound/Sfx_81.Snd"<br />
Sfx_81_Snd:<br />
binclude "sound/Sfx_82.Snd"<br />
Sfx_82_Snd:<br />
binclude "sound/Sfx_83.Snd"<br />
Sfx_83_Snd:<br />
binclude "sound/Sfx_84.Snd"<br />
Sfx_84_Snd:<br />
binclude "sound/Sfx_85.Snd"<br />
Sfx_85_Snd:<br />
binclude "sound/Sfx_86.Snd"<br />
Sfx_86_Snd:<br />
binclude "sound/Sfx_87.Snd"<br />
Sfx_87_Snd:<br />
binclude "sound/Sfx_88.Snd"<br />
Sfx_88_Snd:<br />
binclude "sound/Sfx_89.Snd"<br />
Sfx_89_Snd:<br />
binclude "sound/Sfx_8A.Snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/Sfx_8B.Snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/Sfx_8C.Snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/Sfx_8D.Snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/Sfx_8E.Snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/Sfx_8F.Snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/Sfx_90.Snd"<br />
Sfx_90_Snd:<br />
binclude "sound/Sfx_91.Snd"<br />
Sfx_91_Snd:<br />
binclude "sound/Sfx_92.Snd"<br />
Sfx_92_Snd:<br />
binclude "sound/Sfx_93.Snd"<br />
Sfx_93_Snd:<br />
binclude "sound/Sfx_94.Snd"<br />
Sfx_94_Snd:<br />
binclude "sound/Sfx_95.Snd"<br />
Sfx_95_Snd:<br />
binclude "sound/Sfx_96.Snd"<br />
Sfx_96_Snd:<br />
binclude "sound/Sfx_97.Snd"<br />
Sfx_97_Snd:<br />
binclude "sound/Sfx_98.Snd"<br />
Sfx_98_Snd:<br />
binclude "sound/Sfx_99.Snd"<br />
Sfx_99_Snd:<br />
binclude "sound/Sfx_9A.Snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/Sfx_9B.Snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/Sfx_9C.Snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/Sfx_9D.Snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/Sfx_9E.Snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/Sfx_9F.Snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/Sfx_A0.Snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/Sfx_A1.Snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/Sfx_A2.Snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/Sfx_A3.Snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/Sfx_A4.Snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/Sfx_A5.Snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/Sfx_A6.Snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/Sfx_A7.Snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/Sfx_A8.Snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/Sfx_A9.Snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/Sfx_AA.Snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/Sfx_AB.Snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/Sfx_AC.Snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/Sfx_AD.Snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/Sfx_AE.Snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/Sfx_AF.Snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/Sfx_B0.Snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/Sfx_B1.Snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/Sfx_B2.Snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/Sfx_B3.Snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/Sfx_B4.Snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/Sfx_B5.Snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/Sfx_B6.Snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/Sfx_B7.Snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/Sfx_B8.Snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/Sfx_B9.Snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/Sfx_BA.Snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/Sfx_BB.Snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/Sfx_BC.Snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/Sfx_BD.Snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/Sfx_BE.Snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/Sfx_BF.Snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/Sfx_C0.Snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/Sfx_C1.Snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/Sfx_C2.Snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/Sfx_C3.Snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/Sfx_C4.Snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/Sfx_C5.Snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/Sfx_C6.Snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/Sfx_C7.Snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/Sfx_C8.Snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/Sfx_C9.Snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/Sfx_CA.Snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/Sfx_CB.Snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/Sfx_CC.Snd"<br />
Sfx_CC_Snd:<br />
binclude "sound/Sfx_CD.Snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/Sfx_CE.Snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/Sfx_CF.Snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/Sfx_D0.Snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/Sfx_D1.Snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/Sfx_D2.Snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/Sfx_D3.Snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/Sfx_D4.Snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/Sfx_D5.Snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/Sfx_D6.Snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/Sfx_D7.Snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/Sfx_D8.Snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/Sfx_D9.Snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/Sfx_DA.Snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/Sfx_DB.Snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/Sfx_DC.Snd"<br />
soundBankEnd := *<br />
<br />
if dacBank0End > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{dacBank0End-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-dacBank0End} bytes free at end."<br />
endif<br />
<br />
if dacBank1End > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{dacBank1End-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-dacBank1End} bytes free at end."<br />
endif<br />
<br />
if dacBank2End > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{bank2End-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-bank2End} bytes free at end."<br />
endif<br />
<br />
if bank0End > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{bank0End-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-bank0End} bytes free at end."<br />
endif<br />
<br />
if bank1End > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{bank1End-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-bank1End} bytes free at end."<br />
endif<br />
<br />
if bank2End > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{bank2End-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-bank2End} bytes free at end."<br />
endif<br />
<br />
if bank3End > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{bank3End-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-bank3End} bytes free at end."<br />
endif<br />
<br />
if soundBankEnd > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{soundBankEnd-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-soundBankEnd} bytes free at end."<br />
endif<br />
</asm><br />
<br />
'''Note:''' Linux systems and some mac installs have a case sensitive filesystem and that can cause build errors,<br><br />
to fix, simply rename all non-sound effects to lowercase names.<br />
<br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
+ stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
<br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
now find:<br />
<asm><br />
; loc_541A:<br />
SpecialStage_Unpause:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
move.b #8,(Vint_routine).w<br />
bra.w WaitForVint<br />
</asm><br />
replace the line right after the label with:<br />
<asm><br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
</asm><br />
<br />
==Driver Data Files==<br />
Unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
; Music IDs<br />
offset := zMasterPlaylist<br />
ptrsize := 1<br />
idstart := $81<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy zMusIDPtr in the $80 slot<br />
<br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 1<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
; Sound IDs<br />
offset := SoundIndex<br />
ptrsize := 2<br />
idstart := $A0<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy SndPtr in the $80 slot<br />
<br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SndID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
<br />
==Fixing the special sounds==<br />
Any time you update the sound driver, you need to change these sounds:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_StopSFX = $78+$80 ; F8<br />
MusID_FadeOut = $79+$80 ; F9<br />
SndID_SegaSound = $7A+$80 ; FA<br />
MusID_SpeedUp = $7B+$80 ; FB<br />
MusID_SlowDown = $7C+$80 ; FC<br />
MusID_Stop = $7D+$80 ; FD<br />
MusID_Pause = $7E+$80 ; FE<br />
MusID_Unpause = $7F+$80 ; FF<br />
</asm><br />
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:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_FadeOut = $E1<br />
MusID_Stop = $E0<br />
SndID_SegaSound = $FF<br />
<br />
;these are here for compatibility<br />
MusID_StopSFX = MusID_Stop<br />
<br />
;Tempo IDs<br />
Tempo_SpeedUp = 8<br />
Tempo_SlowDown = 0<br />
</asm><br />
<br />
==Fixing the Sneakers==<br />
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.<br />
First, we will go to '''super_shoes_Tails''' and, beyond the +, we'll find this:<br />
<asm><br />
move.w #MusID_SpeedUp,d0<br />
jmp (PlayMusic).l ; Speed up tempo<br />
</asm><br />
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:<br />
<asm><br />
move.w #Tempo_SpeedUp,d0<br />
jmp (SetTempo).l ; Speed up tempo<br />
</asm><br />
The music now speeds up, but we need it to slow down when the sneakers wear off, so find:<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #MusID_SlowDown,d0 ; Slow down tempo<br />
jmp (PlayMusic).l<br />
</asm><br />
There are 2 lines that need editing here, just as before.<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #Tempo_SlowDown,d0 ; Slow down tempo<br />
jmp (SetTempo).l<br />
</asm><br />
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.<br />
==Optional: Apply New Sounds to Existing Objects==<br />
''(coming soon)''<br />
<br />
==Optional: Fix the 2P VS Screen==<br />
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:<br />
<asm><br />
move.b #MusID_Options,d0<br />
bsr.w JmpTo_PlayMusic<br />
move.w #$707,(Demo_Time_left).w<br />
clr.w (Two_player_mode).w<br />
clr.l (Camera_X_pos).w<br />
clr.l (Camera_Y_pos).w<br />
move.b #$16,(Vint_routine).w<br />
bsr.w WaitForVint<br />
move.w (VDP_Reg1_val).w,d0<br />
ori.b #$40,d0<br />
move.w d0,(VDP_control_port).l<br />
bsr.w Pal_FadeTo<br />
<br />
;loc_8DA8:<br />
LevelSelect2P_Main:<br />
</asm><br />
and change the music id to '''MusID_2PVS'''.<br><br />
the result should be:<br />
<asm><br />
move.b #MusID_2PVS,d0<br />
bsr.w JmpTo_PlayMusic<br />
move.w #$707,(Demo_Time_left).w<br />
clr.w (Two_player_mode).w<br />
clr.l (Camera_X_pos).w<br />
clr.l (Camera_Y_pos).w<br />
move.b #$16,(Vint_routine).w<br />
bsr.w WaitForVint<br />
move.w (VDP_Reg1_val).w,d0<br />
ori.b #$40,d0<br />
move.w d0,(VDP_control_port).l<br />
bsr.w Pal_FadeTo<br />
<br />
;loc_8DA8:<br />
LevelSelect2P_Main:<br />
</asm><br />
<br />
==Optional: Fix the Sound Test==<br />
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'''.<br />
Here is what we have:<br />
<asm><br />
OptionScreen_Choices:<br />
dc.l (3-1)<<24|(Player_option&$FFFFFF)<br />
dc.l (2-1)<<24|(Two_player_items&$FFFFFF)<br />
dc.l ($80-1)<<24|(Sound_test_sound&$FFFFFF)<br />
</asm><br />
change that last line to:<br />
<asm><br />
OptionScreen_Choices:<br />
dc.l ($FF)<<24|(Sound_test_sound&$FFFFFF)<br />
</asm><br />
now we have a full range, but it is not fixed yet, so we will locate:<br />
<asm><br />
move.w d2,(a1)<br />
cmpi.b #2,(Options_menu_box).w<br />
bne.s + ; rts<br />
andi.w #button_B_mask|button_C_mask,d0<br />
beq.s + ; rts<br />
move.w (Sound_test_sound).w,d0<br />
addi.w #$80,d0<br />
bsr.w JmpTo_PlayMusic<br />
lea (level_select_cheat).l,a0<br />
lea (continues_cheat).l,a2<br />
lea (Level_select_flag).w,a1<br />
moveq #0,d2 ; flag to tell the routine to enable the continues cheat<br />
bsr.w CheckCheats<br />
<br />
+<br />
</asm><br />
see that '''addi.w #$80,d0''' line? It needs to go. the result will be:<br />
<asm><br />
move.w d2,(a1)<br />
cmpi.b #2,(Options_menu_box).w<br />
bne.s + ; rts<br />
andi.w #button_B_mask|button_C_mask,d0<br />
beq.s + ; rts<br />
move.w (Sound_test_sound).w,d0<br />
bsr.w JmpTo_PlayMusic<br />
lea (level_select_cheat).l,a0<br />
lea (continues_cheat).l,a2<br />
lea (Level_select_flag).w,a1<br />
moveq #0,d2 ; flag to tell the routine to enable the continues cheat<br />
bsr.w CheckCheats<br />
<br />
+<br />
</asm><br />
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:<br />
<asm><br />
; loc_9522:<br />
LevSelControls_CheckLR:<br />
cmpi.w #$15,(Level_select_zone).w ; are we in the sound test?<br />
bne.s LevSelControls_SwitchSide ; no<br />
move.w (Sound_test_sound).w,d0<br />
move.b (Ctrl_1_Press).w,d1<br />
btst #button_left,d1<br />
beq.s +<br />
subq.b #1,d0<br />
bcc.s +<br />
moveq #$7F,d0<br />
<br />
+<br />
btst #button_right,d1<br />
beq.s +<br />
addq.b #1,d0<br />
cmpi.w #$80,d0<br />
blo.s +<br />
moveq #0,d0<br />
<br />
+<br />
btst #button_A,d1<br />
beq.s +<br />
addi.b #$10,d0<br />
andi.b #$7F,d0<br />
<br />
+<br />
move.w d0,(Sound_test_sound).w<br />
andi.w #button_B_mask|button_C_mask,d1<br />
beq.s + ; rts<br />
move.w (Sound_test_sound).w,d0<br />
addi.w #$80,d0<br />
bsr.w JmpTo_PlayMusic<br />
lea (debug_cheat).l,a0<br />
lea (super_sonic_cheat).l,a2<br />
lea (Night_mode_flag).w,a1<br />
moveq #1,d2 ; flag to tell the routine to enable the Super Sonic cheat<br />
bsr.w CheckCheats<br />
<br />
+<br />
rts<br />
</asm><br />
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. just in case you havent figured it out, I outlined the changes below:<br />
<asm><br />
; loc_9522:<br />
LevSelControls_CheckLR:<br />
cmpi.w #$15,(Level_select_zone).w ; are we in the sound test?<br />
bne.s LevSelControls_SwitchSide ; no<br />
move.w (Sound_test_sound).w,d0<br />
move.b (Ctrl_1_Press).w,d1<br />
btst #button_left,d1<br />
beq.s +<br />
subq.b #1,d0<br />
;bcc.s + ;remove this line<br />
;moveq #$7F,d0 ;remove this line<br />
<br />
+<br />
btst #button_right,d1<br />
beq.s +<br />
addq.b #1,d0<br />
;cmpi.w #$80,d0 ;remove this line<br />
;blo.s + ;remove this line<br />
;moveq #0,d0 ;remove this line<br />
<br />
+<br />
btst #button_A,d1<br />
beq.s +<br />
addi.b #$10,d0<br />
;andi.b #$7F,d0 ;remove this line<br />
<br />
+<br />
move.w d0,(Sound_test_sound).w<br />
andi.w #button_B_mask|button_C_mask,d1<br />
beq.s + ; rts<br />
move.w (Sound_test_sound).w,d0<br />
;addi.w #$80,d0<br />
bsr.w JmpTo_PlayMusic<br />
lea (debug_cheat).l,a0<br />
lea (super_sonic_cheat).l,a2<br />
lea (Night_mode_flag).w,a1<br />
moveq #1,d2 ; flag to tell the routine to enable the Super Sonic cheat<br />
bsr.w CheckCheats<br />
<br />
+<br />
rts<br />
</asm><br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208792
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-26T21:09:52Z
<p>Kram1024: /* Optional: Fix the Sound Test */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
dacBank0End := *<br />
<br />
align $8000<br />
dacBank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
dacBank1End := *<br />
align $8000<br />
<br />
align $8000<br />
dacBank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
dacBank2End := *<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
bank0End := *<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
bank1End := *<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
bank2End := *<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
bank3End := *<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/Sfx_34.Snd"<br />
Sfx_34_Snd:<br />
binclude "sound/Sfx_35.Snd"<br />
Sfx_35_Snd:<br />
binclude "sound/Sfx_36.Snd"<br />
Sfx_36_Snd:<br />
binclude "sound/Sfx_37.Snd"<br />
Sfx_37_Snd:<br />
binclude "sound/Sfx_38.Snd"<br />
Sfx_38_Snd:<br />
binclude "sound/Sfx_39.Snd"<br />
Sfx_39_Snd:<br />
binclude "sound/Sfx_3A.Snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/Sfx_3B.Snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/Sfx_3C.Snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/Sfx_3D.Snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/Sfx_3E.Snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/Sfx_3F.Snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/Sfx_40.Snd"<br />
Sfx_40_Snd:<br />
binclude "sound/Sfx_41.Snd"<br />
Sfx_41_Snd:<br />
binclude "sound/Sfx_42.Snd"<br />
Sfx_42_Snd:<br />
binclude "sound/Sfx_43.Snd"<br />
Sfx_43_Snd:<br />
binclude "sound/Sfx_44.Snd"<br />
Sfx_44_Snd:<br />
binclude "sound/Sfx_45.Snd"<br />
Sfx_45_Snd:<br />
binclude "sound/Sfx_46.Snd"<br />
Sfx_46_Snd:<br />
binclude "sound/Sfx_47.Snd"<br />
Sfx_47_Snd:<br />
binclude "sound/Sfx_48.Snd"<br />
Sfx_48_Snd:<br />
binclude "sound/Sfx_49.Snd"<br />
Sfx_49_Snd:<br />
binclude "sound/Sfx_4A.Snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/Sfx_4B.Snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/Sfx_4C.Snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/Sfx_4D.Snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/Sfx_4E.Snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/Sfx_4F.Snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/Sfx_50.Snd"<br />
Sfx_50_Snd:<br />
binclude "sound/Sfx_51.Snd"<br />
Sfx_51_Snd:<br />
binclude "sound/Sfx_52.Snd"<br />
Sfx_52_Snd:<br />
binclude "sound/Sfx_53.Snd"<br />
Sfx_53_Snd:<br />
binclude "sound/Sfx_54.Snd"<br />
Sfx_54_Snd:<br />
binclude "sound/Sfx_55.Snd"<br />
Sfx_55_Snd:<br />
binclude "sound/Sfx_56.Snd"<br />
Sfx_56_Snd:<br />
binclude "sound/Sfx_57.Snd"<br />
Sfx_57_Snd:<br />
binclude "sound/Sfx_58.Snd"<br />
Sfx_58_Snd:<br />
binclude "sound/Sfx_59.Snd"<br />
Sfx_59_Snd:<br />
binclude "sound/Sfx_5A.Snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/Sfx_5B.Snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/Sfx_5C.Snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/Sfx_5D.Snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/Sfx_5E.Snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/Sfx_5F.Snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/Sfx_60.Snd"<br />
Sfx_60_Snd:<br />
binclude "sound/Sfx_61.Snd"<br />
Sfx_61_Snd:<br />
binclude "sound/Sfx_62.Snd"<br />
Sfx_62_Snd:<br />
binclude "sound/Sfx_63.Snd"<br />
Sfx_63_Snd:<br />
binclude "sound/Sfx_64.Snd"<br />
Sfx_64_Snd:<br />
binclude "sound/Sfx_65.Snd"<br />
Sfx_65_Snd:<br />
binclude "sound/Sfx_66.Snd"<br />
Sfx_66_Snd:<br />
binclude "sound/Sfx_67.Snd"<br />
Sfx_67_Snd:<br />
binclude "sound/Sfx_68.Snd"<br />
Sfx_68_Snd:<br />
binclude "sound/Sfx_69.Snd"<br />
Sfx_69_Snd:<br />
binclude "sound/Sfx_6A.Snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/Sfx_6B.Snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/Sfx_6C.Snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/Sfx_6D.Snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/Sfx_6E.Snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/Sfx_6F.Snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/Sfx_70.Snd"<br />
Sfx_70_Snd:<br />
binclude "sound/Sfx_71.Snd"<br />
Sfx_71_Snd:<br />
binclude "sound/Sfx_72.Snd"<br />
Sfx_72_Snd:<br />
binclude "sound/Sfx_73.Snd"<br />
Sfx_73_Snd:<br />
binclude "sound/Sfx_74.Snd"<br />
Sfx_74_Snd:<br />
binclude "sound/Sfx_75.Snd"<br />
Sfx_75_Snd:<br />
binclude "sound/Sfx_76.Snd"<br />
Sfx_76_Snd:<br />
binclude "sound/Sfx_77.Snd"<br />
Sfx_77_Snd:<br />
binclude "sound/Sfx_78.Snd"<br />
Sfx_78_Snd:<br />
binclude "sound/Sfx_79.Snd"<br />
Sfx_79_Snd:<br />
binclude "sound/Sfx_7A.Snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/Sfx_7B.Snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/Sfx_7C.Snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/Sfx_7D.Snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/Sfx_7E.Snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/Sfx_7F.Snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/Sfx_80.Snd"<br />
Sfx_80_Snd:<br />
binclude "sound/Sfx_81.Snd"<br />
Sfx_81_Snd:<br />
binclude "sound/Sfx_82.Snd"<br />
Sfx_82_Snd:<br />
binclude "sound/Sfx_83.Snd"<br />
Sfx_83_Snd:<br />
binclude "sound/Sfx_84.Snd"<br />
Sfx_84_Snd:<br />
binclude "sound/Sfx_85.Snd"<br />
Sfx_85_Snd:<br />
binclude "sound/Sfx_86.Snd"<br />
Sfx_86_Snd:<br />
binclude "sound/Sfx_87.Snd"<br />
Sfx_87_Snd:<br />
binclude "sound/Sfx_88.Snd"<br />
Sfx_88_Snd:<br />
binclude "sound/Sfx_89.Snd"<br />
Sfx_89_Snd:<br />
binclude "sound/Sfx_8A.Snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/Sfx_8B.Snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/Sfx_8C.Snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/Sfx_8D.Snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/Sfx_8E.Snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/Sfx_8F.Snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/Sfx_90.Snd"<br />
Sfx_90_Snd:<br />
binclude "sound/Sfx_91.Snd"<br />
Sfx_91_Snd:<br />
binclude "sound/Sfx_92.Snd"<br />
Sfx_92_Snd:<br />
binclude "sound/Sfx_93.Snd"<br />
Sfx_93_Snd:<br />
binclude "sound/Sfx_94.Snd"<br />
Sfx_94_Snd:<br />
binclude "sound/Sfx_95.Snd"<br />
Sfx_95_Snd:<br />
binclude "sound/Sfx_96.Snd"<br />
Sfx_96_Snd:<br />
binclude "sound/Sfx_97.Snd"<br />
Sfx_97_Snd:<br />
binclude "sound/Sfx_98.Snd"<br />
Sfx_98_Snd:<br />
binclude "sound/Sfx_99.Snd"<br />
Sfx_99_Snd:<br />
binclude "sound/Sfx_9A.Snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/Sfx_9B.Snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/Sfx_9C.Snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/Sfx_9D.Snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/Sfx_9E.Snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/Sfx_9F.Snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/Sfx_A0.Snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/Sfx_A1.Snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/Sfx_A2.Snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/Sfx_A3.Snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/Sfx_A4.Snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/Sfx_A5.Snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/Sfx_A6.Snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/Sfx_A7.Snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/Sfx_A8.Snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/Sfx_A9.Snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/Sfx_AA.Snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/Sfx_AB.Snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/Sfx_AC.Snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/Sfx_AD.Snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/Sfx_AE.Snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/Sfx_AF.Snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/Sfx_B0.Snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/Sfx_B1.Snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/Sfx_B2.Snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/Sfx_B3.Snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/Sfx_B4.Snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/Sfx_B5.Snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/Sfx_B6.Snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/Sfx_B7.Snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/Sfx_B8.Snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/Sfx_B9.Snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/Sfx_BA.Snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/Sfx_BB.Snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/Sfx_BC.Snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/Sfx_BD.Snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/Sfx_BE.Snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/Sfx_BF.Snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/Sfx_C0.Snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/Sfx_C1.Snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/Sfx_C2.Snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/Sfx_C3.Snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/Sfx_C4.Snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/Sfx_C5.Snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/Sfx_C6.Snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/Sfx_C7.Snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/Sfx_C8.Snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/Sfx_C9.Snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/Sfx_CA.Snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/Sfx_CB.Snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/Sfx_CC.Snd"<br />
Sfx_CC_Snd:<br />
binclude "sound/Sfx_CD.Snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/Sfx_CE.Snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/Sfx_CF.Snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/Sfx_D0.Snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/Sfx_D1.Snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/Sfx_D2.Snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/Sfx_D3.Snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/Sfx_D4.Snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/Sfx_D5.Snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/Sfx_D6.Snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/Sfx_D7.Snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/Sfx_D8.Snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/Sfx_D9.Snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/Sfx_DA.Snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/Sfx_DB.Snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/Sfx_DC.Snd"<br />
soundBankEnd := *<br />
<br />
if dacBank0End > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{dacBank0End-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-dacBank0End} bytes free at end."<br />
endif<br />
<br />
if dacBank1End > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{dacBank1End-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-dacBank1End} bytes free at end."<br />
endif<br />
<br />
if dacBank2End > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{bank2End-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-bank2End} bytes free at end."<br />
endif<br />
<br />
if bank0End > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{bank0End-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-bank0End} bytes free at end."<br />
endif<br />
<br />
if bank1End > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{bank1End-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-bank1End} bytes free at end."<br />
endif<br />
<br />
if bank2End > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{bank2End-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-bank2End} bytes free at end."<br />
endif<br />
<br />
if bank3End > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{bank3End-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-bank3End} bytes free at end."<br />
endif<br />
<br />
if soundBankEnd > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{soundBankEnd-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-soundBankEnd} bytes free at end."<br />
endif<br />
</asm><br />
<br />
'''Note:''' Linux systems and some mac installs have a case sensitive filesystem and that can cause build errors,<br><br />
to fix, simply rename all non-sound effects to lowercase names.<br />
<br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
+ stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
<br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
now find:<br />
<asm><br />
; loc_541A:<br />
SpecialStage_Unpause:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
move.b #8,(Vint_routine).w<br />
bra.w WaitForVint<br />
</asm><br />
replace the line right after the label with:<br />
<asm><br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
</asm><br />
<br />
==Driver Data Files==<br />
Unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
; Music IDs<br />
offset := zMasterPlaylist<br />
ptrsize := 1<br />
idstart := $81<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy zMusIDPtr in the $80 slot<br />
<br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 1<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
; Sound IDs<br />
offset := SoundIndex<br />
ptrsize := 2<br />
idstart := $A0<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy SndPtr in the $80 slot<br />
<br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SndID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
<br />
==Fixing the special sounds==<br />
Any time you update the sound driver, you need to change these sounds:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_StopSFX = $78+$80 ; F8<br />
MusID_FadeOut = $79+$80 ; F9<br />
SndID_SegaSound = $7A+$80 ; FA<br />
MusID_SpeedUp = $7B+$80 ; FB<br />
MusID_SlowDown = $7C+$80 ; FC<br />
MusID_Stop = $7D+$80 ; FD<br />
MusID_Pause = $7E+$80 ; FE<br />
MusID_Unpause = $7F+$80 ; FF<br />
</asm><br />
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:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_FadeOut = $E1<br />
MusID_Stop = $E0<br />
SndID_SegaSound = $FF<br />
<br />
;these are here for compatibility<br />
MusID_StopSFX = MusID_Stop<br />
<br />
;Tempo IDs<br />
Tempo_SpeedUp = 8<br />
Tempo_SlowDown = 0<br />
</asm><br />
<br />
==Fixing the Sneakers==<br />
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.<br />
First, we will go to '''super_shoes_Tails''' and, beyond the +, we'll find this:<br />
<asm><br />
move.w #MusID_SpeedUp,d0<br />
jmp (PlayMusic).l ; Speed up tempo<br />
</asm><br />
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:<br />
<asm><br />
move.w #Tempo_SpeedUp,d0<br />
jmp (SetTempo).l ; Speed up tempo<br />
</asm><br />
The music now speeds up, but we need it to slow down when the sneakers wear off, so find:<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #MusID_SlowDown,d0 ; Slow down tempo<br />
jmp (PlayMusic).l<br />
</asm><br />
There are 2 lines that need editing here, just as before.<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #Tempo_SlowDown,d0 ; Slow down tempo<br />
jmp (SetTempo).l<br />
</asm><br />
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.<br />
==Optional: Apply New Sounds to Existing Objects==<br />
''(coming soon)''<br />
<br />
==Optional: Fix the 2P VS Screen==<br />
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:<br />
<asm><br />
move.b #MusID_Options,d0<br />
bsr.w JmpTo_PlayMusic<br />
move.w #$707,(Demo_Time_left).w<br />
clr.w (Two_player_mode).w<br />
clr.l (Camera_X_pos).w<br />
clr.l (Camera_Y_pos).w<br />
move.b #$16,(Vint_routine).w<br />
bsr.w WaitForVint<br />
move.w (VDP_Reg1_val).w,d0<br />
ori.b #$40,d0<br />
move.w d0,(VDP_control_port).l<br />
bsr.w Pal_FadeTo<br />
<br />
;loc_8DA8:<br />
LevelSelect2P_Main:<br />
</asm><br />
and change the music id to '''MusID_2PVS'''.<br><br />
the result should be:<br />
<asm><br />
move.b #MusID_2PVS,d0<br />
bsr.w JmpTo_PlayMusic<br />
move.w #$707,(Demo_Time_left).w<br />
clr.w (Two_player_mode).w<br />
clr.l (Camera_X_pos).w<br />
clr.l (Camera_Y_pos).w<br />
move.b #$16,(Vint_routine).w<br />
bsr.w WaitForVint<br />
move.w (VDP_Reg1_val).w,d0<br />
ori.b #$40,d0<br />
move.w d0,(VDP_control_port).l<br />
bsr.w Pal_FadeTo<br />
<br />
;loc_8DA8:<br />
LevelSelect2P_Main:<br />
</asm><br />
<br />
==Optional: Fix the Sound Test==<br />
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'''.<br />
Here is what we have:<br />
<asm><br />
OptionScreen_Choices:<br />
dc.l (3-1)<<24|(Player_option&$FFFFFF)<br />
dc.l (2-1)<<24|(Two_player_items&$FFFFFF)<br />
dc.l ($80-1)<<24|(Sound_test_sound&$FFFFFF)<br />
</asm><br />
change that last line to:<br />
<asm><br />
OptionScreen_Choices:<br />
dc.l ($FF)<<24|(Sound_test_sound&$FFFFFF)<br />
</asm><br />
now we have a full range, but it is not fixed yet, so we will locate:<br />
<asm><br />
move.w d2,(a1)<br />
cmpi.b #2,(Options_menu_box).w<br />
bne.s + ; rts<br />
andi.w #button_B_mask|button_C_mask,d0<br />
beq.s + ; rts<br />
move.w (Sound_test_sound).w,d0<br />
addi.w #$80,d0<br />
bsr.w JmpTo_PlayMusic<br />
lea (level_select_cheat).l,a0<br />
lea (continues_cheat).l,a2<br />
lea (Level_select_flag).w,a1<br />
moveq #0,d2 ; flag to tell the routine to enable the continues cheat<br />
bsr.w CheckCheats<br />
<br />
+<br />
</asm><br />
see that '''addi.w #$80,d0''' line? It needs to go. the result will be:<br />
<asm><br />
move.w d2,(a1)<br />
cmpi.b #2,(Options_menu_box).w<br />
bne.s + ; rts<br />
andi.w #button_B_mask|button_C_mask,d0<br />
beq.s + ; rts<br />
move.w (Sound_test_sound).w,d0<br />
bsr.w JmpTo_PlayMusic<br />
lea (level_select_cheat).l,a0<br />
lea (continues_cheat).l,a2<br />
lea (Level_select_flag).w,a1<br />
moveq #0,d2 ; flag to tell the routine to enable the continues cheat<br />
bsr.w CheckCheats<br />
<br />
+<br />
</asm><br />
okay, that fixes the options screen, but not the level select. We will do that next.<br />
<br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208791
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-26T21:01:43Z
<p>Kram1024: /* Optional: Fix the Sound Test */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
dacBank0End := *<br />
<br />
align $8000<br />
dacBank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
dacBank1End := *<br />
align $8000<br />
<br />
align $8000<br />
dacBank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
dacBank2End := *<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
bank0End := *<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
bank1End := *<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
bank2End := *<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
bank3End := *<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/Sfx_34.Snd"<br />
Sfx_34_Snd:<br />
binclude "sound/Sfx_35.Snd"<br />
Sfx_35_Snd:<br />
binclude "sound/Sfx_36.Snd"<br />
Sfx_36_Snd:<br />
binclude "sound/Sfx_37.Snd"<br />
Sfx_37_Snd:<br />
binclude "sound/Sfx_38.Snd"<br />
Sfx_38_Snd:<br />
binclude "sound/Sfx_39.Snd"<br />
Sfx_39_Snd:<br />
binclude "sound/Sfx_3A.Snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/Sfx_3B.Snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/Sfx_3C.Snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/Sfx_3D.Snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/Sfx_3E.Snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/Sfx_3F.Snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/Sfx_40.Snd"<br />
Sfx_40_Snd:<br />
binclude "sound/Sfx_41.Snd"<br />
Sfx_41_Snd:<br />
binclude "sound/Sfx_42.Snd"<br />
Sfx_42_Snd:<br />
binclude "sound/Sfx_43.Snd"<br />
Sfx_43_Snd:<br />
binclude "sound/Sfx_44.Snd"<br />
Sfx_44_Snd:<br />
binclude "sound/Sfx_45.Snd"<br />
Sfx_45_Snd:<br />
binclude "sound/Sfx_46.Snd"<br />
Sfx_46_Snd:<br />
binclude "sound/Sfx_47.Snd"<br />
Sfx_47_Snd:<br />
binclude "sound/Sfx_48.Snd"<br />
Sfx_48_Snd:<br />
binclude "sound/Sfx_49.Snd"<br />
Sfx_49_Snd:<br />
binclude "sound/Sfx_4A.Snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/Sfx_4B.Snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/Sfx_4C.Snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/Sfx_4D.Snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/Sfx_4E.Snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/Sfx_4F.Snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/Sfx_50.Snd"<br />
Sfx_50_Snd:<br />
binclude "sound/Sfx_51.Snd"<br />
Sfx_51_Snd:<br />
binclude "sound/Sfx_52.Snd"<br />
Sfx_52_Snd:<br />
binclude "sound/Sfx_53.Snd"<br />
Sfx_53_Snd:<br />
binclude "sound/Sfx_54.Snd"<br />
Sfx_54_Snd:<br />
binclude "sound/Sfx_55.Snd"<br />
Sfx_55_Snd:<br />
binclude "sound/Sfx_56.Snd"<br />
Sfx_56_Snd:<br />
binclude "sound/Sfx_57.Snd"<br />
Sfx_57_Snd:<br />
binclude "sound/Sfx_58.Snd"<br />
Sfx_58_Snd:<br />
binclude "sound/Sfx_59.Snd"<br />
Sfx_59_Snd:<br />
binclude "sound/Sfx_5A.Snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/Sfx_5B.Snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/Sfx_5C.Snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/Sfx_5D.Snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/Sfx_5E.Snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/Sfx_5F.Snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/Sfx_60.Snd"<br />
Sfx_60_Snd:<br />
binclude "sound/Sfx_61.Snd"<br />
Sfx_61_Snd:<br />
binclude "sound/Sfx_62.Snd"<br />
Sfx_62_Snd:<br />
binclude "sound/Sfx_63.Snd"<br />
Sfx_63_Snd:<br />
binclude "sound/Sfx_64.Snd"<br />
Sfx_64_Snd:<br />
binclude "sound/Sfx_65.Snd"<br />
Sfx_65_Snd:<br />
binclude "sound/Sfx_66.Snd"<br />
Sfx_66_Snd:<br />
binclude "sound/Sfx_67.Snd"<br />
Sfx_67_Snd:<br />
binclude "sound/Sfx_68.Snd"<br />
Sfx_68_Snd:<br />
binclude "sound/Sfx_69.Snd"<br />
Sfx_69_Snd:<br />
binclude "sound/Sfx_6A.Snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/Sfx_6B.Snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/Sfx_6C.Snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/Sfx_6D.Snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/Sfx_6E.Snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/Sfx_6F.Snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/Sfx_70.Snd"<br />
Sfx_70_Snd:<br />
binclude "sound/Sfx_71.Snd"<br />
Sfx_71_Snd:<br />
binclude "sound/Sfx_72.Snd"<br />
Sfx_72_Snd:<br />
binclude "sound/Sfx_73.Snd"<br />
Sfx_73_Snd:<br />
binclude "sound/Sfx_74.Snd"<br />
Sfx_74_Snd:<br />
binclude "sound/Sfx_75.Snd"<br />
Sfx_75_Snd:<br />
binclude "sound/Sfx_76.Snd"<br />
Sfx_76_Snd:<br />
binclude "sound/Sfx_77.Snd"<br />
Sfx_77_Snd:<br />
binclude "sound/Sfx_78.Snd"<br />
Sfx_78_Snd:<br />
binclude "sound/Sfx_79.Snd"<br />
Sfx_79_Snd:<br />
binclude "sound/Sfx_7A.Snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/Sfx_7B.Snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/Sfx_7C.Snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/Sfx_7D.Snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/Sfx_7E.Snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/Sfx_7F.Snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/Sfx_80.Snd"<br />
Sfx_80_Snd:<br />
binclude "sound/Sfx_81.Snd"<br />
Sfx_81_Snd:<br />
binclude "sound/Sfx_82.Snd"<br />
Sfx_82_Snd:<br />
binclude "sound/Sfx_83.Snd"<br />
Sfx_83_Snd:<br />
binclude "sound/Sfx_84.Snd"<br />
Sfx_84_Snd:<br />
binclude "sound/Sfx_85.Snd"<br />
Sfx_85_Snd:<br />
binclude "sound/Sfx_86.Snd"<br />
Sfx_86_Snd:<br />
binclude "sound/Sfx_87.Snd"<br />
Sfx_87_Snd:<br />
binclude "sound/Sfx_88.Snd"<br />
Sfx_88_Snd:<br />
binclude "sound/Sfx_89.Snd"<br />
Sfx_89_Snd:<br />
binclude "sound/Sfx_8A.Snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/Sfx_8B.Snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/Sfx_8C.Snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/Sfx_8D.Snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/Sfx_8E.Snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/Sfx_8F.Snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/Sfx_90.Snd"<br />
Sfx_90_Snd:<br />
binclude "sound/Sfx_91.Snd"<br />
Sfx_91_Snd:<br />
binclude "sound/Sfx_92.Snd"<br />
Sfx_92_Snd:<br />
binclude "sound/Sfx_93.Snd"<br />
Sfx_93_Snd:<br />
binclude "sound/Sfx_94.Snd"<br />
Sfx_94_Snd:<br />
binclude "sound/Sfx_95.Snd"<br />
Sfx_95_Snd:<br />
binclude "sound/Sfx_96.Snd"<br />
Sfx_96_Snd:<br />
binclude "sound/Sfx_97.Snd"<br />
Sfx_97_Snd:<br />
binclude "sound/Sfx_98.Snd"<br />
Sfx_98_Snd:<br />
binclude "sound/Sfx_99.Snd"<br />
Sfx_99_Snd:<br />
binclude "sound/Sfx_9A.Snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/Sfx_9B.Snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/Sfx_9C.Snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/Sfx_9D.Snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/Sfx_9E.Snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/Sfx_9F.Snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/Sfx_A0.Snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/Sfx_A1.Snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/Sfx_A2.Snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/Sfx_A3.Snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/Sfx_A4.Snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/Sfx_A5.Snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/Sfx_A6.Snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/Sfx_A7.Snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/Sfx_A8.Snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/Sfx_A9.Snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/Sfx_AA.Snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/Sfx_AB.Snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/Sfx_AC.Snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/Sfx_AD.Snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/Sfx_AE.Snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/Sfx_AF.Snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/Sfx_B0.Snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/Sfx_B1.Snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/Sfx_B2.Snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/Sfx_B3.Snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/Sfx_B4.Snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/Sfx_B5.Snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/Sfx_B6.Snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/Sfx_B7.Snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/Sfx_B8.Snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/Sfx_B9.Snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/Sfx_BA.Snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/Sfx_BB.Snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/Sfx_BC.Snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/Sfx_BD.Snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/Sfx_BE.Snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/Sfx_BF.Snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/Sfx_C0.Snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/Sfx_C1.Snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/Sfx_C2.Snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/Sfx_C3.Snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/Sfx_C4.Snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/Sfx_C5.Snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/Sfx_C6.Snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/Sfx_C7.Snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/Sfx_C8.Snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/Sfx_C9.Snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/Sfx_CA.Snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/Sfx_CB.Snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/Sfx_CC.Snd"<br />
Sfx_CC_Snd:<br />
binclude "sound/Sfx_CD.Snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/Sfx_CE.Snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/Sfx_CF.Snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/Sfx_D0.Snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/Sfx_D1.Snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/Sfx_D2.Snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/Sfx_D3.Snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/Sfx_D4.Snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/Sfx_D5.Snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/Sfx_D6.Snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/Sfx_D7.Snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/Sfx_D8.Snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/Sfx_D9.Snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/Sfx_DA.Snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/Sfx_DB.Snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/Sfx_DC.Snd"<br />
soundBankEnd := *<br />
<br />
if dacBank0End > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{dacBank0End-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-dacBank0End} bytes free at end."<br />
endif<br />
<br />
if dacBank1End > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{dacBank1End-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-dacBank1End} bytes free at end."<br />
endif<br />
<br />
if dacBank2End > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{bank2End-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-bank2End} bytes free at end."<br />
endif<br />
<br />
if bank0End > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{bank0End-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-bank0End} bytes free at end."<br />
endif<br />
<br />
if bank1End > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{bank1End-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-bank1End} bytes free at end."<br />
endif<br />
<br />
if bank2End > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{bank2End-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-bank2End} bytes free at end."<br />
endif<br />
<br />
if bank3End > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{bank3End-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-bank3End} bytes free at end."<br />
endif<br />
<br />
if soundBankEnd > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{soundBankEnd-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-soundBankEnd} bytes free at end."<br />
endif<br />
</asm><br />
<br />
'''Note:''' Linux systems and some mac installs have a case sensitive filesystem and that can cause build errors,<br><br />
to fix, simply rename all non-sound effects to lowercase names.<br />
<br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
+ stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
<br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
now find:<br />
<asm><br />
; loc_541A:<br />
SpecialStage_Unpause:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
move.b #8,(Vint_routine).w<br />
bra.w WaitForVint<br />
</asm><br />
replace the line right after the label with:<br />
<asm><br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
</asm><br />
<br />
==Driver Data Files==<br />
Unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
; Music IDs<br />
offset := zMasterPlaylist<br />
ptrsize := 1<br />
idstart := $81<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy zMusIDPtr in the $80 slot<br />
<br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 1<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
; Sound IDs<br />
offset := SoundIndex<br />
ptrsize := 2<br />
idstart := $A0<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy SndPtr in the $80 slot<br />
<br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SndID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
<br />
==Fixing the special sounds==<br />
Any time you update the sound driver, you need to change these sounds:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_StopSFX = $78+$80 ; F8<br />
MusID_FadeOut = $79+$80 ; F9<br />
SndID_SegaSound = $7A+$80 ; FA<br />
MusID_SpeedUp = $7B+$80 ; FB<br />
MusID_SlowDown = $7C+$80 ; FC<br />
MusID_Stop = $7D+$80 ; FD<br />
MusID_Pause = $7E+$80 ; FE<br />
MusID_Unpause = $7F+$80 ; FF<br />
</asm><br />
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:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_FadeOut = $E1<br />
MusID_Stop = $E0<br />
SndID_SegaSound = $FF<br />
<br />
;these are here for compatibility<br />
MusID_StopSFX = MusID_Stop<br />
<br />
;Tempo IDs<br />
Tempo_SpeedUp = 8<br />
Tempo_SlowDown = 0<br />
</asm><br />
<br />
==Fixing the Sneakers==<br />
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.<br />
First, we will go to '''super_shoes_Tails''' and, beyond the +, we'll find this:<br />
<asm><br />
move.w #MusID_SpeedUp,d0<br />
jmp (PlayMusic).l ; Speed up tempo<br />
</asm><br />
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:<br />
<asm><br />
move.w #Tempo_SpeedUp,d0<br />
jmp (SetTempo).l ; Speed up tempo<br />
</asm><br />
The music now speeds up, but we need it to slow down when the sneakers wear off, so find:<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #MusID_SlowDown,d0 ; Slow down tempo<br />
jmp (PlayMusic).l<br />
</asm><br />
There are 2 lines that need editing here, just as before.<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #Tempo_SlowDown,d0 ; Slow down tempo<br />
jmp (SetTempo).l<br />
</asm><br />
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.<br />
==Optional: Apply New Sounds to Existing Objects==<br />
''(coming soon)''<br />
<br />
==Optional: Fix the 2P VS Screen==<br />
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:<br />
<asm><br />
move.b #MusID_Options,d0<br />
bsr.w JmpTo_PlayMusic<br />
move.w #$707,(Demo_Time_left).w<br />
clr.w (Two_player_mode).w<br />
clr.l (Camera_X_pos).w<br />
clr.l (Camera_Y_pos).w<br />
move.b #$16,(Vint_routine).w<br />
bsr.w WaitForVint<br />
move.w (VDP_Reg1_val).w,d0<br />
ori.b #$40,d0<br />
move.w d0,(VDP_control_port).l<br />
bsr.w Pal_FadeTo<br />
<br />
;loc_8DA8:<br />
LevelSelect2P_Main:<br />
</asm><br />
and change the music id to '''MusID_2PVS'''.<br><br />
the result should be:<br />
<asm><br />
move.b #MusID_2PVS,d0<br />
bsr.w JmpTo_PlayMusic<br />
move.w #$707,(Demo_Time_left).w<br />
clr.w (Two_player_mode).w<br />
clr.l (Camera_X_pos).w<br />
clr.l (Camera_Y_pos).w<br />
move.b #$16,(Vint_routine).w<br />
bsr.w WaitForVint<br />
move.w (VDP_Reg1_val).w,d0<br />
ori.b #$40,d0<br />
move.w d0,(VDP_control_port).l<br />
bsr.w Pal_FadeTo<br />
<br />
;loc_8DA8:<br />
LevelSelect2P_Main:<br />
</asm><br />
<br />
==Optional: Fix the Sound Test==<br />
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'''.<br />
Here is what we have:<br />
<asm><br />
OptionScreen_Choices:<br />
dc.l (3-1)<<24|(Player_option&$FFFFFF)<br />
dc.l (2-1)<<24|(Two_player_items&$FFFFFF)<br />
dc.l ($80-1)<<24|(Sound_test_sound&$FFFFFF)<br />
</asm><br />
change that last line to:<br />
<asm><br />
OptionScreen_Choices:<br />
dc.l ($FF)<<24|(Sound_test_sound&$FFFFFF)<br />
</asm><br />
now we have a full range, but it is not fixed yet.<br />
<br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208790
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-26T20:37:41Z
<p>Kram1024: /* Optional: Fix the 2P VS Screen */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
dacBank0End := *<br />
<br />
align $8000<br />
dacBank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
dacBank1End := *<br />
align $8000<br />
<br />
align $8000<br />
dacBank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
dacBank2End := *<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
bank0End := *<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
bank1End := *<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
bank2End := *<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
bank3End := *<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/Sfx_34.Snd"<br />
Sfx_34_Snd:<br />
binclude "sound/Sfx_35.Snd"<br />
Sfx_35_Snd:<br />
binclude "sound/Sfx_36.Snd"<br />
Sfx_36_Snd:<br />
binclude "sound/Sfx_37.Snd"<br />
Sfx_37_Snd:<br />
binclude "sound/Sfx_38.Snd"<br />
Sfx_38_Snd:<br />
binclude "sound/Sfx_39.Snd"<br />
Sfx_39_Snd:<br />
binclude "sound/Sfx_3A.Snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/Sfx_3B.Snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/Sfx_3C.Snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/Sfx_3D.Snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/Sfx_3E.Snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/Sfx_3F.Snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/Sfx_40.Snd"<br />
Sfx_40_Snd:<br />
binclude "sound/Sfx_41.Snd"<br />
Sfx_41_Snd:<br />
binclude "sound/Sfx_42.Snd"<br />
Sfx_42_Snd:<br />
binclude "sound/Sfx_43.Snd"<br />
Sfx_43_Snd:<br />
binclude "sound/Sfx_44.Snd"<br />
Sfx_44_Snd:<br />
binclude "sound/Sfx_45.Snd"<br />
Sfx_45_Snd:<br />
binclude "sound/Sfx_46.Snd"<br />
Sfx_46_Snd:<br />
binclude "sound/Sfx_47.Snd"<br />
Sfx_47_Snd:<br />
binclude "sound/Sfx_48.Snd"<br />
Sfx_48_Snd:<br />
binclude "sound/Sfx_49.Snd"<br />
Sfx_49_Snd:<br />
binclude "sound/Sfx_4A.Snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/Sfx_4B.Snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/Sfx_4C.Snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/Sfx_4D.Snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/Sfx_4E.Snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/Sfx_4F.Snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/Sfx_50.Snd"<br />
Sfx_50_Snd:<br />
binclude "sound/Sfx_51.Snd"<br />
Sfx_51_Snd:<br />
binclude "sound/Sfx_52.Snd"<br />
Sfx_52_Snd:<br />
binclude "sound/Sfx_53.Snd"<br />
Sfx_53_Snd:<br />
binclude "sound/Sfx_54.Snd"<br />
Sfx_54_Snd:<br />
binclude "sound/Sfx_55.Snd"<br />
Sfx_55_Snd:<br />
binclude "sound/Sfx_56.Snd"<br />
Sfx_56_Snd:<br />
binclude "sound/Sfx_57.Snd"<br />
Sfx_57_Snd:<br />
binclude "sound/Sfx_58.Snd"<br />
Sfx_58_Snd:<br />
binclude "sound/Sfx_59.Snd"<br />
Sfx_59_Snd:<br />
binclude "sound/Sfx_5A.Snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/Sfx_5B.Snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/Sfx_5C.Snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/Sfx_5D.Snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/Sfx_5E.Snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/Sfx_5F.Snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/Sfx_60.Snd"<br />
Sfx_60_Snd:<br />
binclude "sound/Sfx_61.Snd"<br />
Sfx_61_Snd:<br />
binclude "sound/Sfx_62.Snd"<br />
Sfx_62_Snd:<br />
binclude "sound/Sfx_63.Snd"<br />
Sfx_63_Snd:<br />
binclude "sound/Sfx_64.Snd"<br />
Sfx_64_Snd:<br />
binclude "sound/Sfx_65.Snd"<br />
Sfx_65_Snd:<br />
binclude "sound/Sfx_66.Snd"<br />
Sfx_66_Snd:<br />
binclude "sound/Sfx_67.Snd"<br />
Sfx_67_Snd:<br />
binclude "sound/Sfx_68.Snd"<br />
Sfx_68_Snd:<br />
binclude "sound/Sfx_69.Snd"<br />
Sfx_69_Snd:<br />
binclude "sound/Sfx_6A.Snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/Sfx_6B.Snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/Sfx_6C.Snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/Sfx_6D.Snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/Sfx_6E.Snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/Sfx_6F.Snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/Sfx_70.Snd"<br />
Sfx_70_Snd:<br />
binclude "sound/Sfx_71.Snd"<br />
Sfx_71_Snd:<br />
binclude "sound/Sfx_72.Snd"<br />
Sfx_72_Snd:<br />
binclude "sound/Sfx_73.Snd"<br />
Sfx_73_Snd:<br />
binclude "sound/Sfx_74.Snd"<br />
Sfx_74_Snd:<br />
binclude "sound/Sfx_75.Snd"<br />
Sfx_75_Snd:<br />
binclude "sound/Sfx_76.Snd"<br />
Sfx_76_Snd:<br />
binclude "sound/Sfx_77.Snd"<br />
Sfx_77_Snd:<br />
binclude "sound/Sfx_78.Snd"<br />
Sfx_78_Snd:<br />
binclude "sound/Sfx_79.Snd"<br />
Sfx_79_Snd:<br />
binclude "sound/Sfx_7A.Snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/Sfx_7B.Snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/Sfx_7C.Snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/Sfx_7D.Snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/Sfx_7E.Snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/Sfx_7F.Snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/Sfx_80.Snd"<br />
Sfx_80_Snd:<br />
binclude "sound/Sfx_81.Snd"<br />
Sfx_81_Snd:<br />
binclude "sound/Sfx_82.Snd"<br />
Sfx_82_Snd:<br />
binclude "sound/Sfx_83.Snd"<br />
Sfx_83_Snd:<br />
binclude "sound/Sfx_84.Snd"<br />
Sfx_84_Snd:<br />
binclude "sound/Sfx_85.Snd"<br />
Sfx_85_Snd:<br />
binclude "sound/Sfx_86.Snd"<br />
Sfx_86_Snd:<br />
binclude "sound/Sfx_87.Snd"<br />
Sfx_87_Snd:<br />
binclude "sound/Sfx_88.Snd"<br />
Sfx_88_Snd:<br />
binclude "sound/Sfx_89.Snd"<br />
Sfx_89_Snd:<br />
binclude "sound/Sfx_8A.Snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/Sfx_8B.Snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/Sfx_8C.Snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/Sfx_8D.Snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/Sfx_8E.Snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/Sfx_8F.Snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/Sfx_90.Snd"<br />
Sfx_90_Snd:<br />
binclude "sound/Sfx_91.Snd"<br />
Sfx_91_Snd:<br />
binclude "sound/Sfx_92.Snd"<br />
Sfx_92_Snd:<br />
binclude "sound/Sfx_93.Snd"<br />
Sfx_93_Snd:<br />
binclude "sound/Sfx_94.Snd"<br />
Sfx_94_Snd:<br />
binclude "sound/Sfx_95.Snd"<br />
Sfx_95_Snd:<br />
binclude "sound/Sfx_96.Snd"<br />
Sfx_96_Snd:<br />
binclude "sound/Sfx_97.Snd"<br />
Sfx_97_Snd:<br />
binclude "sound/Sfx_98.Snd"<br />
Sfx_98_Snd:<br />
binclude "sound/Sfx_99.Snd"<br />
Sfx_99_Snd:<br />
binclude "sound/Sfx_9A.Snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/Sfx_9B.Snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/Sfx_9C.Snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/Sfx_9D.Snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/Sfx_9E.Snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/Sfx_9F.Snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/Sfx_A0.Snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/Sfx_A1.Snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/Sfx_A2.Snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/Sfx_A3.Snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/Sfx_A4.Snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/Sfx_A5.Snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/Sfx_A6.Snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/Sfx_A7.Snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/Sfx_A8.Snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/Sfx_A9.Snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/Sfx_AA.Snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/Sfx_AB.Snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/Sfx_AC.Snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/Sfx_AD.Snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/Sfx_AE.Snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/Sfx_AF.Snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/Sfx_B0.Snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/Sfx_B1.Snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/Sfx_B2.Snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/Sfx_B3.Snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/Sfx_B4.Snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/Sfx_B5.Snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/Sfx_B6.Snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/Sfx_B7.Snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/Sfx_B8.Snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/Sfx_B9.Snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/Sfx_BA.Snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/Sfx_BB.Snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/Sfx_BC.Snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/Sfx_BD.Snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/Sfx_BE.Snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/Sfx_BF.Snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/Sfx_C0.Snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/Sfx_C1.Snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/Sfx_C2.Snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/Sfx_C3.Snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/Sfx_C4.Snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/Sfx_C5.Snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/Sfx_C6.Snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/Sfx_C7.Snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/Sfx_C8.Snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/Sfx_C9.Snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/Sfx_CA.Snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/Sfx_CB.Snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/Sfx_CC.Snd"<br />
Sfx_CC_Snd:<br />
binclude "sound/Sfx_CD.Snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/Sfx_CE.Snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/Sfx_CF.Snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/Sfx_D0.Snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/Sfx_D1.Snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/Sfx_D2.Snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/Sfx_D3.Snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/Sfx_D4.Snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/Sfx_D5.Snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/Sfx_D6.Snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/Sfx_D7.Snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/Sfx_D8.Snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/Sfx_D9.Snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/Sfx_DA.Snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/Sfx_DB.Snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/Sfx_DC.Snd"<br />
soundBankEnd := *<br />
<br />
if dacBank0End > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{dacBank0End-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-dacBank0End} bytes free at end."<br />
endif<br />
<br />
if dacBank1End > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{dacBank1End-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-dacBank1End} bytes free at end."<br />
endif<br />
<br />
if dacBank2End > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{bank2End-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-bank2End} bytes free at end."<br />
endif<br />
<br />
if bank0End > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{bank0End-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-bank0End} bytes free at end."<br />
endif<br />
<br />
if bank1End > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{bank1End-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-bank1End} bytes free at end."<br />
endif<br />
<br />
if bank2End > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{bank2End-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-bank2End} bytes free at end."<br />
endif<br />
<br />
if bank3End > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{bank3End-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-bank3End} bytes free at end."<br />
endif<br />
<br />
if soundBankEnd > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{soundBankEnd-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-soundBankEnd} bytes free at end."<br />
endif<br />
</asm><br />
<br />
'''Note:''' Linux systems and some mac installs have a case sensitive filesystem and that can cause build errors,<br><br />
to fix, simply rename all non-sound effects to lowercase names.<br />
<br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
+ stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
<br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
now find:<br />
<asm><br />
; loc_541A:<br />
SpecialStage_Unpause:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
move.b #8,(Vint_routine).w<br />
bra.w WaitForVint<br />
</asm><br />
replace the line right after the label with:<br />
<asm><br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
</asm><br />
<br />
==Driver Data Files==<br />
Unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
; Music IDs<br />
offset := zMasterPlaylist<br />
ptrsize := 1<br />
idstart := $81<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy zMusIDPtr in the $80 slot<br />
<br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 1<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
; Sound IDs<br />
offset := SoundIndex<br />
ptrsize := 2<br />
idstart := $A0<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy SndPtr in the $80 slot<br />
<br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SndID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
<br />
==Fixing the special sounds==<br />
Any time you update the sound driver, you need to change these sounds:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_StopSFX = $78+$80 ; F8<br />
MusID_FadeOut = $79+$80 ; F9<br />
SndID_SegaSound = $7A+$80 ; FA<br />
MusID_SpeedUp = $7B+$80 ; FB<br />
MusID_SlowDown = $7C+$80 ; FC<br />
MusID_Stop = $7D+$80 ; FD<br />
MusID_Pause = $7E+$80 ; FE<br />
MusID_Unpause = $7F+$80 ; FF<br />
</asm><br />
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:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_FadeOut = $E1<br />
MusID_Stop = $E0<br />
SndID_SegaSound = $FF<br />
<br />
;these are here for compatibility<br />
MusID_StopSFX = MusID_Stop<br />
<br />
;Tempo IDs<br />
Tempo_SpeedUp = 8<br />
Tempo_SlowDown = 0<br />
</asm><br />
<br />
==Fixing the Sneakers==<br />
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.<br />
First, we will go to '''super_shoes_Tails''' and, beyond the +, we'll find this:<br />
<asm><br />
move.w #MusID_SpeedUp,d0<br />
jmp (PlayMusic).l ; Speed up tempo<br />
</asm><br />
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:<br />
<asm><br />
move.w #Tempo_SpeedUp,d0<br />
jmp (SetTempo).l ; Speed up tempo<br />
</asm><br />
The music now speeds up, but we need it to slow down when the sneakers wear off, so find:<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #MusID_SlowDown,d0 ; Slow down tempo<br />
jmp (PlayMusic).l<br />
</asm><br />
There are 2 lines that need editing here, just as before.<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #Tempo_SlowDown,d0 ; Slow down tempo<br />
jmp (SetTempo).l<br />
</asm><br />
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.<br />
==Optional: Apply New Sounds to Existing Objects==<br />
''(coming soon)''<br />
<br />
==Optional: Fix the 2P VS Screen==<br />
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:<br />
<asm><br />
move.b #MusID_Options,d0<br />
bsr.w JmpTo_PlayMusic<br />
move.w #$707,(Demo_Time_left).w<br />
clr.w (Two_player_mode).w<br />
clr.l (Camera_X_pos).w<br />
clr.l (Camera_Y_pos).w<br />
move.b #$16,(Vint_routine).w<br />
bsr.w WaitForVint<br />
move.w (VDP_Reg1_val).w,d0<br />
ori.b #$40,d0<br />
move.w d0,(VDP_control_port).l<br />
bsr.w Pal_FadeTo<br />
<br />
;loc_8DA8:<br />
LevelSelect2P_Main:<br />
</asm><br />
and change the music id to '''MusID_2PVS'''.<br><br />
the result should be:<br />
<asm><br />
move.b #MusID_2PVS,d0<br />
bsr.w JmpTo_PlayMusic<br />
move.w #$707,(Demo_Time_left).w<br />
clr.w (Two_player_mode).w<br />
clr.l (Camera_X_pos).w<br />
clr.l (Camera_Y_pos).w<br />
move.b #$16,(Vint_routine).w<br />
bsr.w WaitForVint<br />
move.w (VDP_Reg1_val).w,d0<br />
ori.b #$40,d0<br />
move.w d0,(VDP_control_port).l<br />
bsr.w Pal_FadeTo<br />
<br />
;loc_8DA8:<br />
LevelSelect2P_Main:<br />
</asm><br />
<br />
==Optional: Fix the Sound Test==<br />
''(coming soon)''<br />
<br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208782
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-26T08:54:16Z
<p>Kram1024: /* Upgrading the SoundDriverLoad Routine */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
dacBank0End := *<br />
<br />
align $8000<br />
dacBank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
dacBank1End := *<br />
align $8000<br />
<br />
align $8000<br />
dacBank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
dacBank2End := *<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
bank0End := *<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
bank1End := *<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
bank2End := *<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
bank3End := *<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/Sfx_34.Snd"<br />
Sfx_34_Snd:<br />
binclude "sound/Sfx_35.Snd"<br />
Sfx_35_Snd:<br />
binclude "sound/Sfx_36.Snd"<br />
Sfx_36_Snd:<br />
binclude "sound/Sfx_37.Snd"<br />
Sfx_37_Snd:<br />
binclude "sound/Sfx_38.Snd"<br />
Sfx_38_Snd:<br />
binclude "sound/Sfx_39.Snd"<br />
Sfx_39_Snd:<br />
binclude "sound/Sfx_3A.Snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/Sfx_3B.Snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/Sfx_3C.Snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/Sfx_3D.Snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/Sfx_3E.Snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/Sfx_3F.Snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/Sfx_40.Snd"<br />
Sfx_40_Snd:<br />
binclude "sound/Sfx_41.Snd"<br />
Sfx_41_Snd:<br />
binclude "sound/Sfx_42.Snd"<br />
Sfx_42_Snd:<br />
binclude "sound/Sfx_43.Snd"<br />
Sfx_43_Snd:<br />
binclude "sound/Sfx_44.Snd"<br />
Sfx_44_Snd:<br />
binclude "sound/Sfx_45.Snd"<br />
Sfx_45_Snd:<br />
binclude "sound/Sfx_46.Snd"<br />
Sfx_46_Snd:<br />
binclude "sound/Sfx_47.Snd"<br />
Sfx_47_Snd:<br />
binclude "sound/Sfx_48.Snd"<br />
Sfx_48_Snd:<br />
binclude "sound/Sfx_49.Snd"<br />
Sfx_49_Snd:<br />
binclude "sound/Sfx_4A.Snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/Sfx_4B.Snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/Sfx_4C.Snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/Sfx_4D.Snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/Sfx_4E.Snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/Sfx_4F.Snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/Sfx_50.Snd"<br />
Sfx_50_Snd:<br />
binclude "sound/Sfx_51.Snd"<br />
Sfx_51_Snd:<br />
binclude "sound/Sfx_52.Snd"<br />
Sfx_52_Snd:<br />
binclude "sound/Sfx_53.Snd"<br />
Sfx_53_Snd:<br />
binclude "sound/Sfx_54.Snd"<br />
Sfx_54_Snd:<br />
binclude "sound/Sfx_55.Snd"<br />
Sfx_55_Snd:<br />
binclude "sound/Sfx_56.Snd"<br />
Sfx_56_Snd:<br />
binclude "sound/Sfx_57.Snd"<br />
Sfx_57_Snd:<br />
binclude "sound/Sfx_58.Snd"<br />
Sfx_58_Snd:<br />
binclude "sound/Sfx_59.Snd"<br />
Sfx_59_Snd:<br />
binclude "sound/Sfx_5A.Snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/Sfx_5B.Snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/Sfx_5C.Snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/Sfx_5D.Snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/Sfx_5E.Snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/Sfx_5F.Snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/Sfx_60.Snd"<br />
Sfx_60_Snd:<br />
binclude "sound/Sfx_61.Snd"<br />
Sfx_61_Snd:<br />
binclude "sound/Sfx_62.Snd"<br />
Sfx_62_Snd:<br />
binclude "sound/Sfx_63.Snd"<br />
Sfx_63_Snd:<br />
binclude "sound/Sfx_64.Snd"<br />
Sfx_64_Snd:<br />
binclude "sound/Sfx_65.Snd"<br />
Sfx_65_Snd:<br />
binclude "sound/Sfx_66.Snd"<br />
Sfx_66_Snd:<br />
binclude "sound/Sfx_67.Snd"<br />
Sfx_67_Snd:<br />
binclude "sound/Sfx_68.Snd"<br />
Sfx_68_Snd:<br />
binclude "sound/Sfx_69.Snd"<br />
Sfx_69_Snd:<br />
binclude "sound/Sfx_6A.Snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/Sfx_6B.Snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/Sfx_6C.Snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/Sfx_6D.Snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/Sfx_6E.Snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/Sfx_6F.Snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/Sfx_70.Snd"<br />
Sfx_70_Snd:<br />
binclude "sound/Sfx_71.Snd"<br />
Sfx_71_Snd:<br />
binclude "sound/Sfx_72.Snd"<br />
Sfx_72_Snd:<br />
binclude "sound/Sfx_73.Snd"<br />
Sfx_73_Snd:<br />
binclude "sound/Sfx_74.Snd"<br />
Sfx_74_Snd:<br />
binclude "sound/Sfx_75.Snd"<br />
Sfx_75_Snd:<br />
binclude "sound/Sfx_76.Snd"<br />
Sfx_76_Snd:<br />
binclude "sound/Sfx_77.Snd"<br />
Sfx_77_Snd:<br />
binclude "sound/Sfx_78.Snd"<br />
Sfx_78_Snd:<br />
binclude "sound/Sfx_79.Snd"<br />
Sfx_79_Snd:<br />
binclude "sound/Sfx_7A.Snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/Sfx_7B.Snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/Sfx_7C.Snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/Sfx_7D.Snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/Sfx_7E.Snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/Sfx_7F.Snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/Sfx_80.Snd"<br />
Sfx_80_Snd:<br />
binclude "sound/Sfx_81.Snd"<br />
Sfx_81_Snd:<br />
binclude "sound/Sfx_82.Snd"<br />
Sfx_82_Snd:<br />
binclude "sound/Sfx_83.Snd"<br />
Sfx_83_Snd:<br />
binclude "sound/Sfx_84.Snd"<br />
Sfx_84_Snd:<br />
binclude "sound/Sfx_85.Snd"<br />
Sfx_85_Snd:<br />
binclude "sound/Sfx_86.Snd"<br />
Sfx_86_Snd:<br />
binclude "sound/Sfx_87.Snd"<br />
Sfx_87_Snd:<br />
binclude "sound/Sfx_88.Snd"<br />
Sfx_88_Snd:<br />
binclude "sound/Sfx_89.Snd"<br />
Sfx_89_Snd:<br />
binclude "sound/Sfx_8A.Snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/Sfx_8B.Snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/Sfx_8C.Snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/Sfx_8D.Snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/Sfx_8E.Snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/Sfx_8F.Snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/Sfx_90.Snd"<br />
Sfx_90_Snd:<br />
binclude "sound/Sfx_91.Snd"<br />
Sfx_91_Snd:<br />
binclude "sound/Sfx_92.Snd"<br />
Sfx_92_Snd:<br />
binclude "sound/Sfx_93.Snd"<br />
Sfx_93_Snd:<br />
binclude "sound/Sfx_94.Snd"<br />
Sfx_94_Snd:<br />
binclude "sound/Sfx_95.Snd"<br />
Sfx_95_Snd:<br />
binclude "sound/Sfx_96.Snd"<br />
Sfx_96_Snd:<br />
binclude "sound/Sfx_97.Snd"<br />
Sfx_97_Snd:<br />
binclude "sound/Sfx_98.Snd"<br />
Sfx_98_Snd:<br />
binclude "sound/Sfx_99.Snd"<br />
Sfx_99_Snd:<br />
binclude "sound/Sfx_9A.Snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/Sfx_9B.Snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/Sfx_9C.Snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/Sfx_9D.Snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/Sfx_9E.Snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/Sfx_9F.Snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/Sfx_A0.Snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/Sfx_A1.Snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/Sfx_A2.Snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/Sfx_A3.Snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/Sfx_A4.Snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/Sfx_A5.Snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/Sfx_A6.Snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/Sfx_A7.Snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/Sfx_A8.Snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/Sfx_A9.Snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/Sfx_AA.Snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/Sfx_AB.Snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/Sfx_AC.Snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/Sfx_AD.Snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/Sfx_AE.Snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/Sfx_AF.Snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/Sfx_B0.Snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/Sfx_B1.Snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/Sfx_B2.Snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/Sfx_B3.Snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/Sfx_B4.Snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/Sfx_B5.Snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/Sfx_B6.Snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/Sfx_B7.Snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/Sfx_B8.Snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/Sfx_B9.Snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/Sfx_BA.Snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/Sfx_BB.Snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/Sfx_BC.Snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/Sfx_BD.Snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/Sfx_BE.Snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/Sfx_BF.Snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/Sfx_C0.Snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/Sfx_C1.Snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/Sfx_C2.Snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/Sfx_C3.Snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/Sfx_C4.Snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/Sfx_C5.Snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/Sfx_C6.Snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/Sfx_C7.Snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/Sfx_C8.Snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/Sfx_C9.Snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/Sfx_CA.Snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/Sfx_CB.Snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/Sfx_CC.Snd"<br />
Sfx_CC_Snd:<br />
binclude "sound/Sfx_CD.Snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/Sfx_CE.Snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/Sfx_CF.Snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/Sfx_D0.Snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/Sfx_D1.Snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/Sfx_D2.Snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/Sfx_D3.Snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/Sfx_D4.Snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/Sfx_D5.Snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/Sfx_D6.Snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/Sfx_D7.Snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/Sfx_D8.Snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/Sfx_D9.Snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/Sfx_DA.Snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/Sfx_DB.Snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/Sfx_DC.Snd"<br />
soundBankEnd := *<br />
<br />
if dacBank0End > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{dacBank0End-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-dacBank0End} bytes free at end."<br />
endif<br />
<br />
if dacBank1End > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{dacBank1End-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-dacBank1End} bytes free at end."<br />
endif<br />
<br />
if dacBank2End > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{bank2End-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-bank2End} bytes free at end."<br />
endif<br />
<br />
if bank0End > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{bank0End-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-bank0End} bytes free at end."<br />
endif<br />
<br />
if bank1End > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{bank1End-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-bank1End} bytes free at end."<br />
endif<br />
<br />
if bank2End > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{bank2End-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-bank2End} bytes free at end."<br />
endif<br />
<br />
if bank3End > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{bank3End-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-bank3End} bytes free at end."<br />
endif<br />
<br />
if soundBankEnd > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{soundBankEnd-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-soundBankEnd} bytes free at end."<br />
endif<br />
</asm><br />
<br />
'''Note:''' Linux systems and some mac installs have a case sensitive filesystem and that can cause build errors,<br><br />
to fix, simply rename all non-sound effects to lowercase names.<br />
<br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
+ stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
<br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
now find:<br />
<asm><br />
; loc_541A:<br />
SpecialStage_Unpause:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
move.b #8,(Vint_routine).w<br />
bra.w WaitForVint<br />
</asm><br />
replace the line right after the label with:<br />
<asm><br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
</asm><br />
<br />
==Driver Data Files==<br />
then unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
; Music IDs<br />
offset := zMasterPlaylist<br />
ptrsize := 1<br />
idstart := $81<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy zMusIDPtr in the $80 slot<br />
<br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 1<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
; Sound IDs<br />
offset := SoundIndex<br />
ptrsize := 2<br />
idstart := $A0<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy SndPtr in the $80 slot<br />
<br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SndID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
<br />
==Fixing the special sounds==<br />
Any time you update the sound driver, you need to change these sounds:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_StopSFX = $78+$80 ; F8<br />
MusID_FadeOut = $79+$80 ; F9<br />
SndID_SegaSound = $7A+$80 ; FA<br />
MusID_SpeedUp = $7B+$80 ; FB<br />
MusID_SlowDown = $7C+$80 ; FC<br />
MusID_Stop = $7D+$80 ; FD<br />
MusID_Pause = $7E+$80 ; FE<br />
MusID_Unpause = $7F+$80 ; FF<br />
</asm><br />
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 sonic3 driver as far as I know, so we will treat it as a compat id. the resulting lists will look like THIS:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_FadeOut = $E1<br />
MusID_Stop = $E0<br />
SndID_SegaSound = $FF<br />
<br />
;these are here for compatibility<br />
MusID_StopSFX = MusID_Stop<br />
<br />
;Tempo IDs<br />
Tempo_SpeedUp = 8<br />
Tempo_SlowDown = 0<br />
</asm><br />
<br />
==Fixing the Sneaker==<br />
I bet you expected that the sneaker would be fixed with the previous section, but no, sonic3 uses a different routine for the sneaker speed up / slow down.<br />
first we will go to '''super_shoes+'''. What we will see is this:<br />
<asm><br />
move.w #MusID_SpeedUp,d0<br />
jmp (PlayMusic).l ; Speed up tempo<br />
</asm><br />
that will not work the way we want it to. It will actually cause a compiler error, so we need to fix it:<br />
<asm><br />
move.w #Tempo_SpeedUp,d0<br />
jmp (SetTempo).l ; Speed up tempo<br />
</asm><br />
the music now speeds up, but we need it to slow down when the sneaker wears off, so find:<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #MusID_SlowDown,d0 ; Slow down tempo<br />
jmp (PlayMusic).l<br />
;</asm><br />
there are 2 lines that need editing here, just as before.<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #Tempo_SlowDown,d0 ; Slow down tempo<br />
jmp (SetTempo).l<br />
</asm><br />
do the exact same thing to '''Obj02_ChkShoes'''. Now the sneakers should be working as intended.<br />
==Optional: Apply new sounds to existing objects==<br />
''(coming soon)''<br />
<br />
==Optional: Fix the 2p vs screen==<br />
''(coming soon)''<br />
<br />
==Optional: Fix the sound test==<br />
''(coming soon)''<br />
<br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208781
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-26T08:50:20Z
<p>Kram1024: /* Upgrading the Playback Routines */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
dacBank0End := *<br />
<br />
align $8000<br />
dacBank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
dacBank1End := *<br />
align $8000<br />
<br />
align $8000<br />
dacBank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
dacBank2End := *<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
bank0End := *<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
bank1End := *<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
bank2End := *<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
bank3End := *<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/Sfx_34.Snd"<br />
Sfx_34_Snd:<br />
binclude "sound/Sfx_35.Snd"<br />
Sfx_35_Snd:<br />
binclude "sound/Sfx_36.Snd"<br />
Sfx_36_Snd:<br />
binclude "sound/Sfx_37.Snd"<br />
Sfx_37_Snd:<br />
binclude "sound/Sfx_38.Snd"<br />
Sfx_38_Snd:<br />
binclude "sound/Sfx_39.Snd"<br />
Sfx_39_Snd:<br />
binclude "sound/Sfx_3A.Snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/Sfx_3B.Snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/Sfx_3C.Snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/Sfx_3D.Snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/Sfx_3E.Snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/Sfx_3F.Snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/Sfx_40.Snd"<br />
Sfx_40_Snd:<br />
binclude "sound/Sfx_41.Snd"<br />
Sfx_41_Snd:<br />
binclude "sound/Sfx_42.Snd"<br />
Sfx_42_Snd:<br />
binclude "sound/Sfx_43.Snd"<br />
Sfx_43_Snd:<br />
binclude "sound/Sfx_44.Snd"<br />
Sfx_44_Snd:<br />
binclude "sound/Sfx_45.Snd"<br />
Sfx_45_Snd:<br />
binclude "sound/Sfx_46.Snd"<br />
Sfx_46_Snd:<br />
binclude "sound/Sfx_47.Snd"<br />
Sfx_47_Snd:<br />
binclude "sound/Sfx_48.Snd"<br />
Sfx_48_Snd:<br />
binclude "sound/Sfx_49.Snd"<br />
Sfx_49_Snd:<br />
binclude "sound/Sfx_4A.Snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/Sfx_4B.Snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/Sfx_4C.Snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/Sfx_4D.Snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/Sfx_4E.Snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/Sfx_4F.Snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/Sfx_50.Snd"<br />
Sfx_50_Snd:<br />
binclude "sound/Sfx_51.Snd"<br />
Sfx_51_Snd:<br />
binclude "sound/Sfx_52.Snd"<br />
Sfx_52_Snd:<br />
binclude "sound/Sfx_53.Snd"<br />
Sfx_53_Snd:<br />
binclude "sound/Sfx_54.Snd"<br />
Sfx_54_Snd:<br />
binclude "sound/Sfx_55.Snd"<br />
Sfx_55_Snd:<br />
binclude "sound/Sfx_56.Snd"<br />
Sfx_56_Snd:<br />
binclude "sound/Sfx_57.Snd"<br />
Sfx_57_Snd:<br />
binclude "sound/Sfx_58.Snd"<br />
Sfx_58_Snd:<br />
binclude "sound/Sfx_59.Snd"<br />
Sfx_59_Snd:<br />
binclude "sound/Sfx_5A.Snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/Sfx_5B.Snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/Sfx_5C.Snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/Sfx_5D.Snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/Sfx_5E.Snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/Sfx_5F.Snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/Sfx_60.Snd"<br />
Sfx_60_Snd:<br />
binclude "sound/Sfx_61.Snd"<br />
Sfx_61_Snd:<br />
binclude "sound/Sfx_62.Snd"<br />
Sfx_62_Snd:<br />
binclude "sound/Sfx_63.Snd"<br />
Sfx_63_Snd:<br />
binclude "sound/Sfx_64.Snd"<br />
Sfx_64_Snd:<br />
binclude "sound/Sfx_65.Snd"<br />
Sfx_65_Snd:<br />
binclude "sound/Sfx_66.Snd"<br />
Sfx_66_Snd:<br />
binclude "sound/Sfx_67.Snd"<br />
Sfx_67_Snd:<br />
binclude "sound/Sfx_68.Snd"<br />
Sfx_68_Snd:<br />
binclude "sound/Sfx_69.Snd"<br />
Sfx_69_Snd:<br />
binclude "sound/Sfx_6A.Snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/Sfx_6B.Snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/Sfx_6C.Snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/Sfx_6D.Snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/Sfx_6E.Snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/Sfx_6F.Snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/Sfx_70.Snd"<br />
Sfx_70_Snd:<br />
binclude "sound/Sfx_71.Snd"<br />
Sfx_71_Snd:<br />
binclude "sound/Sfx_72.Snd"<br />
Sfx_72_Snd:<br />
binclude "sound/Sfx_73.Snd"<br />
Sfx_73_Snd:<br />
binclude "sound/Sfx_74.Snd"<br />
Sfx_74_Snd:<br />
binclude "sound/Sfx_75.Snd"<br />
Sfx_75_Snd:<br />
binclude "sound/Sfx_76.Snd"<br />
Sfx_76_Snd:<br />
binclude "sound/Sfx_77.Snd"<br />
Sfx_77_Snd:<br />
binclude "sound/Sfx_78.Snd"<br />
Sfx_78_Snd:<br />
binclude "sound/Sfx_79.Snd"<br />
Sfx_79_Snd:<br />
binclude "sound/Sfx_7A.Snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/Sfx_7B.Snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/Sfx_7C.Snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/Sfx_7D.Snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/Sfx_7E.Snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/Sfx_7F.Snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/Sfx_80.Snd"<br />
Sfx_80_Snd:<br />
binclude "sound/Sfx_81.Snd"<br />
Sfx_81_Snd:<br />
binclude "sound/Sfx_82.Snd"<br />
Sfx_82_Snd:<br />
binclude "sound/Sfx_83.Snd"<br />
Sfx_83_Snd:<br />
binclude "sound/Sfx_84.Snd"<br />
Sfx_84_Snd:<br />
binclude "sound/Sfx_85.Snd"<br />
Sfx_85_Snd:<br />
binclude "sound/Sfx_86.Snd"<br />
Sfx_86_Snd:<br />
binclude "sound/Sfx_87.Snd"<br />
Sfx_87_Snd:<br />
binclude "sound/Sfx_88.Snd"<br />
Sfx_88_Snd:<br />
binclude "sound/Sfx_89.Snd"<br />
Sfx_89_Snd:<br />
binclude "sound/Sfx_8A.Snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/Sfx_8B.Snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/Sfx_8C.Snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/Sfx_8D.Snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/Sfx_8E.Snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/Sfx_8F.Snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/Sfx_90.Snd"<br />
Sfx_90_Snd:<br />
binclude "sound/Sfx_91.Snd"<br />
Sfx_91_Snd:<br />
binclude "sound/Sfx_92.Snd"<br />
Sfx_92_Snd:<br />
binclude "sound/Sfx_93.Snd"<br />
Sfx_93_Snd:<br />
binclude "sound/Sfx_94.Snd"<br />
Sfx_94_Snd:<br />
binclude "sound/Sfx_95.Snd"<br />
Sfx_95_Snd:<br />
binclude "sound/Sfx_96.Snd"<br />
Sfx_96_Snd:<br />
binclude "sound/Sfx_97.Snd"<br />
Sfx_97_Snd:<br />
binclude "sound/Sfx_98.Snd"<br />
Sfx_98_Snd:<br />
binclude "sound/Sfx_99.Snd"<br />
Sfx_99_Snd:<br />
binclude "sound/Sfx_9A.Snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/Sfx_9B.Snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/Sfx_9C.Snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/Sfx_9D.Snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/Sfx_9E.Snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/Sfx_9F.Snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/Sfx_A0.Snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/Sfx_A1.Snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/Sfx_A2.Snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/Sfx_A3.Snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/Sfx_A4.Snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/Sfx_A5.Snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/Sfx_A6.Snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/Sfx_A7.Snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/Sfx_A8.Snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/Sfx_A9.Snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/Sfx_AA.Snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/Sfx_AB.Snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/Sfx_AC.Snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/Sfx_AD.Snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/Sfx_AE.Snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/Sfx_AF.Snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/Sfx_B0.Snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/Sfx_B1.Snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/Sfx_B2.Snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/Sfx_B3.Snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/Sfx_B4.Snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/Sfx_B5.Snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/Sfx_B6.Snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/Sfx_B7.Snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/Sfx_B8.Snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/Sfx_B9.Snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/Sfx_BA.Snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/Sfx_BB.Snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/Sfx_BC.Snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/Sfx_BD.Snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/Sfx_BE.Snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/Sfx_BF.Snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/Sfx_C0.Snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/Sfx_C1.Snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/Sfx_C2.Snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/Sfx_C3.Snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/Sfx_C4.Snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/Sfx_C5.Snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/Sfx_C6.Snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/Sfx_C7.Snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/Sfx_C8.Snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/Sfx_C9.Snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/Sfx_CA.Snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/Sfx_CB.Snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/Sfx_CC.Snd"<br />
Sfx_CC_Snd:<br />
binclude "sound/Sfx_CD.Snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/Sfx_CE.Snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/Sfx_CF.Snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/Sfx_D0.Snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/Sfx_D1.Snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/Sfx_D2.Snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/Sfx_D3.Snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/Sfx_D4.Snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/Sfx_D5.Snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/Sfx_D6.Snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/Sfx_D7.Snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/Sfx_D8.Snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/Sfx_D9.Snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/Sfx_DA.Snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/Sfx_DB.Snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/Sfx_DC.Snd"<br />
soundBankEnd := *<br />
<br />
if dacBank0End > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{dacBank0End-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-dacBank0End} bytes free at end."<br />
endif<br />
<br />
if dacBank1End > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{dacBank1End-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-dacBank1End} bytes free at end."<br />
endif<br />
<br />
if dacBank2End > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{bank2End-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-bank2End} bytes free at end."<br />
endif<br />
<br />
if bank0End > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{bank0End-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-bank0End} bytes free at end."<br />
endif<br />
<br />
if bank1End > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{bank1End-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-bank1End} bytes free at end."<br />
endif<br />
<br />
if bank2End > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{bank2End-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-bank2End} bytes free at end."<br />
endif<br />
<br />
if bank3End > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{bank3End-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-bank3End} bytes free at end."<br />
endif<br />
<br />
if soundBankEnd > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{soundBankEnd-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-soundBankEnd} bytes free at end."<br />
endif<br />
</asm><br />
<br />
'''Note:''' Linux systems and some mac installs have a case sensitive filesystem and that can cause build errors, to fix, simply rename all non-sound effects to lowercase names.<br />
<br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
+ stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
<br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
now find:<br />
<asm><br />
; loc_541A:<br />
SpecialStage_Unpause:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
move.b #8,(Vint_routine).w<br />
bra.w WaitForVint<br />
</asm><br />
replace the line right after the label with:<br />
<asm><br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
</asm><br />
<br />
==Driver Data Files==<br />
then unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
; Music IDs<br />
offset := zMasterPlaylist<br />
ptrsize := 1<br />
idstart := $81<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy zMusIDPtr in the $80 slot<br />
<br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 1<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
; Sound IDs<br />
offset := SoundIndex<br />
ptrsize := 2<br />
idstart := $A0<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy SndPtr in the $80 slot<br />
<br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SndID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
<br />
==Fixing the special sounds==<br />
Any time you update the sound driver, you need to change these sounds:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_StopSFX = $78+$80 ; F8<br />
MusID_FadeOut = $79+$80 ; F9<br />
SndID_SegaSound = $7A+$80 ; FA<br />
MusID_SpeedUp = $7B+$80 ; FB<br />
MusID_SlowDown = $7C+$80 ; FC<br />
MusID_Stop = $7D+$80 ; FD<br />
MusID_Pause = $7E+$80 ; FE<br />
MusID_Unpause = $7F+$80 ; FF<br />
</asm><br />
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 sonic3 driver as far as I know, so we will treat it as a compat id. the resulting lists will look like THIS:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_FadeOut = $E1<br />
MusID_Stop = $E0<br />
SndID_SegaSound = $FF<br />
<br />
;these are here for compatibility<br />
MusID_StopSFX = MusID_Stop<br />
<br />
;Tempo IDs<br />
Tempo_SpeedUp = 8<br />
Tempo_SlowDown = 0<br />
</asm><br />
<br />
==Fixing the Sneaker==<br />
I bet you expected that the sneaker would be fixed with the previous section, but no, sonic3 uses a different routine for the sneaker speed up / slow down.<br />
first we will go to '''super_shoes+'''. What we will see is this:<br />
<asm><br />
move.w #MusID_SpeedUp,d0<br />
jmp (PlayMusic).l ; Speed up tempo<br />
</asm><br />
that will not work the way we want it to. It will actually cause a compiler error, so we need to fix it:<br />
<asm><br />
move.w #Tempo_SpeedUp,d0<br />
jmp (SetTempo).l ; Speed up tempo<br />
</asm><br />
the music now speeds up, but we need it to slow down when the sneaker wears off, so find:<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #MusID_SlowDown,d0 ; Slow down tempo<br />
jmp (PlayMusic).l<br />
;</asm><br />
there are 2 lines that need editing here, just as before.<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #Tempo_SlowDown,d0 ; Slow down tempo<br />
jmp (SetTempo).l<br />
</asm><br />
do the exact same thing to '''Obj02_ChkShoes'''. Now the sneakers should be working as intended.<br />
==Optional: Apply new sounds to existing objects==<br />
''(coming soon)''<br />
<br />
==Optional: Fix the 2p vs screen==<br />
''(coming soon)''<br />
<br />
==Optional: Fix the sound test==<br />
''(coming soon)''<br />
<br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208780
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-26T08:46:47Z
<p>Kram1024: /* Optional: Fix the level select */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
dacBank0End := *<br />
<br />
align $8000<br />
dacBank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
dacBank1End := *<br />
align $8000<br />
<br />
align $8000<br />
dacBank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
dacBank2End := *<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
bank0End := *<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
bank1End := *<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
bank2End := *<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
bank3End := *<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/Sfx_34.Snd"<br />
Sfx_34_Snd:<br />
binclude "sound/Sfx_35.Snd"<br />
Sfx_35_Snd:<br />
binclude "sound/Sfx_36.Snd"<br />
Sfx_36_Snd:<br />
binclude "sound/Sfx_37.Snd"<br />
Sfx_37_Snd:<br />
binclude "sound/Sfx_38.Snd"<br />
Sfx_38_Snd:<br />
binclude "sound/Sfx_39.Snd"<br />
Sfx_39_Snd:<br />
binclude "sound/Sfx_3A.Snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/Sfx_3B.Snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/Sfx_3C.Snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/Sfx_3D.Snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/Sfx_3E.Snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/Sfx_3F.Snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/Sfx_40.Snd"<br />
Sfx_40_Snd:<br />
binclude "sound/Sfx_41.Snd"<br />
Sfx_41_Snd:<br />
binclude "sound/Sfx_42.Snd"<br />
Sfx_42_Snd:<br />
binclude "sound/Sfx_43.Snd"<br />
Sfx_43_Snd:<br />
binclude "sound/Sfx_44.Snd"<br />
Sfx_44_Snd:<br />
binclude "sound/Sfx_45.Snd"<br />
Sfx_45_Snd:<br />
binclude "sound/Sfx_46.Snd"<br />
Sfx_46_Snd:<br />
binclude "sound/Sfx_47.Snd"<br />
Sfx_47_Snd:<br />
binclude "sound/Sfx_48.Snd"<br />
Sfx_48_Snd:<br />
binclude "sound/Sfx_49.Snd"<br />
Sfx_49_Snd:<br />
binclude "sound/Sfx_4A.Snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/Sfx_4B.Snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/Sfx_4C.Snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/Sfx_4D.Snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/Sfx_4E.Snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/Sfx_4F.Snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/Sfx_50.Snd"<br />
Sfx_50_Snd:<br />
binclude "sound/Sfx_51.Snd"<br />
Sfx_51_Snd:<br />
binclude "sound/Sfx_52.Snd"<br />
Sfx_52_Snd:<br />
binclude "sound/Sfx_53.Snd"<br />
Sfx_53_Snd:<br />
binclude "sound/Sfx_54.Snd"<br />
Sfx_54_Snd:<br />
binclude "sound/Sfx_55.Snd"<br />
Sfx_55_Snd:<br />
binclude "sound/Sfx_56.Snd"<br />
Sfx_56_Snd:<br />
binclude "sound/Sfx_57.Snd"<br />
Sfx_57_Snd:<br />
binclude "sound/Sfx_58.Snd"<br />
Sfx_58_Snd:<br />
binclude "sound/Sfx_59.Snd"<br />
Sfx_59_Snd:<br />
binclude "sound/Sfx_5A.Snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/Sfx_5B.Snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/Sfx_5C.Snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/Sfx_5D.Snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/Sfx_5E.Snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/Sfx_5F.Snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/Sfx_60.Snd"<br />
Sfx_60_Snd:<br />
binclude "sound/Sfx_61.Snd"<br />
Sfx_61_Snd:<br />
binclude "sound/Sfx_62.Snd"<br />
Sfx_62_Snd:<br />
binclude "sound/Sfx_63.Snd"<br />
Sfx_63_Snd:<br />
binclude "sound/Sfx_64.Snd"<br />
Sfx_64_Snd:<br />
binclude "sound/Sfx_65.Snd"<br />
Sfx_65_Snd:<br />
binclude "sound/Sfx_66.Snd"<br />
Sfx_66_Snd:<br />
binclude "sound/Sfx_67.Snd"<br />
Sfx_67_Snd:<br />
binclude "sound/Sfx_68.Snd"<br />
Sfx_68_Snd:<br />
binclude "sound/Sfx_69.Snd"<br />
Sfx_69_Snd:<br />
binclude "sound/Sfx_6A.Snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/Sfx_6B.Snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/Sfx_6C.Snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/Sfx_6D.Snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/Sfx_6E.Snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/Sfx_6F.Snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/Sfx_70.Snd"<br />
Sfx_70_Snd:<br />
binclude "sound/Sfx_71.Snd"<br />
Sfx_71_Snd:<br />
binclude "sound/Sfx_72.Snd"<br />
Sfx_72_Snd:<br />
binclude "sound/Sfx_73.Snd"<br />
Sfx_73_Snd:<br />
binclude "sound/Sfx_74.Snd"<br />
Sfx_74_Snd:<br />
binclude "sound/Sfx_75.Snd"<br />
Sfx_75_Snd:<br />
binclude "sound/Sfx_76.Snd"<br />
Sfx_76_Snd:<br />
binclude "sound/Sfx_77.Snd"<br />
Sfx_77_Snd:<br />
binclude "sound/Sfx_78.Snd"<br />
Sfx_78_Snd:<br />
binclude "sound/Sfx_79.Snd"<br />
Sfx_79_Snd:<br />
binclude "sound/Sfx_7A.Snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/Sfx_7B.Snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/Sfx_7C.Snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/Sfx_7D.Snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/Sfx_7E.Snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/Sfx_7F.Snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/Sfx_80.Snd"<br />
Sfx_80_Snd:<br />
binclude "sound/Sfx_81.Snd"<br />
Sfx_81_Snd:<br />
binclude "sound/Sfx_82.Snd"<br />
Sfx_82_Snd:<br />
binclude "sound/Sfx_83.Snd"<br />
Sfx_83_Snd:<br />
binclude "sound/Sfx_84.Snd"<br />
Sfx_84_Snd:<br />
binclude "sound/Sfx_85.Snd"<br />
Sfx_85_Snd:<br />
binclude "sound/Sfx_86.Snd"<br />
Sfx_86_Snd:<br />
binclude "sound/Sfx_87.Snd"<br />
Sfx_87_Snd:<br />
binclude "sound/Sfx_88.Snd"<br />
Sfx_88_Snd:<br />
binclude "sound/Sfx_89.Snd"<br />
Sfx_89_Snd:<br />
binclude "sound/Sfx_8A.Snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/Sfx_8B.Snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/Sfx_8C.Snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/Sfx_8D.Snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/Sfx_8E.Snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/Sfx_8F.Snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/Sfx_90.Snd"<br />
Sfx_90_Snd:<br />
binclude "sound/Sfx_91.Snd"<br />
Sfx_91_Snd:<br />
binclude "sound/Sfx_92.Snd"<br />
Sfx_92_Snd:<br />
binclude "sound/Sfx_93.Snd"<br />
Sfx_93_Snd:<br />
binclude "sound/Sfx_94.Snd"<br />
Sfx_94_Snd:<br />
binclude "sound/Sfx_95.Snd"<br />
Sfx_95_Snd:<br />
binclude "sound/Sfx_96.Snd"<br />
Sfx_96_Snd:<br />
binclude "sound/Sfx_97.Snd"<br />
Sfx_97_Snd:<br />
binclude "sound/Sfx_98.Snd"<br />
Sfx_98_Snd:<br />
binclude "sound/Sfx_99.Snd"<br />
Sfx_99_Snd:<br />
binclude "sound/Sfx_9A.Snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/Sfx_9B.Snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/Sfx_9C.Snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/Sfx_9D.Snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/Sfx_9E.Snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/Sfx_9F.Snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/Sfx_A0.Snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/Sfx_A1.Snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/Sfx_A2.Snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/Sfx_A3.Snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/Sfx_A4.Snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/Sfx_A5.Snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/Sfx_A6.Snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/Sfx_A7.Snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/Sfx_A8.Snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/Sfx_A9.Snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/Sfx_AA.Snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/Sfx_AB.Snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/Sfx_AC.Snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/Sfx_AD.Snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/Sfx_AE.Snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/Sfx_AF.Snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/Sfx_B0.Snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/Sfx_B1.Snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/Sfx_B2.Snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/Sfx_B3.Snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/Sfx_B4.Snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/Sfx_B5.Snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/Sfx_B6.Snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/Sfx_B7.Snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/Sfx_B8.Snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/Sfx_B9.Snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/Sfx_BA.Snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/Sfx_BB.Snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/Sfx_BC.Snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/Sfx_BD.Snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/Sfx_BE.Snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/Sfx_BF.Snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/Sfx_C0.Snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/Sfx_C1.Snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/Sfx_C2.Snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/Sfx_C3.Snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/Sfx_C4.Snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/Sfx_C5.Snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/Sfx_C6.Snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/Sfx_C7.Snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/Sfx_C8.Snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/Sfx_C9.Snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/Sfx_CA.Snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/Sfx_CB.Snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/Sfx_CC.Snd"<br />
Sfx_CC_Snd:<br />
binclude "sound/Sfx_CD.Snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/Sfx_CE.Snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/Sfx_CF.Snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/Sfx_D0.Snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/Sfx_D1.Snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/Sfx_D2.Snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/Sfx_D3.Snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/Sfx_D4.Snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/Sfx_D5.Snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/Sfx_D6.Snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/Sfx_D7.Snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/Sfx_D8.Snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/Sfx_D9.Snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/Sfx_DA.Snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/Sfx_DB.Snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/Sfx_DC.Snd"<br />
soundBankEnd := *<br />
<br />
if dacBank0End > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{dacBank0End-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-dacBank0End} bytes free at end."<br />
endif<br />
<br />
if dacBank1End > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{dacBank1End-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-dacBank1End} bytes free at end."<br />
endif<br />
<br />
if dacBank2End > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{bank2End-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-bank2End} bytes free at end."<br />
endif<br />
<br />
if bank0End > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{bank0End-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-bank0End} bytes free at end."<br />
endif<br />
<br />
if bank1End > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{bank1End-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-bank1End} bytes free at end."<br />
endif<br />
<br />
if bank2End > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{bank2End-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-bank2End} bytes free at end."<br />
endif<br />
<br />
if bank3End > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{bank3End-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-bank3End} bytes free at end."<br />
endif<br />
<br />
if soundBankEnd > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{soundBankEnd-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-soundBankEnd} bytes free at end."<br />
endif<br />
</asm><br />
<br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
+ stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
now find:<br />
<asm><br />
; loc_541A:<br />
SpecialStage_Unpause:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
move.b #8,(Vint_routine).w<br />
bra.w WaitForVint<br />
</asm><br />
replace the line right after the label with:<br />
<asm><br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
</asm><br />
<br />
==Driver Data Files==<br />
then unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
; Music IDs<br />
offset := zMasterPlaylist<br />
ptrsize := 1<br />
idstart := $81<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy zMusIDPtr in the $80 slot<br />
<br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 1<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
; Sound IDs<br />
offset := SoundIndex<br />
ptrsize := 2<br />
idstart := $A0<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy SndPtr in the $80 slot<br />
<br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SndID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
<br />
==Fixing the special sounds==<br />
Any time you update the sound driver, you need to change these sounds:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_StopSFX = $78+$80 ; F8<br />
MusID_FadeOut = $79+$80 ; F9<br />
SndID_SegaSound = $7A+$80 ; FA<br />
MusID_SpeedUp = $7B+$80 ; FB<br />
MusID_SlowDown = $7C+$80 ; FC<br />
MusID_Stop = $7D+$80 ; FD<br />
MusID_Pause = $7E+$80 ; FE<br />
MusID_Unpause = $7F+$80 ; FF<br />
</asm><br />
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 sonic3 driver as far as I know, so we will treat it as a compat id. the resulting lists will look like THIS:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_FadeOut = $E1<br />
MusID_Stop = $E0<br />
SndID_SegaSound = $FF<br />
<br />
;these are here for compatibility<br />
MusID_StopSFX = MusID_Stop<br />
<br />
;Tempo IDs<br />
Tempo_SpeedUp = 8<br />
Tempo_SlowDown = 0<br />
</asm><br />
<br />
==Fixing the Sneaker==<br />
I bet you expected that the sneaker would be fixed with the previous section, but no, sonic3 uses a different routine for the sneaker speed up / slow down.<br />
first we will go to '''super_shoes+'''. What we will see is this:<br />
<asm><br />
move.w #MusID_SpeedUp,d0<br />
jmp (PlayMusic).l ; Speed up tempo<br />
</asm><br />
that will not work the way we want it to. It will actually cause a compiler error, so we need to fix it:<br />
<asm><br />
move.w #Tempo_SpeedUp,d0<br />
jmp (SetTempo).l ; Speed up tempo<br />
</asm><br />
the music now speeds up, but we need it to slow down when the sneaker wears off, so find:<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #MusID_SlowDown,d0 ; Slow down tempo<br />
jmp (PlayMusic).l<br />
;</asm><br />
there are 2 lines that need editing here, just as before.<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #Tempo_SlowDown,d0 ; Slow down tempo<br />
jmp (SetTempo).l<br />
</asm><br />
do the exact same thing to '''Obj02_ChkShoes'''. Now the sneakers should be working as intended.<br />
==Optional: Apply new sounds to existing objects==<br />
''(coming soon)''<br />
<br />
==Optional: Fix the 2p vs screen==<br />
''(coming soon)''<br />
<br />
==Optional: Fix the sound test==<br />
''(coming soon)''<br />
<br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208779
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-26T08:42:42Z
<p>Kram1024: /* Upgrading the SoundDriverLoad Routine */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
dacBank0End := *<br />
<br />
align $8000<br />
dacBank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
dacBank1End := *<br />
align $8000<br />
<br />
align $8000<br />
dacBank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
dacBank2End := *<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
bank0End := *<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
bank1End := *<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
bank2End := *<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
bank3End := *<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/Sfx_34.Snd"<br />
Sfx_34_Snd:<br />
binclude "sound/Sfx_35.Snd"<br />
Sfx_35_Snd:<br />
binclude "sound/Sfx_36.Snd"<br />
Sfx_36_Snd:<br />
binclude "sound/Sfx_37.Snd"<br />
Sfx_37_Snd:<br />
binclude "sound/Sfx_38.Snd"<br />
Sfx_38_Snd:<br />
binclude "sound/Sfx_39.Snd"<br />
Sfx_39_Snd:<br />
binclude "sound/Sfx_3A.Snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/Sfx_3B.Snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/Sfx_3C.Snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/Sfx_3D.Snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/Sfx_3E.Snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/Sfx_3F.Snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/Sfx_40.Snd"<br />
Sfx_40_Snd:<br />
binclude "sound/Sfx_41.Snd"<br />
Sfx_41_Snd:<br />
binclude "sound/Sfx_42.Snd"<br />
Sfx_42_Snd:<br />
binclude "sound/Sfx_43.Snd"<br />
Sfx_43_Snd:<br />
binclude "sound/Sfx_44.Snd"<br />
Sfx_44_Snd:<br />
binclude "sound/Sfx_45.Snd"<br />
Sfx_45_Snd:<br />
binclude "sound/Sfx_46.Snd"<br />
Sfx_46_Snd:<br />
binclude "sound/Sfx_47.Snd"<br />
Sfx_47_Snd:<br />
binclude "sound/Sfx_48.Snd"<br />
Sfx_48_Snd:<br />
binclude "sound/Sfx_49.Snd"<br />
Sfx_49_Snd:<br />
binclude "sound/Sfx_4A.Snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/Sfx_4B.Snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/Sfx_4C.Snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/Sfx_4D.Snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/Sfx_4E.Snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/Sfx_4F.Snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/Sfx_50.Snd"<br />
Sfx_50_Snd:<br />
binclude "sound/Sfx_51.Snd"<br />
Sfx_51_Snd:<br />
binclude "sound/Sfx_52.Snd"<br />
Sfx_52_Snd:<br />
binclude "sound/Sfx_53.Snd"<br />
Sfx_53_Snd:<br />
binclude "sound/Sfx_54.Snd"<br />
Sfx_54_Snd:<br />
binclude "sound/Sfx_55.Snd"<br />
Sfx_55_Snd:<br />
binclude "sound/Sfx_56.Snd"<br />
Sfx_56_Snd:<br />
binclude "sound/Sfx_57.Snd"<br />
Sfx_57_Snd:<br />
binclude "sound/Sfx_58.Snd"<br />
Sfx_58_Snd:<br />
binclude "sound/Sfx_59.Snd"<br />
Sfx_59_Snd:<br />
binclude "sound/Sfx_5A.Snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/Sfx_5B.Snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/Sfx_5C.Snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/Sfx_5D.Snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/Sfx_5E.Snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/Sfx_5F.Snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/Sfx_60.Snd"<br />
Sfx_60_Snd:<br />
binclude "sound/Sfx_61.Snd"<br />
Sfx_61_Snd:<br />
binclude "sound/Sfx_62.Snd"<br />
Sfx_62_Snd:<br />
binclude "sound/Sfx_63.Snd"<br />
Sfx_63_Snd:<br />
binclude "sound/Sfx_64.Snd"<br />
Sfx_64_Snd:<br />
binclude "sound/Sfx_65.Snd"<br />
Sfx_65_Snd:<br />
binclude "sound/Sfx_66.Snd"<br />
Sfx_66_Snd:<br />
binclude "sound/Sfx_67.Snd"<br />
Sfx_67_Snd:<br />
binclude "sound/Sfx_68.Snd"<br />
Sfx_68_Snd:<br />
binclude "sound/Sfx_69.Snd"<br />
Sfx_69_Snd:<br />
binclude "sound/Sfx_6A.Snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/Sfx_6B.Snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/Sfx_6C.Snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/Sfx_6D.Snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/Sfx_6E.Snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/Sfx_6F.Snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/Sfx_70.Snd"<br />
Sfx_70_Snd:<br />
binclude "sound/Sfx_71.Snd"<br />
Sfx_71_Snd:<br />
binclude "sound/Sfx_72.Snd"<br />
Sfx_72_Snd:<br />
binclude "sound/Sfx_73.Snd"<br />
Sfx_73_Snd:<br />
binclude "sound/Sfx_74.Snd"<br />
Sfx_74_Snd:<br />
binclude "sound/Sfx_75.Snd"<br />
Sfx_75_Snd:<br />
binclude "sound/Sfx_76.Snd"<br />
Sfx_76_Snd:<br />
binclude "sound/Sfx_77.Snd"<br />
Sfx_77_Snd:<br />
binclude "sound/Sfx_78.Snd"<br />
Sfx_78_Snd:<br />
binclude "sound/Sfx_79.Snd"<br />
Sfx_79_Snd:<br />
binclude "sound/Sfx_7A.Snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/Sfx_7B.Snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/Sfx_7C.Snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/Sfx_7D.Snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/Sfx_7E.Snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/Sfx_7F.Snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/Sfx_80.Snd"<br />
Sfx_80_Snd:<br />
binclude "sound/Sfx_81.Snd"<br />
Sfx_81_Snd:<br />
binclude "sound/Sfx_82.Snd"<br />
Sfx_82_Snd:<br />
binclude "sound/Sfx_83.Snd"<br />
Sfx_83_Snd:<br />
binclude "sound/Sfx_84.Snd"<br />
Sfx_84_Snd:<br />
binclude "sound/Sfx_85.Snd"<br />
Sfx_85_Snd:<br />
binclude "sound/Sfx_86.Snd"<br />
Sfx_86_Snd:<br />
binclude "sound/Sfx_87.Snd"<br />
Sfx_87_Snd:<br />
binclude "sound/Sfx_88.Snd"<br />
Sfx_88_Snd:<br />
binclude "sound/Sfx_89.Snd"<br />
Sfx_89_Snd:<br />
binclude "sound/Sfx_8A.Snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/Sfx_8B.Snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/Sfx_8C.Snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/Sfx_8D.Snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/Sfx_8E.Snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/Sfx_8F.Snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/Sfx_90.Snd"<br />
Sfx_90_Snd:<br />
binclude "sound/Sfx_91.Snd"<br />
Sfx_91_Snd:<br />
binclude "sound/Sfx_92.Snd"<br />
Sfx_92_Snd:<br />
binclude "sound/Sfx_93.Snd"<br />
Sfx_93_Snd:<br />
binclude "sound/Sfx_94.Snd"<br />
Sfx_94_Snd:<br />
binclude "sound/Sfx_95.Snd"<br />
Sfx_95_Snd:<br />
binclude "sound/Sfx_96.Snd"<br />
Sfx_96_Snd:<br />
binclude "sound/Sfx_97.Snd"<br />
Sfx_97_Snd:<br />
binclude "sound/Sfx_98.Snd"<br />
Sfx_98_Snd:<br />
binclude "sound/Sfx_99.Snd"<br />
Sfx_99_Snd:<br />
binclude "sound/Sfx_9A.Snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/Sfx_9B.Snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/Sfx_9C.Snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/Sfx_9D.Snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/Sfx_9E.Snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/Sfx_9F.Snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/Sfx_A0.Snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/Sfx_A1.Snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/Sfx_A2.Snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/Sfx_A3.Snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/Sfx_A4.Snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/Sfx_A5.Snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/Sfx_A6.Snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/Sfx_A7.Snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/Sfx_A8.Snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/Sfx_A9.Snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/Sfx_AA.Snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/Sfx_AB.Snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/Sfx_AC.Snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/Sfx_AD.Snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/Sfx_AE.Snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/Sfx_AF.Snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/Sfx_B0.Snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/Sfx_B1.Snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/Sfx_B2.Snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/Sfx_B3.Snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/Sfx_B4.Snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/Sfx_B5.Snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/Sfx_B6.Snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/Sfx_B7.Snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/Sfx_B8.Snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/Sfx_B9.Snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/Sfx_BA.Snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/Sfx_BB.Snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/Sfx_BC.Snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/Sfx_BD.Snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/Sfx_BE.Snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/Sfx_BF.Snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/Sfx_C0.Snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/Sfx_C1.Snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/Sfx_C2.Snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/Sfx_C3.Snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/Sfx_C4.Snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/Sfx_C5.Snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/Sfx_C6.Snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/Sfx_C7.Snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/Sfx_C8.Snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/Sfx_C9.Snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/Sfx_CA.Snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/Sfx_CB.Snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/Sfx_CC.Snd"<br />
Sfx_CC_Snd:<br />
binclude "sound/Sfx_CD.Snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/Sfx_CE.Snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/Sfx_CF.Snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/Sfx_D0.Snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/Sfx_D1.Snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/Sfx_D2.Snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/Sfx_D3.Snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/Sfx_D4.Snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/Sfx_D5.Snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/Sfx_D6.Snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/Sfx_D7.Snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/Sfx_D8.Snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/Sfx_D9.Snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/Sfx_DA.Snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/Sfx_DB.Snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/Sfx_DC.Snd"<br />
soundBankEnd := *<br />
<br />
if dacBank0End > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{dacBank0End-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-dacBank0End} bytes free at end."<br />
endif<br />
<br />
if dacBank1End > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{dacBank1End-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-dacBank1End} bytes free at end."<br />
endif<br />
<br />
if dacBank2End > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{bank2End-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-bank2End} bytes free at end."<br />
endif<br />
<br />
if bank0End > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{bank0End-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-bank0End} bytes free at end."<br />
endif<br />
<br />
if bank1End > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{bank1End-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-bank1End} bytes free at end."<br />
endif<br />
<br />
if bank2End > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{bank2End-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-bank2End} bytes free at end."<br />
endif<br />
<br />
if bank3End > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{bank3End-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-bank3End} bytes free at end."<br />
endif<br />
<br />
if soundBankEnd > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{soundBankEnd-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-soundBankEnd} bytes free at end."<br />
endif<br />
</asm><br />
<br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
+ stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
now find:<br />
<asm><br />
; loc_541A:<br />
SpecialStage_Unpause:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
move.b #8,(Vint_routine).w<br />
bra.w WaitForVint<br />
</asm><br />
replace the line right after the label with:<br />
<asm><br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
</asm><br />
<br />
==Driver Data Files==<br />
then unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
; Music IDs<br />
offset := zMasterPlaylist<br />
ptrsize := 1<br />
idstart := $81<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy zMusIDPtr in the $80 slot<br />
<br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 1<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
; Sound IDs<br />
offset := SoundIndex<br />
ptrsize := 2<br />
idstart := $A0<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy SndPtr in the $80 slot<br />
<br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SndID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
<br />
==Fixing the special sounds==<br />
Any time you update the sound driver, you need to change these sounds:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_StopSFX = $78+$80 ; F8<br />
MusID_FadeOut = $79+$80 ; F9<br />
SndID_SegaSound = $7A+$80 ; FA<br />
MusID_SpeedUp = $7B+$80 ; FB<br />
MusID_SlowDown = $7C+$80 ; FC<br />
MusID_Stop = $7D+$80 ; FD<br />
MusID_Pause = $7E+$80 ; FE<br />
MusID_Unpause = $7F+$80 ; FF<br />
</asm><br />
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 sonic3 driver as far as I know, so we will treat it as a compat id. the resulting lists will look like THIS:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_FadeOut = $E1<br />
MusID_Stop = $E0<br />
SndID_SegaSound = $FF<br />
<br />
;these are here for compatibility<br />
MusID_StopSFX = MusID_Stop<br />
<br />
;Tempo IDs<br />
Tempo_SpeedUp = 8<br />
Tempo_SlowDown = 0<br />
</asm><br />
<br />
==Fixing the Sneaker==<br />
I bet you expected that the sneaker would be fixed with the previous section, but no, sonic3 uses a different routine for the sneaker speed up / slow down.<br />
first we will go to '''super_shoes+'''. What we will see is this:<br />
<asm><br />
move.w #MusID_SpeedUp,d0<br />
jmp (PlayMusic).l ; Speed up tempo<br />
</asm><br />
that will not work the way we want it to. It will actually cause a compiler error, so we need to fix it:<br />
<asm><br />
move.w #Tempo_SpeedUp,d0<br />
jmp (SetTempo).l ; Speed up tempo<br />
</asm><br />
the music now speeds up, but we need it to slow down when the sneaker wears off, so find:<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #MusID_SlowDown,d0 ; Slow down tempo<br />
jmp (PlayMusic).l<br />
;</asm><br />
there are 2 lines that need editing here, just as before.<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #Tempo_SlowDown,d0 ; Slow down tempo<br />
jmp (SetTempo).l<br />
</asm><br />
do the exact same thing to '''Obj02_ChkShoes'''. Now the sneakers should be working as intended.<br />
==Optional: Fix the level select==<br />
''(coming soon)''<br />
<br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208778
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-26T08:39:09Z
<p>Kram1024: /* Sound Effects */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
+ stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
now find:<br />
<asm><br />
; loc_541A:<br />
SpecialStage_Unpause:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
move.b #8,(Vint_routine).w<br />
bra.w WaitForVint<br />
</asm><br />
replace the line right after the label with:<br />
<asm><br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
</asm><br />
<br />
==Driver Data Files==<br />
then unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
; Music IDs<br />
offset := zMasterPlaylist<br />
ptrsize := 1<br />
idstart := $81<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy zMusIDPtr in the $80 slot<br />
<br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 1<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
; Sound IDs<br />
offset := SoundIndex<br />
ptrsize := 2<br />
idstart := $A0<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy SndPtr in the $80 slot<br />
<br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SndID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
<br />
==Fixing the special sounds==<br />
Any time you update the sound driver, you need to change these sounds:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_StopSFX = $78+$80 ; F8<br />
MusID_FadeOut = $79+$80 ; F9<br />
SndID_SegaSound = $7A+$80 ; FA<br />
MusID_SpeedUp = $7B+$80 ; FB<br />
MusID_SlowDown = $7C+$80 ; FC<br />
MusID_Stop = $7D+$80 ; FD<br />
MusID_Pause = $7E+$80 ; FE<br />
MusID_Unpause = $7F+$80 ; FF<br />
</asm><br />
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 sonic3 driver as far as I know, so we will treat it as a compat id. the resulting lists will look like THIS:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_FadeOut = $E1<br />
MusID_Stop = $E0<br />
SndID_SegaSound = $FF<br />
<br />
;these are here for compatibility<br />
MusID_StopSFX = MusID_Stop<br />
<br />
;Tempo IDs<br />
Tempo_SpeedUp = 8<br />
Tempo_SlowDown = 0<br />
</asm><br />
<br />
==Fixing the Sneaker==<br />
I bet you expected that the sneaker would be fixed with the previous section, but no, sonic3 uses a different routine for the sneaker speed up / slow down.<br />
first we will go to '''super_shoes+'''. What we will see is this:<br />
<asm><br />
move.w #MusID_SpeedUp,d0<br />
jmp (PlayMusic).l ; Speed up tempo<br />
</asm><br />
that will not work the way we want it to. It will actually cause a compiler error, so we need to fix it:<br />
<asm><br />
move.w #Tempo_SpeedUp,d0<br />
jmp (SetTempo).l ; Speed up tempo<br />
</asm><br />
the music now speeds up, but we need it to slow down when the sneaker wears off, so find:<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #MusID_SlowDown,d0 ; Slow down tempo<br />
jmp (PlayMusic).l<br />
;</asm><br />
there are 2 lines that need editing here, just as before.<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #Tempo_SlowDown,d0 ; Slow down tempo<br />
jmp (SetTempo).l<br />
</asm><br />
do the exact same thing to '''Obj02_ChkShoes'''. Now the sneakers should be working as intended.<br />
==Optional: Fix the level select==<br />
''(coming soon)''<br />
<br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208777
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-26T08:35:40Z
<p>Kram1024: /* Music */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
+ stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
now find:<br />
<asm><br />
; loc_541A:<br />
SpecialStage_Unpause:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
move.b #8,(Vint_routine).w<br />
bra.w WaitForVint<br />
</asm><br />
replace the line right after the label with:<br />
<asm><br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
</asm><br />
<br />
==Driver Data Files==<br />
then unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
; Music IDs<br />
offset := zMasterPlaylist<br />
ptrsize := 1<br />
idstart := $81<br />
; $80 is reserved for silence, so if you make idstart $80 or less,<br />
; you may need to insert a dummy zMusIDPtr in the $80 slot<br />
<br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 1<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SNDID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
==Fixing the special sounds==<br />
Any time you update the sound driver, you need to change these sounds:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_StopSFX = $78+$80 ; F8<br />
MusID_FadeOut = $79+$80 ; F9<br />
SndID_SegaSound = $7A+$80 ; FA<br />
MusID_SpeedUp = $7B+$80 ; FB<br />
MusID_SlowDown = $7C+$80 ; FC<br />
MusID_Stop = $7D+$80 ; FD<br />
MusID_Pause = $7E+$80 ; FE<br />
MusID_Unpause = $7F+$80 ; FF<br />
</asm><br />
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 sonic3 driver as far as I know, so we will treat it as a compat id. the resulting lists will look like THIS:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_FadeOut = $E1<br />
MusID_Stop = $E0<br />
SndID_SegaSound = $FF<br />
<br />
;these are here for compatibility<br />
MusID_StopSFX = MusID_Stop<br />
<br />
;Tempo IDs<br />
Tempo_SpeedUp = 8<br />
Tempo_SlowDown = 0<br />
</asm><br />
<br />
==Fixing the Sneaker==<br />
I bet you expected that the sneaker would be fixed with the previous section, but no, sonic3 uses a different routine for the sneaker speed up / slow down.<br />
first we will go to '''super_shoes+'''. What we will see is this:<br />
<asm><br />
move.w #MusID_SpeedUp,d0<br />
jmp (PlayMusic).l ; Speed up tempo<br />
</asm><br />
that will not work the way we want it to. It will actually cause a compiler error, so we need to fix it:<br />
<asm><br />
move.w #Tempo_SpeedUp,d0<br />
jmp (SetTempo).l ; Speed up tempo<br />
</asm><br />
the music now speeds up, but we need it to slow down when the sneaker wears off, so find:<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #MusID_SlowDown,d0 ; Slow down tempo<br />
jmp (PlayMusic).l<br />
;</asm><br />
there are 2 lines that need editing here, just as before.<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #Tempo_SlowDown,d0 ; Slow down tempo<br />
jmp (SetTempo).l<br />
</asm><br />
do the exact same thing to '''Obj02_ChkShoes'''. Now the sneakers should be working as intended.<br />
==Optional: Fix the level select==<br />
''(coming soon)''<br />
<br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208776
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-26T08:33:32Z
<p>Kram1024: /* Upgrade Music Routine */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
+ stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
now find:<br />
<asm><br />
; loc_541A:<br />
SpecialStage_Unpause:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
move.b #8,(Vint_routine).w<br />
bra.w WaitForVint<br />
</asm><br />
replace the line right after the label with:<br />
<asm><br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
</asm><br />
<br />
==Driver Data Files==<br />
then unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 0<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SNDID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
==Fixing the special sounds==<br />
Any time you update the sound driver, you need to change these sounds:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_StopSFX = $78+$80 ; F8<br />
MusID_FadeOut = $79+$80 ; F9<br />
SndID_SegaSound = $7A+$80 ; FA<br />
MusID_SpeedUp = $7B+$80 ; FB<br />
MusID_SlowDown = $7C+$80 ; FC<br />
MusID_Stop = $7D+$80 ; FD<br />
MusID_Pause = $7E+$80 ; FE<br />
MusID_Unpause = $7F+$80 ; FF<br />
</asm><br />
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 sonic3 driver as far as I know, so we will treat it as a compat id. the resulting lists will look like THIS:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_FadeOut = $E1<br />
MusID_Stop = $E0<br />
SndID_SegaSound = $FF<br />
<br />
;these are here for compatibility<br />
MusID_StopSFX = MusID_Stop<br />
<br />
;Tempo IDs<br />
Tempo_SpeedUp = 8<br />
Tempo_SlowDown = 0<br />
</asm><br />
<br />
==Fixing the Sneaker==<br />
I bet you expected that the sneaker would be fixed with the previous section, but no, sonic3 uses a different routine for the sneaker speed up / slow down.<br />
first we will go to '''super_shoes+'''. What we will see is this:<br />
<asm><br />
move.w #MusID_SpeedUp,d0<br />
jmp (PlayMusic).l ; Speed up tempo<br />
</asm><br />
that will not work the way we want it to. It will actually cause a compiler error, so we need to fix it:<br />
<asm><br />
move.w #Tempo_SpeedUp,d0<br />
jmp (SetTempo).l ; Speed up tempo<br />
</asm><br />
the music now speeds up, but we need it to slow down when the sneaker wears off, so find:<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #MusID_SlowDown,d0 ; Slow down tempo<br />
jmp (PlayMusic).l<br />
;</asm><br />
there are 2 lines that need editing here, just as before.<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #Tempo_SlowDown,d0 ; Slow down tempo<br />
jmp (SetTempo).l<br />
</asm><br />
do the exact same thing to '''Obj02_ChkShoes'''. Now the sneakers should be working as intended.<br />
==Optional: Fix the level select==<br />
''(coming soon)''<br />
<br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208775
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-26T08:32:16Z
<p>Kram1024: /* Upgrading Pause / Resume Routines */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
now find:<br />
<asm><br />
; loc_541A:<br />
SpecialStage_Unpause:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
move.b #8,(Vint_routine).w<br />
bra.w WaitForVint<br />
</asm><br />
replace the line right after the label with:<br />
<asm><br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
</asm><br />
<br />
==Driver Data Files==<br />
then unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 0<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SNDID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
==Fixing the special sounds==<br />
Any time you update the sound driver, you need to change these sounds:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_StopSFX = $78+$80 ; F8<br />
MusID_FadeOut = $79+$80 ; F9<br />
SndID_SegaSound = $7A+$80 ; FA<br />
MusID_SpeedUp = $7B+$80 ; FB<br />
MusID_SlowDown = $7C+$80 ; FC<br />
MusID_Stop = $7D+$80 ; FD<br />
MusID_Pause = $7E+$80 ; FE<br />
MusID_Unpause = $7F+$80 ; FF<br />
</asm><br />
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 sonic3 driver as far as I know, so we will treat it as a compat id. the resulting lists will look like THIS:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_FadeOut = $E1<br />
MusID_Stop = $E0<br />
SndID_SegaSound = $FF<br />
<br />
;these are here for compatibility<br />
MusID_StopSFX = MusID_Stop<br />
<br />
;Tempo IDs<br />
Tempo_SpeedUp = 8<br />
Tempo_SlowDown = 0<br />
</asm><br />
<br />
==Fixing the Sneaker==<br />
I bet you expected that the sneaker would be fixed with the previous section, but no, sonic3 uses a different routine for the sneaker speed up / slow down.<br />
first we will go to '''super_shoes+'''. What we will see is this:<br />
<asm><br />
move.w #MusID_SpeedUp,d0<br />
jmp (PlayMusic).l ; Speed up tempo<br />
</asm><br />
that will not work the way we want it to. It will actually cause a compiler error, so we need to fix it:<br />
<asm><br />
move.w #Tempo_SpeedUp,d0<br />
jmp (SetTempo).l ; Speed up tempo<br />
</asm><br />
the music now speeds up, but we need it to slow down when the sneaker wears off, so find:<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #MusID_SlowDown,d0 ; Slow down tempo<br />
jmp (PlayMusic).l<br />
;</asm><br />
there are 2 lines that need editing here, just as before.<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #Tempo_SlowDown,d0 ; Slow down tempo<br />
jmp (SetTempo).l<br />
</asm><br />
do the exact same thing to '''Obj02_ChkShoes'''. Now the sneakers should be working as intended.<br />
==Optional: Fix the level select==<br />
''(coming soon)''<br />
<br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208774
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-26T07:00:01Z
<p>Kram1024: /* Upgrading Pause / Resume Routines */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #$GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
now find:<br />
<asm><br />
; loc_541A:<br />
SpecialStage_Unpause:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
move.b #8,(Vint_routine).w<br />
bra.w WaitForVint<br />
</asm><br />
replace the line right after the label with:<br />
<asm><br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
</asm><br />
<br />
==Driver Data Files==<br />
then unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 0<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SNDID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
==Fixing the special sounds==<br />
Any time you update the sound driver, you need to change these sounds:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_StopSFX = $78+$80 ; F8<br />
MusID_FadeOut = $79+$80 ; F9<br />
SndID_SegaSound = $7A+$80 ; FA<br />
MusID_SpeedUp = $7B+$80 ; FB<br />
MusID_SlowDown = $7C+$80 ; FC<br />
MusID_Stop = $7D+$80 ; FD<br />
MusID_Pause = $7E+$80 ; FE<br />
MusID_Unpause = $7F+$80 ; FF<br />
</asm><br />
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 sonic3 driver as far as I know, so we will treat it as a compat id. the resulting lists will look like THIS:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_FadeOut = $E1<br />
MusID_Stop = $E0<br />
SndID_SegaSound = $FF<br />
<br />
;these are here for compatibility<br />
MusID_StopSFX = MusID_Stop<br />
<br />
;Tempo IDs<br />
Tempo_SpeedUp = 8<br />
Tempo_SlowDown = 0<br />
</asm><br />
<br />
==Fixing the Sneaker==<br />
I bet you expected that the sneaker would be fixed with the previous section, but no, sonic3 uses a different routine for the sneaker speed up / slow down.<br />
first we will go to '''super_shoes+'''. What we will see is this:<br />
<asm><br />
move.w #MusID_SpeedUp,d0<br />
jmp (PlayMusic).l ; Speed up tempo<br />
</asm><br />
that will not work the way we want it to. It will actually cause a compiler error, so we need to fix it:<br />
<asm><br />
move.w #Tempo_SpeedUp,d0<br />
jmp (SetTempo).l ; Speed up tempo<br />
</asm><br />
the music now speeds up, but we need it to slow down when the sneaker wears off, so find:<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #MusID_SlowDown,d0 ; Slow down tempo<br />
jmp (PlayMusic).l<br />
;</asm><br />
there are 2 lines that need editing here, just as before.<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #Tempo_SlowDown,d0 ; Slow down tempo<br />
jmp (SetTempo).l<br />
</asm><br />
do the exact same thing to '''Obj02_ChkShoes'''. Now the sneakers should be working as intended.<br />
==Optional: Fix the level select==<br />
''(coming soon)''<br />
<br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208772
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-26T00:08:10Z
<p>Kram1024: /* Optional: Fix the level select */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #$GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
<br />
==Driver Data Files==<br />
then unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 0<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SNDID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
==Fixing the special sounds==<br />
Any time you update the sound driver, you need to change these sounds:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_StopSFX = $78+$80 ; F8<br />
MusID_FadeOut = $79+$80 ; F9<br />
SndID_SegaSound = $7A+$80 ; FA<br />
MusID_SpeedUp = $7B+$80 ; FB<br />
MusID_SlowDown = $7C+$80 ; FC<br />
MusID_Stop = $7D+$80 ; FD<br />
MusID_Pause = $7E+$80 ; FE<br />
MusID_Unpause = $7F+$80 ; FF<br />
</asm><br />
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 sonic3 driver as far as I know, so we will treat it as a compat id. the resulting lists will look like THIS:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_FadeOut = $E1<br />
MusID_Stop = $E0<br />
SndID_SegaSound = $FF<br />
<br />
;these are here for compatibility<br />
MusID_StopSFX = MusID_Stop<br />
<br />
;Tempo IDs<br />
Tempo_SpeedUp = 8<br />
Tempo_SlowDown = 0<br />
</asm><br />
<br />
==Fixing the Sneaker==<br />
I bet you expected that the sneaker would be fixed with the previous section, but no, sonic3 uses a different routine for the sneaker speed up / slow down.<br />
first we will go to '''super_shoes+'''. What we will see is this:<br />
<asm><br />
move.w #MusID_SpeedUp,d0<br />
jmp (PlayMusic).l ; Speed up tempo<br />
</asm><br />
that will not work the way we want it to. It will actually cause a compiler error, so we need to fix it:<br />
<asm><br />
move.w #Tempo_SpeedUp,d0<br />
jmp (SetTempo).l ; Speed up tempo<br />
</asm><br />
the music now speeds up, but we need it to slow down when the sneaker wears off, so find:<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #MusID_SlowDown,d0 ; Slow down tempo<br />
jmp (PlayMusic).l<br />
;</asm><br />
there are 2 lines that need editing here, just as before.<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #Tempo_SlowDown,d0 ; Slow down tempo<br />
jmp (SetTempo).l<br />
</asm><br />
do the exact same thing to '''Obj02_ChkShoes'''. Now the sneakers should be working as intended.<br />
==Optional: Fix the level select==<br />
''(coming soon)''<br />
<br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208771
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-26T00:05:40Z
<p>Kram1024: /* Fixing the Sneaker */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #$GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
<br />
==Driver Data Files==<br />
then unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 0<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SNDID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
==Fixing the special sounds==<br />
Any time you update the sound driver, you need to change these sounds:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_StopSFX = $78+$80 ; F8<br />
MusID_FadeOut = $79+$80 ; F9<br />
SndID_SegaSound = $7A+$80 ; FA<br />
MusID_SpeedUp = $7B+$80 ; FB<br />
MusID_SlowDown = $7C+$80 ; FC<br />
MusID_Stop = $7D+$80 ; FD<br />
MusID_Pause = $7E+$80 ; FE<br />
MusID_Unpause = $7F+$80 ; FF<br />
</asm><br />
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 sonic3 driver as far as I know, so we will treat it as a compat id. the resulting lists will look like THIS:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_FadeOut = $E1<br />
MusID_Stop = $E0<br />
SndID_SegaSound = $FF<br />
<br />
;these are here for compatibility<br />
MusID_StopSFX = MusID_Stop<br />
<br />
;Tempo IDs<br />
Tempo_SpeedUp = 8<br />
Tempo_SlowDown = 0<br />
</asm><br />
<br />
==Fixing the Sneaker==<br />
I bet you expected that the sneaker would be fixed with the previous section, but no, sonic3 uses a different routine for the sneaker speed up / slow down.<br />
first we will go to '''super_shoes+'''. What we will see is this:<br />
<asm><br />
move.w #MusID_SpeedUp,d0<br />
jmp (PlayMusic).l ; Speed up tempo<br />
</asm><br />
that will not work the way we want it to. It will actually cause a compiler error, so we need to fix it:<br />
<asm><br />
move.w #Tempo_SpeedUp,d0<br />
jmp (SetTempo).l ; Speed up tempo<br />
</asm><br />
the music now speeds up, but we need it to slow down when the sneaker wears off, so find:<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #MusID_SlowDown,d0 ; Slow down tempo<br />
jmp (PlayMusic).l<br />
;</asm><br />
there are 2 lines that need editing here, just as before.<br />
<asm><br />
; loc_1A14A:<br />
Obj01_RmvSpeed:<br />
bclr #2,status_secondary(a0)<br />
move.w #Tempo_SlowDown,d0 ; Slow down tempo<br />
jmp (SetTempo).l<br />
</asm><br />
==Optional: Fix the level select==<br />
''(coming soon)''<br />
do the exact same thing to '''Obj02_ChkShoes'''. Now the sneakers should be working as intended.<br />
<br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208770
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-25T23:56:22Z
<p>Kram1024: /* Fixing the Sneaker */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #$GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
<br />
==Driver Data Files==<br />
then unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 0<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SNDID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
==Fixing the special sounds==<br />
Any time you update the sound driver, you need to change these sounds:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_StopSFX = $78+$80 ; F8<br />
MusID_FadeOut = $79+$80 ; F9<br />
SndID_SegaSound = $7A+$80 ; FA<br />
MusID_SpeedUp = $7B+$80 ; FB<br />
MusID_SlowDown = $7C+$80 ; FC<br />
MusID_Stop = $7D+$80 ; FD<br />
MusID_Pause = $7E+$80 ; FE<br />
MusID_Unpause = $7F+$80 ; FF<br />
</asm><br />
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 sonic3 driver as far as I know, so we will treat it as a compat id. the resulting lists will look like THIS:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_FadeOut = $E1<br />
MusID_Stop = $E0<br />
SndID_SegaSound = $FF<br />
<br />
;these are here for compatibility<br />
MusID_StopSFX = MusID_Stop<br />
<br />
;Tempo IDs<br />
Tempo_SpeedUp = 8<br />
Tempo_SlowDown = 0<br />
</asm><br />
<br />
==Fixing the Sneaker==<br />
I bet you expected that the sneaker would be fixed with the previous section, but no, sonic3 uses a different routine for the sneaker speed up / slow down.<br />
first we will go to '''super_shoes+'''. What we will see is this:<br />
<asm><br />
move.w #MusID_SpeedUp,d0<br />
jmp (PlayMusic).l ; Speed up tempo<br />
</asm><br />
that will not work the way we want it to. It will actually cause a compiler error, so we need to fix it:<br />
<asm><br />
move.w #TempoID_SpeedUp,d0<br />
jmp (SetTempo).l ; Speed up tempo<br />
</asm><br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208769
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-25T23:48:12Z
<p>Kram1024: /* Fixing the special sounds */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #$GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
<br />
==Driver Data Files==<br />
then unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 0<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SNDID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
==Fixing the special sounds==<br />
Any time you update the sound driver, you need to change these sounds:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_StopSFX = $78+$80 ; F8<br />
MusID_FadeOut = $79+$80 ; F9<br />
SndID_SegaSound = $7A+$80 ; FA<br />
MusID_SpeedUp = $7B+$80 ; FB<br />
MusID_SlowDown = $7C+$80 ; FC<br />
MusID_Stop = $7D+$80 ; FD<br />
MusID_Pause = $7E+$80 ; FE<br />
MusID_Unpause = $7F+$80 ; FF<br />
</asm><br />
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 sonic3 driver as far as I know, so we will treat it as a compat id. the resulting lists will look like THIS:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_FadeOut = $E1<br />
MusID_Stop = $E0<br />
SndID_SegaSound = $FF<br />
<br />
;these are here for compatibility<br />
MusID_StopSFX = MusID_Stop<br />
<br />
;Tempo IDs<br />
Tempo_SpeedUp = 8<br />
Tempo_SlowDown = 0<br />
</asm><br />
<br />
==Fixing the Sneaker==<br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208768
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-25T23:35:54Z
<p>Kram1024: /* Fixing the Sneaker */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #$GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
<br />
==Driver Data Files==<br />
then unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 0<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SNDID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
==Fixing the special sounds==<br />
Any time you update the sound driver, you need to change these sounds:<br />
<asm><br />
; Special sound IDs<br />
<br />
MusID_StopSFX = $78+$80 ; F8<br />
MusID_FadeOut = $79+$80 ; F9<br />
SndID_SegaSound = $7A+$80 ; FA<br />
MusID_SpeedUp = $7B+$80 ; FB<br />
MusID_SlowDown = $7C+$80 ; FC<br />
MusID_Stop = $7D+$80 ; FD<br />
MusID_Pause = $7E+$80 ; FE<br />
MusID_Unpause = $7F+$80 ; FF<br />
</asm><br />
==Fixing the Sneaker==<br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208767
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-25T22:09:19Z
<p>Kram1024: /* Sound Effects */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to Use Sonic 3/K/3K Sound System==<br />
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.<br />
<br />
===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt===<br />
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.<br />
We will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br />
*'''VintSub0'''<br />
*'''Loc_54A'''<br />
*'''Vint0_noWater''' (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)<br />
*'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br />
*'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br />
*'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br />
*'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br />
*'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way.<br />
<br />
==Upgrading the SoundDriverLoad Routine==<br />
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.<br />
<br />
Delete everything from SoundDriverLoad until the line "; end of 'ROM'"<br />
<br />
In its place, paste this:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===Upgrade Sound Routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume Routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #$GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
<br />
==Driver Data Files==<br />
then unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music and Sound Effects==<br />
Now we will open s2.constants.asm.<br />
===Music===<br />
Go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it.<br />
<asm><br />
MusID__First = 0<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
; for compatibility with Sonic 2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
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)<br />
===Sound Effects===<br />
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.<br />
We want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
the fixed version is below:<br />
<asm><br />
SndID__First = $33<br />
SndID_RingRight = $33<br />
SndID_RingLeft = $34<br />
SndID_Hurt = $35<br />
SndID_Skidding = $36<br />
SndID_HurtBySpikes = $37<br />
SndID_InhalingBubble = $38<br />
SndID_Splash = $39<br />
SndID_Shield = $3A<br />
SndID_Drown = $3B<br />
SndID_Roll = $3C<br />
SndID_Explosion = $3D<br />
SndID_ShieldFire = $3E<br />
SndID_ShieldWater = $3F<br />
SndID_UnkSpark = $40<br />
SndID_ShieldMagnet = $41<br />
SndID_ShieldInstant = $42<br />
SndID_ShieldFAction = $43<br />
SndID_ShieldWAction = $44<br />
SndID_ShieldMAction = $45<br />
SndID_SSMonitor = $46<br />
SndID_Unk1 = $47<br />
SndID_RhinoCharge = $48<br />
SndID_PunchVehic = $49<br />
SndID_TailsCatch = $4A<br />
SndID_RockAppear = $4B<br />
SndID_KTEDrop = $4C<br />
SndID_BotShoot = $4D<br />
SndID_LargeLaser = $4E<br />
SndID_FireBurn = $4F<br />
SndID_MechLBZDoorSlam = $50<br />
SndID_BotThrow = $51<br />
SndID_SpikeSwitch = $52<br />
SndID_TeleportStart = $53<br />
SndID_LargeLaser2 = $54<br />
SndID_HTZLiftClick = $55<br />
SndID_UnkDrop = $56<br />
SndID_BigSplash = $57<br />
SndID_DoorSlam = $58<br />
SndID_Smash = $59<br />
SndID_S3DLauncher = $5A<br />
SndID_SwitchButton = $5B<br />
SndID_MetMalfunction = $5C<br />
SndID_KTEThud = $5D<br />
SndID_LaserBeam = $5E<br />
SndID_Hammer = $5F<br />
SndID_MGZBossWhirr = $60<br />
SndID_MechCrash = $61<br />
SndID_Jump = $62<br />
SndID_Checkpoint = $63<br />
SndID_SpikesMove = $64<br />
SndID_SSSphere = $65<br />
SndID_SSComplete = $66<br />
SndID_PreArrowFiring = $67<br />
SndID_Unlock = $68<br />
SndID_BlockPush = $69<br />
SndID_SpecStageExit = $6A<br />
SndID_S1SSSpecial = $6B<br />
SndID_Splash2 = $6C<br />
SndID_MObjMove = $6D<br />
SndID_BossHit = $6E<br />
SndID_Rumbling = $6F<br />
SndID_LavaBall = $70<br />
SndID_ShieldAgain = $71<br />
SndID_AntiGravTube = $72<br />
SndID_TeleportEnd = $73<br />
SndID_Repel = $74<br />
SndID_PlatformRise = $75<br />
SndID_Trapdoor = $76<br />
SndID_BalloonPop = $77<br />
SndID_S3DZapper = $78<br />
SndID_Zap = $79<br />
SndID_Unk2 = $7A<br />
SndID_Bounce = $7B<br />
SndID_ArrowFiring = $7C<br />
SndID_Unk3 = $7D<br />
SndID_Unk4 = $7E<br />
SndID_Flamethrower2 = $7E<br />
SndID_IZIceSpikeball = $80<br />
SndID_LBZCannon = $81<br />
SndID_Unk5 = $82<br />
SndID_KTEBlowBridge = $83<br />
SndID_Unk6 = $84<br />
SndID_Unk7 = $85<br />
SndID_LBZAlarm = $86<br />
SndID_ShroomBounce = $87<br />
SndID_MHZHandlePull = $88<br />
SndID_Beep = $89<br />
SndID_GhostFlee = $8A<br />
SndID_Chop = $8B<br />
SndID_BotDash = $8C<br />
SndID_Unk8 = $8D<br />
SndID_Unk9 = $8E<br />
SndID_SZStoneDoor = $8F<br />
SndID_SZDoorTimer = $90<br />
SndID_SZDoorClose = $91<br />
SndID_GhostCome = $92<br />
SndID_SZBossIllusion = $93<br />
SndID_LRZPlatformBelt = $94<br />
SndID_LRZMBArm = $95<br />
SndID_CrushingBlk = $96<br />
SndID_Unk10 = $97<br />
SndID_Unk20 = $98<br />
SndID_Unk11 = $99<br />
SndID_SpringPltfrm = $9A<br />
SndID_GolemBossWalk = $9B<br />
SndID_Sparkle = $9C<br />
SndID_SMLaser = $9D<br />
SndID_Unk12 = $9E<br />
SndID_Teleport2 = $9F<br />
SndID_SSZEggRoboFly = $A0<br />
SndID_Unk13 = $A1<br />
SndID_Unk14 = $A2<br />
SndID_CNZElevator = $A3<br />
SndID_Unk15 = $A4<br />
SndID_Unk16 = $A5<br />
SndID_Unk17 = $A6<br />
SndID_Ready = $A7<br />
SndID_MechaSonicBuzz = $A8<br />
SndID_WaterWarning = $A9<br />
SndID_Bumper = $AA<br />
SndID_SpindashRev = $AB<br />
SndID_ContinueJingle = $AC<br />
SndID_Go = $AD<br />
SndID_Catapult = $AE<br />
SndID_SpecStageEntry = $AF<br />
SndID_TallyEnd = $B0<br />
SndID_Spring = $B1<br />
SndID_Error = $B2<br />
SndID_EnterGiantRing = $B3<br />
SndID_BossExpOld = $B4<br />
SndID_SpecStageGlass = $B5<br />
SndID_SpindashRelease = $B6<br />
SndID_CasinoBonus = $B7<br />
SndID_Sparkle2 = $B8<br />
SndID_RingSpill = $B9<br />
SndID_TailsFly = $BA<br />
SndID_TailsExhaust = $BB<br />
SndID_Unk18 = $BC<br />
SndID_FBFlyBy = $BD<br />
SndID_EggmobileMHZ = $BE<br />
SndID_MBHCZSwirl = $BF<br />
SndID_Propeller2 = $C0<br />
SndID_Propeller = $C1<br />
SndID_Flamethrower = $C2<br />
SndID_OrbitOrb = $C3<br />
SndID_MBDEZAngry = $C4<br />
SndID_Unk19 = $C5<br />
SndID_Levitate = $C6<br />
SndID_CNZCannon = $C7<br />
SndID_OilSlide = $C8<br />
SndID_MGZMace = $C9<br />
SndID_RaceTrackDEZ = $CA<br />
SndID_Rumbling2 = $CB<br />
SndID_Crumbling = $CC<br />
SndID_DeathEggFly = $CD<br />
SndID_Unk21 = $CE<br />
SndID_Unk22 = $CF<br />
SndID_MPltfrmRise = $D0<br />
SndID_Unk23 = $D1<br />
SndID_Chain = $D2<br />
SndID_Unk24 = $D3<br />
SndID_KTEBlower = $D4<br />
SndID_Lavafall = $D5<br />
SndID_Unk25 = $D6<br />
SndID_Chain2 = $D7<br />
SndID_Unk26 = $D8<br />
SndID_DEZTube = $D9<br />
SndID_Unk27 = $DA<br />
SndID_Unk28 = $DB<br />
Snd_Open1 = $DC<br />
Snd_Open2 = $DD<br />
Snd_Open3 = $DE<br />
Snd_Open4 = $DF<br />
<br />
;compatibility sfx<br />
SndID_Ring = SndID_RingRight<br />
SndID_Teleport = SndID_TeleportEnd<br />
SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld<br />
SndID_Bwoop = SndID_Lavafall<br />
SndID_Swish = SndID_Unk28<br />
SndID_Blip = SndID_SwitchButton<br />
SndID_SlowSmash = SndID_Smash<br />
SndID_Signpost = SndID_Sparkle2<br />
SndID_Bonus = SndID_BotDash<br />
SndID_CNZBossZap = SndID_S3DZapper<br />
SndID_Signpost2P = SndID_Sparkle2<br />
SndID_OOZLidPop = SndID_ArrowFiring<br />
SndID_SlidingSpike = SNDID_SSZEggRoboFly<br />
SndID_PlatformKnock = SndID_Chop<br />
SndID_BonusBumper = SndID_Bounce<br />
SndID_LargeBumper = SndID_Catapult<br />
SndID_Gloop = SndID_Lavafall<br />
SndID_Fire = SndID_FireBurn<br />
SndID_ArrowStick = SndID_KTEDrop<br />
SndID_Helicopter = SndID_TailsFly<br />
SndID_SuperTransform = SndID_Teleport2<br />
SndID_CNZLaunch = SndID_KTEBlowBridge<br />
SndID_Flipper = SndID_Catapult<br />
SndID_Leaves = SndID_Unk28<br />
SndID_MegaMackDrop = SndID_Unk28<br />
SndID_DrawbridgeMove = SndID_Trapdoor<br />
SndID_QuickDoorSlam = SndID_DoorSlam<br />
SndID_DrawbridgeDown = SndID_Trapdoor<br />
SndID_LaserBurst = SndID_LargeLaser<br />
SndID_LaserFloor = SndID_LargeLaser2<br />
SndID_Scatter = SndID_Unk14<br />
SndID__End = $E0<br />
</asm><br />
==Fixing the Sneaker==<br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_1&diff=208763
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 1
2014-05-25T18:28:47Z
<p>Kram1024: /* fixing the sound test */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
'''Updated by''' [[User:Kram1024]]<br />
<br />
You probably saw a quick and dirty way to do this on SSRG, but lets do it the proper way, the way that sonic team would do it.<br />
<br />
==Overview==<br />
First off, Sonic 3's sound driver has the V_Int reloader built into it so it is not needed, some routines need replacement, sounds need fixing, and we need to replace the sounds and music. We will be using the hivebrain version, if you wish to do it via svn version, I am sure you can come up with a way that works by seeing what changes I made in the hivebrain version.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of master V_Int branch to s1driver point===<br />
first we will fix the vertical interrupt, by changing:<br />
<asm><br />
<br />
loc_B5E: ; XREF: loc_B88<br />
jsr (sub_71B4C).l<br />
</asm><br />
<br />
to:<br />
<br />
<asm><br />
loc_B5E: ; XREF: loc_B88<br />
nop ; The nop was placed here in order to make sure<br />
; that the same number of cycles was used.<br />
; not doing so could put things slightly out of sync.<br />
</asm><br />
<br />
===Removal of H_Int branch point to s1driver===<br />
Now we locate:<br />
<asm><br />
loc_119E: ; XREF: PalToCRAM<br />
clr.b ($FFFFF64F).w<br />
movem.l d0-a6,-(sp)<br />
bsr.w Demo_Time<br />
jsr (sub_71B4C).l<br />
movem.l (sp)+,d0-a6<br />
rte <br />
; End of function PalToCRAM<br />
</asm><br />
See another familiar line? Yes, you've got it, do the same thing to it:<br />
<asm><br />
loc_119E: ; XREF: PalToCRAM<br />
clr.b ($FFFFF64F).w<br />
movem.l d0-a6,-(sp)<br />
bsr.w Demo_Time<br />
nop ; The nop was placed here in order to make sure<br />
; that the same number of cycles was used.<br />
; not doing so could put things slightly out of sync.<br />
movem.l (sp)+,d0-a6<br />
rte <br />
; End of function PalToCRAM<br />
</asm><br />
That effectively disables the sonic1 style v_int and h_int driver reloading that we will not need and prevents a nasty error down the road.<br />
<br />
==Upgrading the Load Driver Routine==<br />
Okay, we disabled the sonic1 driver junk, wouldn't we want now to use the sonic3 driver instead? Here is where we start installing it. Locate:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
SoundDriverLoad: ; XREF: GameClrRAM; TitleScreen<br />
nop <br />
move.w #$100,($A11100).l ; stop the Z80<br />
move.w #$100,($A11200).l ; reset the Z80<br />
lea (Kos_Z80).l,a0 ; load sound driver<br />
lea ($A00000).l,a1<br />
bsr.w KosDec ; decompress<br />
move.w #0,($A11200).l<br />
nop <br />
nop <br />
nop <br />
nop <br />
move.w #$100,($A11200).l ; reset the Z80<br />
move.w #0,($A11100).l ; start the Z80<br />
rts <br />
; End of function SoundDriverLoad<br />
</asm><br />
<br />
and replace it all with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
SoundDriverLoad: ; XREF: GameClrRAM; TitleScreen<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
</asm><br />
<br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlaySound routine, locate:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a sound or music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlaySound:<br />
move.b d0,($FFFFF00A).w<br />
rts <br />
; End of function PlaySound<br />
</asm><br />
<br />
and replace it completely with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a sound or music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlaySound:<br />
cmpi.w #$FB,d0<br />
blt.s PlayNotSpecialFlag<br />
bhi.s TestForNormalSpeed<br />
move #8,d0<br />
jmp SetTempo<br />
<br />
TestForNormalSpeed:<br />
cmpi.w #$FC,d0<br />
bne.s PlayNotSpecialFlag<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
PlayNotSpecialFlag:<br />
move.w #$100,($A11100).l<br />
<br />
PlaySoundZ80NotStopped:<br />
btst #0,($A11100).l<br />
bne.s PlaySoundZ80NotStopped ; loop until it says it's stopped<br />
move.b d0,($A01C0A).l<br />
move.w #0,($A11100).l<br />
rts<br />
; End of function PlaySound<br />
<br />
; ---------------------------------------------------------------------------<br />
; Exclusive sound/music subroutine<br />
; ---------------------------------------------------------------------------<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
<br />
PlaySound_Ex:<br />
tst.b 4(A0)<br />
bpl.s SkipPlaySound_Special<br />
</asm><br />
Do not be alarmed about the new sound routine that was added, it is equivalent to the PlaySound_Local routine (as a matter of fact, it is identical, why sonic1 does not already have it is beyond me, since it indeed does work in sonic 1)<br />
<br />
===sound playback routines===<br />
now find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a special sound/music (E0-E4)<br />
;<br />
; E0 - Fade out<br />
; E1 - Sega<br />
; E2 - Speed up<br />
; E3 - Normal speed<br />
; E4 - Stop<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlaySound_Special:<br />
move.b d0,($FFFFF00B).w<br />
rts <br />
; End of function PlaySound_Special<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Unused sound/music subroutine<br />
; ---------------------------------------------------------------------------<br />
<br />
PlaySound_Unk:<br />
move.b d0,($FFFFF00C).w<br />
rts <br />
</asm><br />
<br />
and replace it entirely with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Unused sound/music subroutine<br />
; ---------------------------------------------------------------------------<br />
<br />
PlaySound_Unk:<br />
nop<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a special sound/music (FB-FF)<br />
; ---------------------------------------------------------------------------<br />
<br />
PlaySound_Special:<br />
move.w #$100,($A11100).l<br />
<br />
PlaySound_SpecialZ80NotStopped:<br />
btst #0,($A11100).l<br />
bne.s PlaySound_SpecialZ80NotStopped<br />
cmp.b ($A01C0B).l,d0<br />
beq.s PlaySound_Special1<br />
tst.b ($A01C0B).l<br />
bne.s PlaySound_Special0<br />
move.b d0,($A01C0B).l<br />
move.w #0,($A11100).l<br />
rts<br />
<br />
PlaySound_Special0:<br />
move.b d0,($A01C0C).l<br />
<br />
PlaySound_Special1:<br />
move.w #0,($A11100).l<br />
<br />
SkipPlaySound_Special:<br />
rts<br />
; End of function PlaySound_Special<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to change the music tempo<br />
; ---------------------------------------------------------------------------<br />
<br />
SetTempo:<br />
move.w #$100,($A11100).l<br />
<br />
SetTempoZ80NotStopped:<br />
btst #0,($A11100).l<br />
bne.s SetTempoZ80NotStopped<br />
move.b D0,($A01C08).l<br />
move.w #0,($A11100).l<br />
rts<br />
</asm><br />
<br />
==Upgrading Pause / Resume routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PauseGame: ; XREF: Level_MainLoop; et al<br />
nop <br />
tst.b ($FFFFFE12).w ; do you have any lives left?<br />
beq.s Unpause ; if not, branch<br />
tst.w ($FFFFF63A).w ; is game already paused?<br />
bne.s loc_13BE ; if yes, branch<br />
btst #7,($FFFFF605).w ; is Start button pressed?<br />
beq.s Pause_DoNothing ; if not, branch<br />
<br />
loc_13BE:<br />
move.w #1,($FFFFF63A).w ; freeze time<br />
move.b #1,($FFFFF003).w ; pause music<br />
<br />
loc_13CA:<br />
move.b #$10,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
tst.b ($FFFFFFE1).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #6,($FFFFF605).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #4,($FFFFF600).w ; set game mode to 4 (title screen)<br />
nop <br />
bra.s loc_1404<br />
; ===========================================================================<br />
<br />
Pause_ChkBC: ; XREF: PauseGame<br />
btst #4,($FFFFF604).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #5,($FFFFF605).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
<br />
Pause_ChkStart: ; XREF: PauseGame<br />
btst #7,($FFFFF605).w ; is Start button pressed?<br />
beq.s loc_13CA ; if not, branch<br />
<br />
loc_1404: ; XREF: PauseGame<br />
move.b #$80,($FFFFF003).w<br />
<br />
Unpause: ; XREF: PauseGame<br />
move.w #0,($FFFFF63A).w ; unpause the game<br />
<br />
Pause_DoNothing: ; XREF: PauseGame<br />
rts <br />
; ===========================================================================<br />
<br />
Pause_SlowMo: ; XREF: PauseGame<br />
move.w #1,($FFFFF63A).w<br />
move.b #$80,($FFFFF003).w<br />
rts <br />
; End of function PauseGame<br />
</asm><br />
<br />
and replace it completely with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PauseGame: ; XREF: Level_MainLoop; et al<br />
nop<br />
tst.b ($FFFFFE12).w<br />
beq Unpause<br />
tst.w ($FFFFF63A).w<br />
bne.s PauseGame_AlreadyPaused<br />
move.b ($FFFFF605).w,d0<br />
or.b ($FFFFF607).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
<br />
PauseGame_AlreadyPaused: <br />
move.w #1,($FFFFF63A).w<br />
move.w #$100,($A11100).l<br />
<br />
PauseGameZ80NotStopped:<br />
btst #0,($A11100).l<br />
bne.s PauseGameZ80NotStopped<br />
move.b #1,($A01C10).l<br />
move.w #0,($A11100).l<br />
<br />
PauseGameLoop:<br />
move.b #$10,($FFFFF62A).w<br />
jsr DelayProgram<br />
tst.b ($FFFFFFE1).w ; Edit: the value is $FFFFFFE1 in Sonic 1<br />
beq.s Pause_ChkStart<br />
btst #6,($FFFFF605).w<br />
beq.s Pause_ChkBC<br />
move.b #$4,($FFFFF600).w ; Go To Title Screen<br />
nop<br />
bra.s PauseGame1<br />
<br />
Pause_ChkBC:<br />
btst #4,($FFFFF604).w<br />
bne.s Pause_SlowMo<br />
btst #5,($FFFFF605).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
cmpi.b #$E,($FFFFFE10).w<br />
bcs.s PauseGame0<br />
cmpi.b #$12,($FFFFFE10).w<br />
bhi.s PauseGame0<br />
tst.b ($FFFFFF8B).w<br />
bpl.s PauseGame0<br />
btst #4,($FFFFF605).w<br />
beq.s PauseGame0<br />
move.b #$C0,($FFFFF600).w<br />
bra.s PauseGame1<br />
<br />
PauseGame0:<br />
move.b ($FFFFF605).w,d0<br />
or.b ($FFFFF607).w,d0<br />
andi.b #$80,d0<br />
beq.s PauseGameLoop<br />
<br />
PauseGame1:<br />
move.w #$100,($A11100).l<br />
<br />
Pause_ChkStartZ80NotStopped:<br />
btst #0,($A11100).l<br />
bne.s Pause_ChkStartZ80NotStopped<br />
move.b #$80,($A01C10).l<br />
move.w #0,($A11100).l<br />
<br />
Unpause:<br />
move.w #0,($FFFFF63A).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,($FFFFF63A).w<br />
move.w #$100,($A11100).l<br />
<br />
Pause_SlowMoZ80NotStopped:<br />
btst #0,($A11100).l<br />
bne.s Pause_SlowMoZ80NotStopped<br />
move.b #$80,($A01C10).l<br />
move.w #0,($A11100).l<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
==Replacing 68k driver with new Z80 driver==<br />
We need the sound driver itself if we are going to have any sound and music, so we locate:<br />
<asm><br />
align 2<br />
<br />
Go_SoundTypes: dc.l SoundTypes ; XREF: Sound_Play<br />
Go_SoundD0: dc.l SoundD0Index ; XREF: Sound_D0toDF<br />
Go_MusicIndex: dc.l MusicIndex ; XREF: Sound_81to9F<br />
Go_SoundIndex: dc.l SoundIndex ; XREF: Sound_A0toCF<br />
off_719A0: dc.l byte_71A94 ; XREF: Sound_81to9F<br />
Go_PSGIndex: dc.l PSG_Index ; XREF: sub_72926<br />
; ---------------------------------------------------------------------------<br />
; PSG instruments used in music<br />
; ---------------------------------------------------------------------------<br />
PSG_Index: dc.l PSG1, PSG2, PSG3<br />
dc.l PSG4, PSG5, PSG6<br />
dc.l PSG7, PSG8, PSG9<br />
PSG1: binclude sound\psg1.bin<br />
PSG2: binclude sound\psg2.bin<br />
PSG3: binclude sound\psg3.bin<br />
PSG4: binclude sound\psg4.bin<br />
PSG6: binclude sound\psg6.bin<br />
PSG5: binclude sound\psg5.bin<br />
PSG7: binclude sound\psg7.bin<br />
PSG8: binclude sound\psg8.bin<br />
PSG9: binclude sound\psg9.bin<br />
<br />
byte_71A94: dc.b 7, $72, $73, $26, $15, 8, $FF, 5<br />
; ---------------------------------------------------------------------------<br />
; Music Pointers<br />
; ---------------------------------------------------------------------------<br />
MusicIndex: dc.l Music81, Music82<br />
dc.l Music83, Music84<br />
dc.l Music85, Music86<br />
dc.l Music87, Music88<br />
dc.l Music89, Music8A<br />
dc.l Music8B, Music8C<br />
dc.l Music8D, Music8E<br />
dc.l Music8F, Music90<br />
dc.l Music91, Music92<br />
dc.l Music93<br />
; ---------------------------------------------------------------------------<br />
; Type of sound being played ($90 = music; $70 = normal sound effect)<br />
; ---------------------------------------------------------------------------<br />
SoundTypes: dc.b $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90<br />
dc.b $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $80<br />
dc.b $70, $70, $70, $70, $70, $70, $70, $70, $70, $68, $70, $70, $70, $60, $70, $70<br />
dc.b $60, $70, $60, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $7F, $60<br />
dc.b $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $80<br />
dc.b $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $90<br />
dc.b $90, $90, $90, $90<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71B4C: ; XREF: loc_B10; PalToCRAM<br />
move.w #$100,($A11100).l ; stop the Z80<br />
nop <br />
nop <br />
nop <br />
<br />
loc_71B5A:<br />
btst #0,($A11100).l<br />
bne.s loc_71B5A<br />
<br />
btst #7,($A01FFD).l<br />
beq.s loc_71B82<br />
move.w #0,($A11100).l ; start the Z80<br />
nop <br />
nop <br />
nop <br />
nop <br />
nop <br />
bra.s sub_71B4C<br />
; ===========================================================================<br />
<br />
loc_71B82:<br />
lea ($FFF000).l,a6<br />
clr.b $E(a6)<br />
tst.b 3(a6) ; is music paused?<br />
bne.w loc_71E50 ; if yes, branch<br />
subq.b #1,1(a6)<br />
bne.s loc_71B9E<br />
jsr sub_7260C(pc)<br />
<br />
loc_71B9E:<br />
move.b 4(a6),d0<br />
beq.s loc_71BA8<br />
jsr sub_72504(pc)<br />
<br />
loc_71BA8:<br />
tst.b $24(a6)<br />
beq.s loc_71BB2<br />
jsr sub_7267C(pc)<br />
<br />
loc_71BB2:<br />
tst.w $A(a6) ; is music or sound being played?<br />
beq.s loc_71BBC ; if not, branch<br />
jsr Sound_Play(pc)<br />
<br />
loc_71BBC:<br />
cmpi.b #$80,9(a6)<br />
beq.s loc_71BC8<br />
jsr Sound_ChkValue(pc)<br />
<br />
loc_71BC8:<br />
lea $40(a6),a5<br />
tst.b (a5)<br />
bpl.s loc_71BD4<br />
jsr sub_71C4E(pc)<br />
<br />
loc_71BD4:<br />
clr.b 8(a6)<br />
moveq #5,d7<br />
<br />
loc_71BDA:<br />
adda.w #$30,a5<br />
tst.b (a5)<br />
bpl.s loc_71BE6<br />
jsr sub_71CCA(pc)<br />
<br />
loc_71BE6:<br />
dbf d7,loc_71BDA<br />
<br />
moveq #2,d7<br />
<br />
loc_71BEC:<br />
adda.w #$30,a5<br />
tst.b (a5)<br />
bpl.s loc_71BF8<br />
jsr sub_72850(pc)<br />
<br />
loc_71BF8:<br />
dbf d7,loc_71BEC<br />
<br />
move.b #$80,$E(a6)<br />
moveq #2,d7<br />
<br />
loc_71C04:<br />
adda.w #$30,a5<br />
tst.b (a5)<br />
bpl.s loc_71C10<br />
jsr sub_71CCA(pc)<br />
<br />
loc_71C10:<br />
dbf d7,loc_71C04<br />
<br />
moveq #2,d7<br />
<br />
loc_71C16:<br />
adda.w #$30,a5<br />
tst.b (a5)<br />
bpl.s loc_71C22<br />
jsr sub_72850(pc)<br />
<br />
loc_71C22:<br />
dbf d7,loc_71C16<br />
move.b #$40,$E(a6)<br />
adda.w #$30,a5<br />
tst.b (a5)<br />
bpl.s loc_71C38<br />
jsr sub_71CCA(pc)<br />
<br />
loc_71C38:<br />
adda.w #$30,a5<br />
tst.b (a5)<br />
bpl.s loc_71C44<br />
jsr sub_72850(pc)<br />
<br />
loc_71C44:<br />
move.w #0,($A11100).l ; start the Z80<br />
rts <br />
; End of function sub_71B4C<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71C4E: ; XREF: sub_71B4C<br />
subq.b #1,$E(a5)<br />
bne.s locret_71CAA<br />
move.b #$80,8(a6)<br />
movea.l 4(a5),a4<br />
<br />
loc_71C5E:<br />
moveq #0,d5<br />
move.b (a4)+,d5<br />
cmpi.b #-$20,d5<br />
bcs.s loc_71C6E<br />
jsr sub_72A5A(pc)<br />
bra.s loc_71C5E<br />
; ===========================================================================<br />
<br />
loc_71C6E:<br />
tst.b d5<br />
bpl.s loc_71C84<br />
move.b d5,$10(a5)<br />
move.b (a4)+,d5<br />
bpl.s loc_71C84<br />
subq.w #1,a4<br />
move.b $F(a5),$E(a5)<br />
bra.s loc_71C88<br />
; ===========================================================================<br />
<br />
loc_71C84:<br />
jsr sub_71D40(pc)<br />
<br />
loc_71C88:<br />
move.l a4,4(a5)<br />
btst #2,(a5)<br />
bne.s locret_71CAA<br />
moveq #0,d0<br />
move.b $10(a5),d0<br />
cmpi.b #$80,d0<br />
beq.s locret_71CAA<br />
btst #3,d0<br />
bne.s loc_71CAC<br />
move.b d0,($A01FFF).l<br />
<br />
locret_71CAA:<br />
rts <br />
; ===========================================================================<br />
<br />
loc_71CAC:<br />
subi.b #$88,d0<br />
move.b byte_71CC4(pc,d0.w),d0<br />
move.b d0,($A000EA).l<br />
move.b #$83,($A01FFF).l<br />
rts <br />
; End of function sub_71C4E<br />
<br />
; ===========================================================================<br />
byte_71CC4: dc.b $12, $15, $1C, $1D, $FF, $FF<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71CCA: ; XREF: sub_71B4C<br />
subq.b #1,$E(a5)<br />
bne.s loc_71CE0<br />
bclr #4,(a5)<br />
jsr sub_71CEC(pc)<br />
jsr sub_71E18(pc)<br />
bra.w loc_726E2<br />
; ===========================================================================<br />
<br />
loc_71CE0:<br />
jsr sub_71D9E(pc)<br />
jsr sub_71DC6(pc)<br />
bra.w loc_71E24<br />
; End of function sub_71CCA<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71CEC: ; XREF: sub_71CCA<br />
movea.l 4(a5),a4<br />
bclr #1,(a5)<br />
<br />
loc_71CF4:<br />
moveq #0,d5<br />
move.b (a4)+,d5<br />
cmpi.b #-$20,d5<br />
bcs.s loc_71D04<br />
jsr sub_72A5A(pc)<br />
bra.s loc_71CF4<br />
; ===========================================================================<br />
<br />
loc_71D04:<br />
jsr sub_726FE(pc)<br />
tst.b d5<br />
bpl.s loc_71D1A<br />
jsr sub_71D22(pc)<br />
move.b (a4)+,d5<br />
bpl.s loc_71D1A<br />
subq.w #1,a4<br />
bra.w sub_71D60<br />
; ===========================================================================<br />
<br />
loc_71D1A:<br />
jsr sub_71D40(pc)<br />
bra.w sub_71D60<br />
; End of function sub_71CEC<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71D22: ; XREF: sub_71CEC<br />
subi.b #$80,d5<br />
beq.s loc_71D58<br />
add.b 8(a5),d5<br />
andi.w #$7F,d5<br />
lsl.w #1,d5<br />
lea word_72790(pc),a0<br />
move.w (a0,d5.w),d6<br />
move.w d6,$10(a5)<br />
rts <br />
; End of function sub_71D22<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71D40: ; XREF: sub_71C4E; sub_71CEC; sub_72878<br />
move.b d5,d0<br />
move.b 2(a5),d1<br />
<br />
loc_71D46:<br />
subq.b #1,d1<br />
beq.s loc_71D4E<br />
add.b d5,d0<br />
bra.s loc_71D46<br />
; ===========================================================================<br />
<br />
loc_71D4E:<br />
move.b d0,$F(a5)<br />
move.b d0,$E(a5)<br />
rts <br />
; End of function sub_71D40<br />
<br />
; ===========================================================================<br />
<br />
loc_71D58: ; XREF: sub_71D22<br />
bset #1,(a5)<br />
clr.w $10(a5)<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71D60: ; XREF: sub_71CEC; sub_72878; sub_728AC<br />
move.l a4,4(a5)<br />
move.b $F(a5),$E(a5)<br />
btst #4,(a5)<br />
bne.s locret_71D9C<br />
move.b $13(a5),$12(a5)<br />
clr.b $C(a5)<br />
btst #3,(a5)<br />
beq.s locret_71D9C<br />
movea.l $14(a5),a0<br />
move.b (a0)+,$18(a5)<br />
move.b (a0)+,$19(a5)<br />
move.b (a0)+,$1A(a5)<br />
move.b (a0)+,d0<br />
lsr.b #1,d0<br />
move.b d0,$1B(a5)<br />
clr.w $1C(a5)<br />
<br />
locret_71D9C:<br />
rts <br />
; End of function sub_71D60<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71D9E: ; XREF: sub_71CCA; sub_72850<br />
tst.b $12(a5)<br />
beq.s locret_71DC4<br />
subq.b #1,$12(a5)<br />
bne.s locret_71DC4<br />
bset #1,(a5)<br />
tst.b 1(a5)<br />
bmi.w loc_71DBE<br />
jsr sub_726FE(pc)<br />
addq.w #4,sp<br />
rts <br />
; ===========================================================================<br />
<br />
loc_71DBE:<br />
jsr sub_729A0(pc)<br />
addq.w #4,sp<br />
<br />
locret_71DC4:<br />
rts <br />
; End of function sub_71D9E<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71DC6: ; XREF: sub_71CCA; sub_72850<br />
addq.w #4,sp<br />
btst #3,(a5)<br />
beq.s locret_71E16<br />
tst.b $18(a5)<br />
beq.s loc_71DDA<br />
subq.b #1,$18(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_71DDA:<br />
subq.b #1,$19(a5)<br />
beq.s loc_71DE2<br />
rts <br />
; ===========================================================================<br />
<br />
loc_71DE2:<br />
movea.l $14(a5),a0<br />
move.b 1(a0),$19(a5)<br />
tst.b $1B(a5)<br />
bne.s loc_71DFE<br />
move.b 3(a0),$1B(a5)<br />
neg.b $1A(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_71DFE:<br />
subq.b #1,$1B(a5)<br />
move.b $1A(a5),d6<br />
ext.w d6<br />
add.w $1C(a5),d6<br />
move.w d6,$1C(a5)<br />
add.w $10(a5),d6<br />
subq.w #4,sp<br />
<br />
locret_71E16:<br />
rts <br />
; End of function sub_71DC6<br />
<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71E18: ; XREF: sub_71CCA<br />
btst #1,(a5)<br />
bne.s locret_71E48<br />
move.w $10(a5),d6<br />
beq.s loc_71E4A<br />
<br />
loc_71E24: ; XREF: sub_71CCA<br />
move.b $1E(a5),d0<br />
ext.w d0<br />
add.w d0,d6<br />
btst #2,(a5)<br />
bne.s locret_71E48<br />
move.w d6,d1<br />
lsr.w #8,d1<br />
move.b #-$5C,d0<br />
jsr sub_72722(pc)<br />
move.b d6,d1<br />
move.b #-$60,d0<br />
jsr sub_72722(pc)<br />
<br />
locret_71E48:<br />
rts <br />
; ===========================================================================<br />
<br />
loc_71E4A:<br />
bset #1,(a5)<br />
rts <br />
; End of function sub_71E18<br />
<br />
; ===========================================================================<br />
<br />
loc_71E50: ; XREF: sub_71B4C<br />
bmi.s loc_71E94<br />
cmpi.b #2,3(a6)<br />
beq.w loc_71EFE<br />
move.b #2,3(a6)<br />
moveq #2,d3<br />
move.b #-$4C,d0<br />
moveq #0,d1<br />
<br />
loc_71E6A:<br />
jsr sub_7272E(pc)<br />
jsr sub_72764(pc)<br />
addq.b #1,d0<br />
dbf d3,loc_71E6A<br />
<br />
moveq #2,d3<br />
moveq #$28,d0<br />
<br />
loc_71E7C:<br />
move.b d3,d1<br />
jsr sub_7272E(pc)<br />
addq.b #4,d1<br />
jsr sub_7272E(pc)<br />
dbf d3,loc_71E7C<br />
<br />
jsr sub_729B6(pc)<br />
bra.w loc_71C44<br />
; ===========================================================================<br />
<br />
loc_71E94: ; XREF: loc_71E50<br />
clr.b 3(a6)<br />
moveq #$30,d3<br />
lea $40(a6),a5<br />
moveq #6,d4<br />
<br />
loc_71EA0:<br />
btst #7,(a5)<br />
beq.s loc_71EB8<br />
btst #2,(a5)<br />
bne.s loc_71EB8<br />
move.b #-$4C,d0<br />
move.b $A(a5),d1<br />
jsr sub_72722(pc)<br />
<br />
loc_71EB8:<br />
adda.w d3,a5<br />
dbf d4,loc_71EA0<br />
<br />
lea $220(a6),a5<br />
moveq #2,d4<br />
<br />
loc_71EC4:<br />
btst #7,(a5)<br />
beq.s loc_71EDC<br />
btst #2,(a5)<br />
bne.s loc_71EDC<br />
move.b #-$4C,d0<br />
move.b $A(a5),d1<br />
jsr sub_72722(pc)<br />
<br />
loc_71EDC:<br />
adda.w d3,a5<br />
dbf d4,loc_71EC4<br />
<br />
lea $340(a6),a5<br />
btst #7,(a5)<br />
beq.s loc_71EFE<br />
btst #2,(a5)<br />
bne.s loc_71EFE<br />
move.b #-$4C,d0<br />
move.b $A(a5),d1<br />
jsr sub_72722(pc)<br />
<br />
loc_71EFE:<br />
bra.w loc_71C44<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a sound or music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
Sound_Play: ; XREF: sub_71B4C<br />
movea.l (Go_SoundTypes).l,a0<br />
lea $A(a6),a1 ; load music track number<br />
move.b 0(a6),d3<br />
moveq #2,d4<br />
<br />
loc_71F12:<br />
move.b (a1),d0 ; move track number to d0<br />
move.b d0,d1<br />
clr.b (a1)+<br />
subi.b #$81,d0<br />
bcs.s loc_71F3E<br />
cmpi.b #$80,9(a6)<br />
beq.s loc_71F2C<br />
move.b d1,$A(a6)<br />
bra.s loc_71F3E<br />
; ===========================================================================<br />
<br />
loc_71F2C:<br />
andi.w #$7F,d0<br />
move.b (a0,d0.w),d2<br />
cmp.b d3,d2<br />
bcs.s loc_71F3E<br />
move.b d2,d3<br />
move.b d1,9(a6) ; set music flag<br />
<br />
loc_71F3E:<br />
dbf d4,loc_71F12<br />
<br />
tst.b d3<br />
bmi.s locret_71F4A<br />
move.b d3,0(a6)<br />
<br />
locret_71F4A:<br />
rts <br />
; End of function Sound_Play<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
Sound_ChkValue: ; XREF: sub_71B4C<br />
moveq #0,d7<br />
move.b 9(a6),d7<br />
beq.w Sound_E4<br />
bpl.s locret_71F8C<br />
move.b #$80,9(a6) ; reset music flag<br />
cmpi.b #$9F,d7<br />
bls.w Sound_81to9F ; music $81-$9F<br />
cmpi.b #$A0,d7<br />
bcs.w locret_71F8C<br />
cmpi.b #$CF,d7<br />
bls.w Sound_A0toCF ; sound $A0-$CF<br />
cmpi.b #$D0,d7<br />
bcs.w locret_71F8C<br />
cmpi.b #$E0,d7<br />
bcs.w Sound_D0toDF ; sound $D0-$DF<br />
cmpi.b #$E4,d7<br />
bls.s Sound_E0toE4 ; sound $E0-$E4<br />
<br />
locret_71F8C:<br />
rts <br />
; ===========================================================================<br />
<br />
Sound_E0toE4: ; XREF: Sound_ChkValue<br />
subi.b #$E0,d7<br />
lsl.w #2,d7<br />
jmp Sound_ExIndex(pc,d7.w)<br />
; ===========================================================================<br />
<br />
Sound_ExIndex:<br />
bra.w Sound_E0<br />
; ===========================================================================<br />
bra.w Sound_E1<br />
; ===========================================================================<br />
bra.w Sound_E2<br />
; ===========================================================================<br />
bra.w Sound_E3<br />
; ===========================================================================<br />
bra.w Sound_E4<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Play "Say-gaa" PCM sound<br />
; ---------------------------------------------------------------------------<br />
<br />
Sound_E1: ; XREF: Sound_ExIndex<br />
move.b #$88,($A01FFF).l<br />
move.w #0,($A11100).l ; start the Z80<br />
move.w #$11,d1<br />
<br />
loc_71FC0:<br />
move.w #-1,d0<br />
<br />
loc_71FC4:<br />
nop <br />
dbf d0,loc_71FC4<br />
<br />
dbf d1,loc_71FC0<br />
<br />
addq.w #4,sp<br />
rts <br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Play music track $81-$9F<br />
; ---------------------------------------------------------------------------<br />
<br />
Sound_81to9F: ; XREF: Sound_ChkValue<br />
cmpi.b #$88,d7 ; is "extra life" music played?<br />
bne.s loc_72024 ; if not, branch<br />
tst.b $27(a6)<br />
bne.w loc_721B6<br />
lea $40(a6),a5<br />
moveq #9,d0<br />
<br />
loc_71FE6:<br />
bclr #2,(a5)<br />
adda.w #$30,a5<br />
dbf d0,loc_71FE6<br />
<br />
lea $220(a6),a5<br />
moveq #5,d0<br />
<br />
loc_71FF8:<br />
bclr #7,(a5)<br />
adda.w #$30,a5<br />
dbf d0,loc_71FF8<br />
clr.b 0(a6)<br />
movea.l a6,a0<br />
lea $3A0(a6),a1<br />
move.w #$87,d0<br />
<br />
loc_72012:<br />
move.l (a0)+,(a1)+<br />
dbf d0,loc_72012<br />
<br />
move.b #$80,$27(a6)<br />
clr.b 0(a6)<br />
bra.s loc_7202C<br />
; ===========================================================================<br />
<br />
loc_72024:<br />
clr.b $27(a6)<br />
clr.b $26(a6)<br />
<br />
loc_7202C:<br />
jsr sub_725CA(pc)<br />
movea.l (off_719A0).l,a4<br />
subi.b #$81,d7<br />
move.b (a4,d7.w),$29(a6)<br />
movea.l (Go_MusicIndex).l,a4<br />
lsl.w #2,d7<br />
movea.l (a4,d7.w),a4<br />
moveq #0,d0<br />
move.w (a4),d0<br />
add.l a4,d0<br />
move.l d0,$18(a6)<br />
move.b 5(a4),d0<br />
move.b d0,$28(a6)<br />
tst.b $2A(a6)<br />
beq.s loc_72068<br />
move.b $29(a6),d0<br />
<br />
loc_72068:<br />
move.b d0,2(a6)<br />
move.b d0,1(a6)<br />
moveq #0,d1<br />
movea.l a4,a3<br />
addq.w #6,a4<br />
moveq #0,d7<br />
move.b 2(a3),d7<br />
beq.w loc_72114<br />
subq.b #1,d7<br />
move.b #-$40,d1<br />
move.b 4(a3),d4<br />
moveq #$30,d6<br />
move.b #1,d5<br />
lea $40(a6),a1<br />
lea byte_721BA(pc),a2<br />
<br />
loc_72098:<br />
bset #7,(a1)<br />
move.b (a2)+,1(a1)<br />
move.b d4,2(a1)<br />
move.b d6,$D(a1)<br />
move.b d1,$A(a1)<br />
move.b d5,$E(a1)<br />
moveq #0,d0<br />
move.w (a4)+,d0<br />
add.l a3,d0<br />
move.l d0,4(a1)<br />
move.w (a4)+,8(a1)<br />
adda.w d6,a1<br />
dbf d7,loc_72098<br />
cmpi.b #7,2(a3)<br />
bne.s loc_720D8<br />
moveq #$2B,d0<br />
moveq #0,d1<br />
jsr sub_7272E(pc)<br />
bra.w loc_72114<br />
; ===========================================================================<br />
<br />
loc_720D8:<br />
moveq #$28,d0<br />
moveq #6,d1<br />
jsr sub_7272E(pc)<br />
move.b #$42,d0<br />
moveq #$7F,d1<br />
jsr sub_72764(pc)<br />
move.b #$4A,d0<br />
moveq #$7F,d1<br />
jsr sub_72764(pc)<br />
move.b #$46,d0<br />
moveq #$7F,d1<br />
jsr sub_72764(pc)<br />
move.b #$4E,d0<br />
moveq #$7F,d1<br />
jsr sub_72764(pc)<br />
move.b #-$4A,d0<br />
move.b #-$40,d1<br />
jsr sub_72764(pc)<br />
<br />
loc_72114:<br />
moveq #0,d7<br />
move.b 3(a3),d7<br />
beq.s loc_72154<br />
subq.b #1,d7<br />
lea $190(a6),a1<br />
lea byte_721C2(pc),a2<br />
<br />
loc_72126:<br />
bset #7,(a1)<br />
move.b (a2)+,1(a1)<br />
move.b d4,2(a1)<br />
move.b d6,$D(a1)<br />
move.b d5,$E(a1)<br />
moveq #0,d0<br />
move.w (a4)+,d0<br />
add.l a3,d0<br />
move.l d0,4(a1)<br />
move.w (a4)+,8(a1)<br />
move.b (a4)+,d0<br />
move.b (a4)+,$B(a1)<br />
adda.w d6,a1<br />
dbf d7,loc_72126<br />
<br />
loc_72154:<br />
lea $220(a6),a1<br />
moveq #5,d7<br />
<br />
loc_7215A:<br />
tst.b (a1)<br />
bpl.w loc_7217C<br />
moveq #0,d0<br />
move.b 1(a1),d0<br />
bmi.s loc_7216E<br />
subq.b #2,d0<br />
lsl.b #2,d0<br />
bra.s loc_72170<br />
; ===========================================================================<br />
<br />
loc_7216E:<br />
lsr.b #3,d0<br />
<br />
loc_72170:<br />
lea dword_722CC(pc),a0<br />
movea.l (a0,d0.w),a0<br />
bset #2,(a0)<br />
<br />
loc_7217C:<br />
adda.w d6,a1<br />
dbf d7,loc_7215A<br />
<br />
tst.w $340(a6)<br />
bpl.s loc_7218E<br />
bset #2,$100(a6)<br />
<br />
loc_7218E:<br />
tst.w $370(a6)<br />
bpl.s loc_7219A<br />
bset #2,$1F0(a6)<br />
<br />
loc_7219A:<br />
lea $70(a6),a5<br />
moveq #5,d4<br />
<br />
loc_721A0:<br />
jsr sub_726FE(pc)<br />
adda.w d6,a5<br />
dbf d4,loc_721A0<br />
moveq #2,d4<br />
<br />
loc_721AC:<br />
jsr sub_729A0(pc)<br />
adda.w d6,a5<br />
dbf d4,loc_721AC<br />
<br />
loc_721B6:<br />
addq.w #4,sp<br />
rts <br />
; ===========================================================================<br />
byte_721BA: dc.b 6, 0, 1, 2, 4, 5, 6, 0<br />
align 2<br />
byte_721C2: dc.b $80, $A0, $C0, 0<br />
align 2<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Play normal sound effect<br />
; ---------------------------------------------------------------------------<br />
<br />
Sound_A0toCF: ; XREF: Sound_ChkValue<br />
tst.b $27(a6)<br />
bne.w loc_722C6<br />
tst.b 4(a6)<br />
bne.w loc_722C6<br />
tst.b $24(a6)<br />
bne.w loc_722C6<br />
cmpi.b #$B5,d7 ; is ring sound effect played?<br />
bne.s Sound_notB5 ; if not, branch<br />
tst.b $2B(a6)<br />
bne.s loc_721EE<br />
move.b #$CE,d7 ; play ring sound in left speaker<br />
<br />
loc_721EE:<br />
bchg #0,$2B(a6) ; change speaker<br />
<br />
Sound_notB5:<br />
cmpi.b #$A7,d7 ; is "pushing" sound played?<br />
bne.s Sound_notA7 ; if not, branch<br />
tst.b $2C(a6)<br />
bne.w locret_722C4<br />
move.b #$80,$2C(a6)<br />
<br />
Sound_notA7:<br />
movea.l (Go_SoundIndex).l,a0<br />
subi.b #$A0,d7<br />
lsl.w #2,d7<br />
movea.l (a0,d7.w),a3<br />
movea.l a3,a1<br />
moveq #0,d1<br />
move.w (a1)+,d1<br />
add.l a3,d1<br />
move.b (a1)+,d5<br />
move.b (a1)+,d7<br />
subq.b #1,d7<br />
moveq #$30,d6<br />
<br />
loc_72228:<br />
moveq #0,d3<br />
move.b 1(a1),d3<br />
move.b d3,d4<br />
bmi.s loc_72244<br />
subq.w #2,d3<br />
lsl.w #2,d3<br />
lea dword_722CC(pc),a5<br />
movea.l (a5,d3.w),a5<br />
bset #2,(a5)<br />
bra.s loc_7226E<br />
; ===========================================================================<br />
<br />
loc_72244:<br />
lsr.w #3,d3<br />
lea dword_722CC(pc),a5<br />
movea.l (a5,d3.w),a5<br />
bset #2,(a5)<br />
cmpi.b #$C0,d4<br />
bne.s loc_7226E<br />
move.b d4,d0<br />
ori.b #$1F,d0<br />
move.b d0,($C00011).l<br />
bchg #5,d0<br />
move.b d0,($C00011).l<br />
<br />
loc_7226E:<br />
movea.l dword_722EC(pc,d3.w),a5<br />
movea.l a5,a2<br />
moveq #$B,d0<br />
<br />
loc_72276:<br />
clr.l (a2)+<br />
dbf d0,loc_72276<br />
<br />
move.w (a1)+,(a5)<br />
move.b d5,2(a5)<br />
moveq #0,d0<br />
move.w (a1)+,d0<br />
add.l a3,d0<br />
move.l d0,4(a5)<br />
move.w (a1)+,8(a5)<br />
move.b #1,$E(a5)<br />
move.b d6,$D(a5)<br />
tst.b d4<br />
bmi.s loc_722A8<br />
move.b #$C0,$A(a5)<br />
move.l d1,$20(a5)<br />
<br />
loc_722A8:<br />
dbf d7,loc_72228<br />
<br />
tst.b $250(a6)<br />
bpl.s loc_722B8<br />
bset #2,$340(a6)<br />
<br />
loc_722B8:<br />
tst.b $310(a6)<br />
bpl.s locret_722C4<br />
bset #2,$370(a6)<br />
<br />
locret_722C4:<br />
rts <br />
; ===========================================================================<br />
<br />
loc_722C6:<br />
clr.b 0(a6)<br />
rts <br />
; ===========================================================================<br />
dword_722CC: dc.l $FFF0D0<br />
dc.l 0<br />
dc.l $FFF100<br />
dc.l $FFF130<br />
dc.l $FFF190<br />
dc.l $FFF1C0<br />
dc.l $FFF1F0<br />
dc.l $FFF1F0<br />
dword_722EC: dc.l $FFF220<br />
dc.l 0<br />
dc.l $FFF250<br />
dc.l $FFF280<br />
dc.l $FFF2B0<br />
dc.l $FFF2E0<br />
dc.l $FFF310<br />
dc.l $FFF310<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Play GHZ waterfall sound<br />
; ---------------------------------------------------------------------------<br />
<br />
Sound_D0toDF: ; XREF: Sound_ChkValue<br />
tst.b $27(a6)<br />
bne.w locret_723C6<br />
tst.b 4(a6)<br />
bne.w locret_723C6<br />
tst.b $24(a6)<br />
bne.w locret_723C6<br />
movea.l (Go_SoundD0).l,a0<br />
subi.b #$D0,d7<br />
lsl.w #2,d7<br />
movea.l (a0,d7.w),a3<br />
movea.l a3,a1<br />
moveq #0,d0<br />
move.w (a1)+,d0<br />
add.l a3,d0<br />
move.l d0,$20(a6)<br />
move.b (a1)+,d5<br />
move.b (a1)+,d7<br />
subq.b #1,d7<br />
moveq #$30,d6<br />
<br />
loc_72348:<br />
move.b 1(a1),d4<br />
bmi.s loc_7235A<br />
bset #2,$100(a6)<br />
lea $340(a6),a5<br />
bra.s loc_72364<br />
; ===========================================================================<br />
<br />
loc_7235A:<br />
bset #2,$1F0(a6)<br />
lea $370(a6),a5<br />
<br />
loc_72364:<br />
movea.l a5,a2<br />
moveq #$B,d0<br />
<br />
loc_72368:<br />
clr.l (a2)+<br />
dbf d0,loc_72368<br />
<br />
move.w (a1)+,(a5)<br />
move.b d5,2(a5)<br />
moveq #0,d0<br />
move.w (a1)+,d0<br />
add.l a3,d0<br />
move.l d0,4(a5)<br />
move.w (a1)+,8(a5)<br />
move.b #1,$E(a5)<br />
move.b d6,$D(a5)<br />
tst.b d4<br />
bmi.s loc_72396<br />
move.b #$C0,$A(a5)<br />
<br />
loc_72396:<br />
dbf d7,loc_72348<br />
<br />
tst.b $250(a6)<br />
bpl.s loc_723A6<br />
bset #2,$340(a6)<br />
<br />
loc_723A6:<br />
tst.b $310(a6)<br />
bpl.s locret_723C6<br />
bset #2,$370(a6)<br />
ori.b #$1F,d4<br />
move.b d4,($C00011).l<br />
bchg #5,d4<br />
move.b d4,($C00011).l<br />
<br />
locret_723C6:<br />
rts <br />
; End of function Sound_ChkValue<br />
<br />
; ===========================================================================<br />
dc.l $FFF100<br />
dc.l $FFF1F0<br />
dc.l $FFF250<br />
dc.l $FFF310<br />
dc.l $FFF340<br />
dc.l $FFF370<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
Snd_FadeOut1: ; XREF: Sound_E0<br />
clr.b 0(a6)<br />
lea $220(a6),a5<br />
moveq #5,d7<br />
<br />
loc_723EA:<br />
tst.b (a5)<br />
bpl.w loc_72472<br />
bclr #7,(a5)<br />
moveq #0,d3<br />
move.b 1(a5),d3<br />
bmi.s loc_7243C<br />
jsr sub_726FE(pc)<br />
cmpi.b #4,d3<br />
bne.s loc_72416<br />
tst.b $340(a6)<br />
bpl.s loc_72416<br />
lea $340(a6),a5<br />
movea.l $20(a6),a1<br />
bra.s loc_72428<br />
; ===========================================================================<br />
<br />
loc_72416:<br />
subq.b #2,d3<br />
lsl.b #2,d3<br />
lea dword_722CC(pc),a0<br />
movea.l a5,a3<br />
movea.l (a0,d3.w),a5<br />
movea.l $18(a6),a1<br />
<br />
loc_72428:<br />
bclr #2,(a5)<br />
bset #1,(a5)<br />
move.b $B(a5),d0<br />
jsr sub_72C4E(pc)<br />
movea.l a3,a5<br />
bra.s loc_72472<br />
; ===========================================================================<br />
<br />
loc_7243C:<br />
jsr sub_729A0(pc)<br />
lea $370(a6),a0<br />
cmpi.b #$E0,d3<br />
beq.s loc_7245A<br />
cmpi.b #$C0,d3<br />
beq.s loc_7245A<br />
lsr.b #3,d3<br />
lea dword_722CC(pc),a0<br />
movea.l (a0,d3.w),a0<br />
<br />
loc_7245A:<br />
bclr #2,(a0)<br />
bset #1,(a0)<br />
cmpi.b #$E0,1(a0)<br />
bne.s loc_72472<br />
move.b $1F(a0),($C00011).l<br />
<br />
loc_72472:<br />
adda.w #$30,a5<br />
dbf d7,loc_723EA<br />
<br />
rts <br />
; End of function Snd_FadeOut1<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
Snd_FadeOut2: ; XREF: Sound_E0<br />
lea $340(a6),a5<br />
tst.b (a5)<br />
bpl.s loc_724AE<br />
bclr #7,(a5)<br />
btst #2,(a5)<br />
bne.s loc_724AE<br />
jsr loc_7270A(pc)<br />
lea $100(a6),a5<br />
bclr #2,(a5)<br />
bset #1,(a5)<br />
tst.b (a5)<br />
bpl.s loc_724AE<br />
movea.l $18(a6),a1<br />
move.b $B(a5),d0<br />
jsr sub_72C4E(pc)<br />
<br />
loc_724AE:<br />
lea $370(a6),a5<br />
tst.b (a5)<br />
bpl.s locret_724E4<br />
bclr #7,(a5)<br />
btst #2,(a5)<br />
bne.s locret_724E4<br />
jsr loc_729A6(pc)<br />
lea $1F0(a6),a5<br />
bclr #2,(a5)<br />
bset #1,(a5)<br />
tst.b (a5)<br />
bpl.s locret_724E4<br />
cmpi.b #-$20,1(a5)<br />
bne.s locret_724E4<br />
move.b $1F(a5),($C00011).l<br />
<br />
locret_724E4:<br />
rts <br />
; End of function Snd_FadeOut2<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Fade out music<br />
; ---------------------------------------------------------------------------<br />
<br />
Sound_E0: ; XREF: Sound_ExIndex<br />
jsr Snd_FadeOut1(pc)<br />
jsr Snd_FadeOut2(pc)<br />
move.b #3,6(a6)<br />
move.b #$28,4(a6)<br />
clr.b $40(a6)<br />
clr.b $2A(a6)<br />
rts <br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_72504: ; XREF: sub_71B4C<br />
move.b 6(a6),d0<br />
beq.s loc_72510<br />
subq.b #1,6(a6)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72510:<br />
subq.b #1,4(a6)<br />
beq.w Sound_E4<br />
move.b #3,6(a6)<br />
lea $70(a6),a5<br />
moveq #5,d7<br />
<br />
loc_72524:<br />
tst.b (a5)<br />
bpl.s loc_72538<br />
addq.b #1,9(a5)<br />
bpl.s loc_72534<br />
bclr #7,(a5)<br />
bra.s loc_72538<br />
; ===========================================================================<br />
<br />
loc_72534:<br />
jsr sub_72CB4(pc)<br />
<br />
loc_72538:<br />
adda.w #$30,a5<br />
dbf d7,loc_72524<br />
<br />
moveq #2,d7<br />
<br />
loc_72542:<br />
tst.b (a5)<br />
bpl.s loc_72560<br />
addq.b #1,9(a5)<br />
cmpi.b #$10,9(a5)<br />
bcs.s loc_72558<br />
bclr #7,(a5)<br />
bra.s loc_72560<br />
; ===========================================================================<br />
<br />
loc_72558:<br />
move.b 9(a5),d6<br />
jsr sub_7296A(pc)<br />
<br />
loc_72560:<br />
adda.w #$30,a5<br />
dbf d7,loc_72542<br />
<br />
rts <br />
; End of function sub_72504<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_7256A: ; XREF: Sound_E4; sub_725CA<br />
moveq #2,d3<br />
moveq #$28,d0<br />
<br />
loc_7256E:<br />
move.b d3,d1<br />
jsr sub_7272E(pc)<br />
addq.b #4,d1<br />
jsr sub_7272E(pc)<br />
dbf d3,loc_7256E<br />
<br />
moveq #$40,d0<br />
moveq #$7F,d1<br />
moveq #2,d4<br />
<br />
loc_72584:<br />
moveq #3,d3<br />
<br />
loc_72586:<br />
jsr sub_7272E(pc)<br />
jsr sub_72764(pc)<br />
addq.w #4,d0<br />
dbf d3,loc_72586<br />
<br />
subi.b #$F,d0<br />
dbf d4,loc_72584<br />
<br />
rts <br />
; End of function sub_7256A<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Stop music<br />
; ---------------------------------------------------------------------------<br />
<br />
Sound_E4: ; XREF: Sound_ChkValue; Sound_ExIndex; sub_72504<br />
moveq #$2B,d0<br />
move.b #$80,d1<br />
jsr sub_7272E(pc)<br />
moveq #$27,d0<br />
moveq #0,d1<br />
jsr sub_7272E(pc)<br />
movea.l a6,a0<br />
move.w #$E3,d0<br />
<br />
loc_725B6:<br />
clr.l (a0)+<br />
dbf d0,loc_725B6<br />
<br />
move.b #$80,9(a6) ; set music to $80 (silence)<br />
jsr sub_7256A(pc)<br />
bra.w sub_729B6<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_725CA: ; XREF: Sound_ChkValue<br />
movea.l a6,a0<br />
move.b 0(a6),d1<br />
move.b $27(a6),d2<br />
move.b $2A(a6),d3<br />
move.b $26(a6),d4<br />
move.w $A(a6),d5<br />
move.w #$87,d0<br />
<br />
loc_725E4:<br />
clr.l (a0)+<br />
dbf d0,loc_725E4<br />
<br />
move.b d1,0(a6)<br />
move.b d2,$27(a6)<br />
move.b d3,$2A(a6)<br />
move.b d4,$26(a6)<br />
move.w d5,$A(a6)<br />
move.b #$80,9(a6)<br />
jsr sub_7256A(pc)<br />
bra.w sub_729B6<br />
; End of function sub_725CA<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_7260C: ; XREF: sub_71B4C<br />
move.b 2(a6),1(a6)<br />
lea $4E(a6),a0<br />
moveq #$30,d0<br />
moveq #9,d1<br />
<br />
loc_7261A:<br />
addq.b #1,(a0)<br />
adda.w d0,a0<br />
dbf d1,loc_7261A<br />
<br />
rts <br />
; End of function sub_7260C<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Speed up music<br />
; ---------------------------------------------------------------------------<br />
<br />
Sound_E2: ; XREF: Sound_ExIndex<br />
tst.b $27(a6)<br />
bne.s loc_7263E<br />
move.b $29(a6),2(a6)<br />
move.b $29(a6),1(a6)<br />
move.b #$80,$2A(a6)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_7263E:<br />
move.b $3C9(a6),$3A2(a6)<br />
move.b $3C9(a6),$3A1(a6)<br />
move.b #$80,$3CA(a6)<br />
rts <br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Change music back to normal speed<br />
; ---------------------------------------------------------------------------<br />
<br />
Sound_E3: ; XREF: Sound_ExIndex<br />
tst.b $27(a6)<br />
bne.s loc_7266A<br />
move.b $28(a6),2(a6)<br />
move.b $28(a6),1(a6)<br />
clr.b $2A(a6)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_7266A:<br />
move.b $3C8(a6),$3A2(a6)<br />
move.b $3C8(a6),$3A1(a6)<br />
clr.b $3CA(a6)<br />
rts <br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_7267C: ; XREF: sub_71B4C<br />
tst.b $25(a6)<br />
beq.s loc_72688<br />
subq.b #1,$25(a6)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72688:<br />
tst.b $26(a6)<br />
beq.s loc_726D6<br />
subq.b #1,$26(a6)<br />
move.b #2,$25(a6)<br />
lea $70(a6),a5<br />
moveq #5,d7<br />
<br />
loc_7269E:<br />
tst.b (a5)<br />
bpl.s loc_726AA<br />
subq.b #1,9(a5)<br />
jsr sub_72CB4(pc)<br />
<br />
loc_726AA:<br />
adda.w #$30,a5<br />
dbf d7,loc_7269E<br />
moveq #2,d7<br />
<br />
loc_726B4:<br />
tst.b (a5)<br />
bpl.s loc_726CC<br />
subq.b #1,9(a5)<br />
move.b 9(a5),d6<br />
cmpi.b #$10,d6<br />
bcs.s loc_726C8<br />
moveq #$F,d6<br />
<br />
loc_726C8:<br />
jsr sub_7296A(pc)<br />
<br />
loc_726CC:<br />
adda.w #$30,a5<br />
dbf d7,loc_726B4<br />
rts <br />
; ===========================================================================<br />
<br />
loc_726D6:<br />
bclr #2,$40(a6)<br />
clr.b $24(a6)<br />
rts <br />
; End of function sub_7267C<br />
<br />
; ===========================================================================<br />
<br />
loc_726E2: ; XREF: sub_71CCA<br />
btst #1,(a5)<br />
bne.s locret_726FC<br />
btst #2,(a5)<br />
bne.s locret_726FC<br />
moveq #$28,d0<br />
move.b 1(a5),d1<br />
ori.b #-$10,d1<br />
bra.w sub_7272E<br />
; ===========================================================================<br />
<br />
locret_726FC:<br />
rts <br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_726FE: ; XREF: sub_71CEC; sub_71D9E; Sound_ChkValue; Snd_FadeOut1<br />
btst #4,(a5)<br />
bne.s locret_72714<br />
btst #2,(a5)<br />
bne.s locret_72714<br />
<br />
loc_7270A: ; XREF: Snd_FadeOut2<br />
moveq #$28,d0<br />
move.b 1(a5),d1<br />
bra.w sub_7272E<br />
; ===========================================================================<br />
<br />
locret_72714:<br />
rts <br />
; End of function sub_726FE<br />
<br />
; ===========================================================================<br />
<br />
loc_72716: ; XREF: sub_72A5A<br />
btst #2,(a5)<br />
bne.s locret_72720<br />
bra.w sub_72722<br />
; ===========================================================================<br />
<br />
locret_72720:<br />
rts <br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_72722: ; XREF: sub_71E18; sub_72C4E; sub_72CB4<br />
btst #2,1(a5)<br />
bne.s loc_7275A<br />
add.b 1(a5),d0<br />
; End of function sub_72722<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_7272E: ; XREF: loc_71E6A<br />
move.b ($A04000).l,d2<br />
btst #7,d2<br />
bne.s sub_7272E<br />
move.b d0,($A04000).l<br />
nop <br />
nop <br />
nop <br />
<br />
loc_72746:<br />
move.b ($A04000).l,d2<br />
btst #7,d2<br />
bne.s loc_72746<br />
<br />
move.b d1,($A04001).l<br />
rts <br />
; End of function sub_7272E<br />
<br />
; ===========================================================================<br />
<br />
loc_7275A: ; XREF: sub_72722<br />
move.b 1(a5),d2<br />
bclr #2,d2<br />
add.b d2,d0<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_72764: ; XREF: loc_71E6A; Sound_ChkValue; sub_7256A; sub_72764<br />
move.b ($A04000).l,d2<br />
btst #7,d2<br />
bne.s sub_72764<br />
move.b d0,($A04002).l<br />
nop <br />
nop <br />
nop <br />
<br />
loc_7277C:<br />
move.b ($A04000).l,d2<br />
btst #7,d2<br />
bne.s loc_7277C<br />
<br />
move.b d1,($A04003).l<br />
rts <br />
; End of function sub_72764<br />
<br />
; ===========================================================================<br />
word_72790: dc.w $25E, $284, $2AB, $2D3, $2FE, $32D, $35C, $38F, $3C5<br />
dc.w $3FF, $43C, $47C, $A5E, $A84, $AAB, $AD3, $AFE, $B2D<br />
dc.w $B5C, $B8F, $BC5, $BFF, $C3C, $C7C, $125E, $1284<br />
dc.w $12AB, $12D3, $12FE, $132D, $135C, $138F, $13C5, $13FF<br />
dc.w $143C, $147C, $1A5E, $1A84, $1AAB, $1AD3, $1AFE, $1B2D<br />
dc.w $1B5C, $1B8F, $1BC5, $1BFF, $1C3C, $1C7C, $225E, $2284<br />
dc.w $22AB, $22D3, $22FE, $232D, $235C, $238F, $23C5, $23FF<br />
dc.w $243C, $247C, $2A5E, $2A84, $2AAB, $2AD3, $2AFE, $2B2D<br />
dc.w $2B5C, $2B8F, $2BC5, $2BFF, $2C3C, $2C7C, $325E, $3284<br />
dc.w $32AB, $32D3, $32FE, $332D, $335C, $338F, $33C5, $33FF<br />
dc.w $343C, $347C, $3A5E, $3A84, $3AAB, $3AD3, $3AFE, $3B2D<br />
dc.w $3B5C, $3B8F, $3BC5, $3BFF, $3C3C, $3C7C<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_72850: ; XREF: sub_71B4C<br />
subq.b #1,$E(a5)<br />
bne.s loc_72866<br />
bclr #4,(a5)<br />
jsr sub_72878(pc)<br />
jsr sub_728DC(pc)<br />
bra.w loc_7292E<br />
; ===========================================================================<br />
<br />
loc_72866:<br />
jsr sub_71D9E(pc)<br />
jsr sub_72926(pc)<br />
jsr sub_71DC6(pc)<br />
jsr sub_728E2(pc)<br />
rts <br />
; End of function sub_72850<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_72878: ; XREF: sub_72850<br />
bclr #1,(a5)<br />
movea.l 4(a5),a4<br />
<br />
loc_72880:<br />
moveq #0,d5<br />
move.b (a4)+,d5<br />
cmpi.b #$E0,d5<br />
bcs.s loc_72890<br />
jsr sub_72A5A(pc)<br />
bra.s loc_72880<br />
; ===========================================================================<br />
<br />
loc_72890:<br />
tst.b d5<br />
bpl.s loc_728A4<br />
jsr sub_728AC(pc)<br />
move.b (a4)+,d5<br />
tst.b d5<br />
bpl.s loc_728A4<br />
subq.w #1,a4<br />
bra.w sub_71D60<br />
; ===========================================================================<br />
<br />
loc_728A4:<br />
jsr sub_71D40(pc)<br />
bra.w sub_71D60<br />
; End of function sub_72878<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_728AC: ; XREF: sub_72878<br />
subi.b #$81,d5<br />
bcs.s loc_728CA<br />
add.b 8(a5),d5<br />
andi.w #$7F,d5<br />
lsl.w #1,d5<br />
lea word_729CE(pc),a0<br />
move.w (a0,d5.w),$10(a5)<br />
bra.w sub_71D60<br />
; ===========================================================================<br />
<br />
loc_728CA:<br />
bset #1,(a5)<br />
move.w #-1,$10(a5)<br />
jsr sub_71D60(pc)<br />
bra.w sub_729A0<br />
; End of function sub_728AC<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_728DC: ; XREF: sub_72850<br />
move.w $10(a5),d6<br />
bmi.s loc_72920<br />
; End of function sub_728DC<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_728E2: ; XREF: sub_72850<br />
move.b $1E(a5),d0<br />
ext.w d0<br />
add.w d0,d6<br />
btst #2,(a5)<br />
bne.s locret_7291E<br />
btst #1,(a5)<br />
bne.s locret_7291E<br />
move.b 1(a5),d0<br />
cmpi.b #$E0,d0<br />
bne.s loc_72904<br />
move.b #$C0,d0<br />
<br />
loc_72904:<br />
move.w d6,d1<br />
andi.b #$F,d1<br />
or.b d1,d0<br />
lsr.w #4,d6<br />
andi.b #$3F,d6<br />
move.b d0,($C00011).l<br />
move.b d6,($C00011).l<br />
<br />
locret_7291E:<br />
rts <br />
; End of function sub_728E2<br />
<br />
; ===========================================================================<br />
<br />
loc_72920: ; XREF: sub_728DC<br />
bset #1,(a5)<br />
rts <br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_72926: ; XREF: sub_72850<br />
tst.b $B(a5)<br />
beq.w locret_7298A<br />
<br />
loc_7292E: ; XREF: sub_72850<br />
move.b 9(a5),d6<br />
moveq #0,d0<br />
move.b $B(a5),d0<br />
beq.s sub_7296A<br />
movea.l (Go_PSGIndex).l,a0<br />
subq.w #1,d0<br />
lsl.w #2,d0<br />
movea.l (a0,d0.w),a0<br />
move.b $C(a5),d0<br />
move.b (a0,d0.w),d0<br />
addq.b #1,$C(a5)<br />
btst #7,d0<br />
beq.s loc_72960<br />
cmpi.b #$80,d0<br />
beq.s loc_7299A<br />
<br />
loc_72960:<br />
add.w d0,d6<br />
cmpi.b #$10,d6<br />
bcs.s sub_7296A<br />
moveq #$F,d6<br />
; End of function sub_72926<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_7296A: ; XREF: sub_72504; sub_7267C; sub_72926<br />
btst #1,(a5)<br />
bne.s locret_7298A<br />
btst #2,(a5)<br />
bne.s locret_7298A<br />
btst #4,(a5)<br />
bne.s loc_7298C<br />
<br />
loc_7297C:<br />
or.b 1(a5),d6<br />
addi.b #$10,d6<br />
move.b d6,($C00011).l<br />
<br />
locret_7298A:<br />
rts <br />
; ===========================================================================<br />
<br />
loc_7298C:<br />
tst.b $13(a5)<br />
beq.s loc_7297C<br />
tst.b $12(a5)<br />
bne.s loc_7297C<br />
rts <br />
; End of function sub_7296A<br />
<br />
; ===========================================================================<br />
<br />
loc_7299A: ; XREF: sub_72926<br />
subq.b #1,$C(a5)<br />
rts <br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_729A0: ; XREF: sub_71D9E; Sound_ChkValue; Snd_FadeOut1; sub_728AC<br />
btst #2,(a5)<br />
bne.s locret_729B4<br />
<br />
loc_729A6: ; XREF: Snd_FadeOut2<br />
move.b 1(a5),d0<br />
ori.b #$1F,d0<br />
move.b d0,($C00011).l<br />
<br />
locret_729B4:<br />
rts <br />
; End of function sub_729A0<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_729B6: ; XREF: loc_71E7C<br />
lea ($C00011).l,a0<br />
move.b #$9F,(a0)<br />
move.b #$BF,(a0)<br />
move.b #$DF,(a0)<br />
move.b #$FF,(a0)<br />
rts <br />
; End of function sub_729B6<br />
<br />
; ===========================================================================<br />
word_729CE: dc.w $356, $326, $2F9, $2CE, $2A5, $280, $25C, $23A, $21A<br />
dc.w $1FB, $1DF, $1C4, $1AB, $193, $17D, $167, $153, $140<br />
dc.w $12E, $11D, $10D, $FE, $EF, $E2, $D6, $C9, $BE, $B4<br />
dc.w $A9, $A0, $97, $8F, $87, $7F, $78, $71, $6B, $65<br />
dc.w $5F, $5A, $55, $50, $4B, $47, $43, $40, $3C, $39<br />
dc.w $36, $33, $30, $2D, $2B, $28, $26, $24, $22, $20<br />
dc.w $1F, $1D, $1B, $1A, $18, $17, $16, $15, $13, $12<br />
dc.w $11, 0<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_72A5A: ; XREF: sub_71C4E; sub_71CEC; sub_72878<br />
subi.w #$E0,d5<br />
lsl.w #2,d5<br />
jmp loc_72A64(pc,d5.w)<br />
; End of function sub_72A5A<br />
<br />
; ===========================================================================<br />
<br />
loc_72A64:<br />
bra.w loc_72ACC<br />
; ===========================================================================<br />
bra.w loc_72AEC<br />
; ===========================================================================<br />
bra.w loc_72AF2<br />
; ===========================================================================<br />
bra.w loc_72AF8<br />
; ===========================================================================<br />
bra.w loc_72B14<br />
; ===========================================================================<br />
bra.w loc_72B9E<br />
; ===========================================================================<br />
bra.w loc_72BA4<br />
; ===========================================================================<br />
bra.w loc_72BAE<br />
; ===========================================================================<br />
bra.w loc_72BB4<br />
; ===========================================================================<br />
bra.w loc_72BBE<br />
; ===========================================================================<br />
bra.w loc_72BC6<br />
; ===========================================================================<br />
bra.w loc_72BD0<br />
; ===========================================================================<br />
bra.w loc_72BE6<br />
; ===========================================================================<br />
bra.w loc_72BEE<br />
; ===========================================================================<br />
bra.w loc_72BF4<br />
; ===========================================================================<br />
bra.w loc_72C26<br />
; ===========================================================================<br />
bra.w loc_72D30<br />
; ===========================================================================<br />
bra.w loc_72D52<br />
; ===========================================================================<br />
bra.w loc_72D58<br />
; ===========================================================================<br />
bra.w loc_72E06<br />
; ===========================================================================<br />
bra.w loc_72E20<br />
; ===========================================================================<br />
bra.w loc_72E26<br />
; ===========================================================================<br />
bra.w loc_72E2C<br />
; ===========================================================================<br />
bra.w loc_72E38<br />
; ===========================================================================<br />
bra.w loc_72E52<br />
; ===========================================================================<br />
bra.w loc_72E64<br />
; ===========================================================================<br />
<br />
loc_72ACC: ; XREF: loc_72A64<br />
move.b (a4)+,d1<br />
tst.b 1(a5)<br />
bmi.s locret_72AEA<br />
move.b $A(a5),d0<br />
andi.b #$37,d0<br />
or.b d0,d1<br />
move.b d1,$A(a5)<br />
move.b #$B4,d0<br />
bra.w loc_72716<br />
; ===========================================================================<br />
<br />
locret_72AEA:<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72AEC: ; XREF: loc_72A64<br />
move.b (a4)+,$1E(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72AF2: ; XREF: loc_72A64<br />
move.b (a4)+,7(a6)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72AF8: ; XREF: loc_72A64<br />
moveq #0,d0<br />
move.b $D(a5),d0<br />
movea.l (a5,d0.w),a4<br />
move.l #0,(a5,d0.w)<br />
addq.w #2,a4<br />
addq.b #4,d0<br />
move.b d0,$D(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72B14: ; XREF: loc_72A64<br />
movea.l a6,a0<br />
lea $3A0(a6),a1<br />
move.w #$87,d0<br />
<br />
loc_72B1E:<br />
move.l (a1)+,(a0)+<br />
dbf d0,loc_72B1E<br />
<br />
bset #2,$40(a6)<br />
movea.l a5,a3<br />
move.b #$28,d6<br />
sub.b $26(a6),d6<br />
moveq #5,d7<br />
lea $70(a6),a5<br />
<br />
loc_72B3A:<br />
btst #7,(a5)<br />
beq.s loc_72B5C<br />
bset #1,(a5)<br />
add.b d6,9(a5)<br />
btst #2,(a5)<br />
bne.s loc_72B5C<br />
moveq #0,d0<br />
move.b $B(a5),d0<br />
movea.l $18(a6),a1<br />
jsr sub_72C4E(pc)<br />
<br />
loc_72B5C:<br />
adda.w #$30,a5<br />
dbf d7,loc_72B3A<br />
<br />
moveq #2,d7<br />
<br />
loc_72B66:<br />
btst #7,(a5)<br />
beq.s loc_72B78<br />
bset #1,(a5)<br />
jsr sub_729A0(pc)<br />
add.b d6,9(a5)<br />
<br />
loc_72B78:<br />
adda.w #$30,a5<br />
dbf d7,loc_72B66<br />
movea.l a3,a5<br />
move.b #$80,$24(a6)<br />
move.b #$28,$26(a6)<br />
clr.b $27(a6)<br />
move.w #0,($A11100).l<br />
addq.w #8,sp<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72B9E: ; XREF: loc_72A64<br />
move.b (a4)+,2(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72BA4: ; XREF: loc_72A64<br />
move.b (a4)+,d0<br />
add.b d0,9(a5)<br />
bra.w sub_72CB4<br />
; ===========================================================================<br />
<br />
loc_72BAE: ; XREF: loc_72A64<br />
bset #4,(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72BB4: ; XREF: loc_72A64<br />
move.b (a4),$12(a5)<br />
move.b (a4)+,$13(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72BBE: ; XREF: loc_72A64<br />
move.b (a4)+,d0<br />
add.b d0,8(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72BC6: ; XREF: loc_72A64<br />
move.b (a4),2(a6)<br />
move.b (a4)+,1(a6)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72BD0: ; XREF: loc_72A64<br />
lea $40(a6),a0<br />
move.b (a4)+,d0<br />
moveq #$30,d1<br />
moveq #9,d2<br />
<br />
loc_72BDA:<br />
move.b d0,2(a0)<br />
adda.w d1,a0<br />
dbf d2,loc_72BDA<br />
<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72BE6: ; XREF: loc_72A64<br />
move.b (a4)+,d0<br />
add.b d0,9(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72BEE: ; XREF: loc_72A64<br />
clr.b $2C(a6)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72BF4: ; XREF: loc_72A64<br />
bclr #7,(a5)<br />
bclr #4,(a5)<br />
jsr sub_726FE(pc)<br />
tst.b $250(a6)<br />
bmi.s loc_72C22<br />
movea.l a5,a3<br />
lea $100(a6),a5<br />
movea.l $18(a6),a1<br />
bclr #2,(a5)<br />
bset #1,(a5)<br />
move.b $B(a5),d0<br />
jsr sub_72C4E(pc)<br />
movea.l a3,a5<br />
<br />
loc_72C22:<br />
addq.w #8,sp<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72C26: ; XREF: loc_72A64<br />
moveq #0,d0<br />
move.b (a4)+,d0<br />
move.b d0,$B(a5)<br />
btst #2,(a5)<br />
bne.w locret_72CAA<br />
movea.l $18(a6),a1<br />
tst.b $E(a6)<br />
beq.s sub_72C4E<br />
movea.l $20(a5),a1<br />
tst.b $E(a6)<br />
bmi.s sub_72C4E<br />
movea.l $20(a6),a1<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_72C4E: ; XREF: Snd_FadeOut1; et al<br />
subq.w #1,d0<br />
bmi.s loc_72C5C<br />
move.w #$19,d1<br />
<br />
loc_72C56:<br />
adda.w d1,a1<br />
dbf d0,loc_72C56<br />
<br />
loc_72C5C:<br />
move.b (a1)+,d1<br />
move.b d1,$1F(a5)<br />
move.b d1,d4<br />
move.b #$B0,d0<br />
jsr sub_72722(pc)<br />
lea byte_72D18(pc),a2<br />
moveq #$13,d3<br />
<br />
loc_72C72:<br />
move.b (a2)+,d0<br />
move.b (a1)+,d1<br />
jsr sub_72722(pc)<br />
dbf d3,loc_72C72<br />
moveq #3,d5<br />
andi.w #7,d4<br />
move.b byte_72CAC(pc,d4.w),d4<br />
move.b 9(a5),d3<br />
<br />
loc_72C8C:<br />
move.b (a2)+,d0<br />
move.b (a1)+,d1<br />
lsr.b #1,d4<br />
bcc.s loc_72C96<br />
add.b d3,d1<br />
<br />
loc_72C96:<br />
jsr sub_72722(pc)<br />
dbf d5,loc_72C8C<br />
move.b #$B4,d0<br />
move.b $A(a5),d1<br />
jsr sub_72722(pc)<br />
<br />
locret_72CAA:<br />
rts <br />
; End of function sub_72C4E<br />
<br />
; ===========================================================================<br />
byte_72CAC: dc.b 8, 8, 8, 8, $A, $E, $E, $F<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_72CB4: ; XREF: sub_72504; sub_7267C; loc_72BA4<br />
btst #2,(a5)<br />
bne.s locret_72D16<br />
moveq #0,d0<br />
move.b $B(a5),d0<br />
movea.l $18(a6),a1<br />
tst.b $E(a6)<br />
beq.s loc_72CD8<br />
movea.l $20(a6),a1<br />
tst.b $E(a6)<br />
bmi.s loc_72CD8<br />
movea.l $20(a6),a1<br />
<br />
loc_72CD8:<br />
subq.w #1,d0<br />
bmi.s loc_72CE6<br />
move.w #$19,d1<br />
<br />
loc_72CE0:<br />
adda.w d1,a1<br />
dbf d0,loc_72CE0<br />
<br />
loc_72CE6:<br />
adda.w #$15,a1<br />
lea byte_72D2C(pc),a2<br />
move.b $1F(a5),d0<br />
andi.w #7,d0<br />
move.b byte_72CAC(pc,d0.w),d4<br />
move.b 9(a5),d3<br />
bmi.s locret_72D16<br />
moveq #3,d5<br />
<br />
loc_72D02:<br />
move.b (a2)+,d0<br />
move.b (a1)+,d1<br />
lsr.b #1,d4<br />
bcc.s loc_72D12<br />
add.b d3,d1<br />
bcs.s loc_72D12<br />
jsr sub_72722(pc)<br />
<br />
loc_72D12:<br />
dbf d5,loc_72D02<br />
<br />
locret_72D16:<br />
rts <br />
; End of function sub_72CB4<br />
<br />
; ===========================================================================<br />
byte_72D18: dc.b $30, $38, $34, $3C, $50, $58, $54, $5C, $60, $68<br />
dc.b $64, $6C, $70, $78, $74, $7C, $80, $88, $84, $8C<br />
byte_72D2C: dc.b $40, $48, $44, $4C<br />
; ===========================================================================<br />
<br />
loc_72D30: ; XREF: loc_72A64<br />
bset #3,(a5)<br />
move.l a4,$14(a5)<br />
move.b (a4)+,$18(a5)<br />
move.b (a4)+,$19(a5)<br />
move.b (a4)+,$1A(a5)<br />
move.b (a4)+,d0<br />
lsr.b #1,d0<br />
move.b d0,$1B(a5)<br />
clr.w $1C(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72D52: ; XREF: loc_72A64<br />
bset #3,(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72D58: ; XREF: loc_72A64<br />
bclr #7,(a5)<br />
bclr #4,(a5)<br />
tst.b 1(a5)<br />
bmi.s loc_72D74<br />
tst.b 8(a6)<br />
bmi.w loc_72E02<br />
jsr sub_726FE(pc)<br />
bra.s loc_72D78<br />
; ===========================================================================<br />
<br />
loc_72D74:<br />
jsr sub_729A0(pc)<br />
<br />
loc_72D78:<br />
tst.b $E(a6)<br />
bpl.w loc_72E02<br />
clr.b 0(a6)<br />
moveq #0,d0<br />
move.b 1(a5),d0<br />
bmi.s loc_72DCC<br />
lea dword_722CC(pc),a0<br />
movea.l a5,a3<br />
cmpi.b #4,d0<br />
bne.s loc_72DA8<br />
tst.b $340(a6)<br />
bpl.s loc_72DA8<br />
lea $340(a6),a5<br />
movea.l $20(a6),a1<br />
bra.s loc_72DB8<br />
; ===========================================================================<br />
<br />
loc_72DA8:<br />
subq.b #2,d0<br />
lsl.b #2,d0<br />
movea.l (a0,d0.w),a5<br />
tst.b (a5)<br />
bpl.s loc_72DC8<br />
movea.l $18(a6),a1<br />
<br />
loc_72DB8:<br />
bclr #2,(a5)<br />
bset #1,(a5)<br />
move.b $B(a5),d0<br />
jsr sub_72C4E(pc)<br />
<br />
loc_72DC8:<br />
movea.l a3,a5<br />
bra.s loc_72E02<br />
; ===========================================================================<br />
<br />
loc_72DCC:<br />
lea $370(a6),a0<br />
tst.b (a0)<br />
bpl.s loc_72DE0<br />
cmpi.b #$E0,d0<br />
beq.s loc_72DEA<br />
cmpi.b #$C0,d0<br />
beq.s loc_72DEA<br />
<br />
loc_72DE0:<br />
lea dword_722CC(pc),a0<br />
lsr.b #3,d0<br />
movea.l (a0,d0.w),a0<br />
<br />
loc_72DEA:<br />
bclr #2,(a0)<br />
bset #1,(a0)<br />
cmpi.b #$E0,1(a0)<br />
bne.s loc_72E02<br />
move.b $1F(a0),($C00011).l<br />
<br />
loc_72E02:<br />
addq.w #8,sp<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72E06: ; XREF: loc_72A64<br />
move.b #$E0,1(a5)<br />
move.b (a4)+,$1F(a5)<br />
btst #2,(a5)<br />
bne.s locret_72E1E<br />
move.b -1(a4),($C00011).l<br />
<br />
locret_72E1E:<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72E20: ; XREF: loc_72A64<br />
bclr #3,(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72E26: ; XREF: loc_72A64<br />
move.b (a4)+,$B(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72E2C: ; XREF: loc_72A64<br />
move.b (a4)+,d0<br />
lsl.w #8,d0<br />
move.b (a4)+,d0<br />
adda.w d0,a4<br />
subq.w #1,a4<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72E38: ; XREF: loc_72A64<br />
moveq #0,d0<br />
move.b (a4)+,d0<br />
move.b (a4)+,d1<br />
tst.b $24(a5,d0.w)<br />
bne.s loc_72E48<br />
move.b d1,$24(a5,d0.w)<br />
<br />
loc_72E48:<br />
subq.b #1,$24(a5,d0.w)<br />
bne.s loc_72E2C<br />
addq.w #2,a4<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72E52: ; XREF: loc_72A64<br />
moveq #0,d0<br />
move.b $D(a5),d0<br />
subq.b #4,d0<br />
move.l a4,(a5,d0.w)<br />
move.b d0,$D(a5)<br />
bra.s loc_72E2C<br />
; ===========================================================================<br />
<br />
loc_72E64: ; XREF: loc_72A64<br />
move.b #$88,d0<br />
move.b #$F,d1<br />
jsr sub_7272E(pc)<br />
move.b #$8C,d0<br />
move.b #$F,d1<br />
bra.w sub_7272E<br />
; ===========================================================================<br />
Kos_Z80: binclude sound\z80_1.bin<br />
dc.w ((SegaPCM&$FF)<<8)+((SegaPCM&$FF00)>>8)<br />
dc.b $21<br />
dc.w (((EndOfRom-SegaPCM)&$FF)<<8)+(((EndOfRom-SegaPCM)&$FF00)>>8)<br />
binclude sound\z80_2.bin<br />
align 2<br />
Music81: binclude sound\music81.bin<br />
align 2<br />
Music82: binclude sound\music82.bin<br />
align 2<br />
Music83: binclude sound\music83.bin<br />
align 2<br />
Music84: binclude sound\music84.bin<br />
align 2<br />
Music85: binclude sound\music85.bin<br />
align 2<br />
Music86: binclude sound\music86.bin<br />
align 2<br />
Music87: binclude sound\music87.bin<br />
align 2<br />
Music88: binclude sound\music88.bin<br />
align 2<br />
Music89: binclude sound\music89.bin<br />
align 2<br />
Music8A: binclude sound\music8A.bin<br />
align 2<br />
Music8B: binclude sound\music8B.bin<br />
align 2<br />
Music8C: binclude sound\music8C.bin<br />
align 2<br />
Music8D: binclude sound\music8D.bin<br />
align 2<br />
Music8E: binclude sound\music8E.bin<br />
align 2<br />
Music8F: binclude sound\music8F.bin<br />
align 2<br />
Music90: binclude sound\music90.bin<br />
align 2<br />
Music91: binclude sound\music91.bin<br />
align 2<br />
Music92: binclude sound\music92.bin<br />
align 2<br />
Music93: binclude sound\music93.bin<br />
align 2<br />
; ---------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ---------------------------------------------------------------------------<br />
SoundIndex: dc.l SoundA0, SoundA1, SoundA2<br />
dc.l SoundA3, SoundA4, SoundA5<br />
dc.l SoundA6, SoundA7, SoundA8<br />
dc.l SoundA9, SoundAA, SoundAB<br />
dc.l SoundAC, SoundAD, SoundAE<br />
dc.l SoundAF, SoundB0, SoundB1<br />
dc.l SoundB2, SoundB3, SoundB4<br />
dc.l SoundB5, SoundB6, SoundB7<br />
dc.l SoundB8, SoundB9, SoundBA<br />
dc.l SoundBB, SoundBC, SoundBD<br />
dc.l SoundBE, SoundBF, SoundC0<br />
dc.l SoundC1, SoundC2, SoundC3<br />
dc.l SoundC4, SoundC5, SoundC6<br />
dc.l SoundC7, SoundC8, SoundC9<br />
dc.l SoundCA, SoundCB, SoundCC<br />
dc.l SoundCD, SoundCE, SoundCF<br />
SoundD0Index: dc.l SoundD0<br />
SoundA0: binclude sound\soundA0.bin<br />
align 2<br />
SoundA1: binclude sound\soundA1.bin<br />
align 2<br />
SoundA2: binclude sound\soundA2.bin<br />
align 2<br />
SoundA3: binclude sound\soundA3.bin<br />
align 2<br />
SoundA4: binclude sound\soundA4.bin<br />
align 2<br />
SoundA5: binclude sound\soundA5.bin<br />
align 2<br />
SoundA6: binclude sound\soundA6.bin<br />
align 2<br />
SoundA7: binclude sound\soundA7.bin<br />
align 2<br />
SoundA8: binclude sound\soundA8.bin<br />
align 2<br />
SoundA9: binclude sound\soundA9.bin<br />
align 2<br />
SoundAA: binclude sound\soundAA.bin<br />
align 2<br />
SoundAB: binclude sound\soundAB.bin<br />
align 2<br />
SoundAC: binclude sound\soundAC.bin<br />
align 2<br />
SoundAD: binclude sound\soundAD.bin<br />
align 2<br />
SoundAE: binclude sound\soundAE.bin<br />
align 2<br />
SoundAF: binclude sound\soundAF.bin<br />
align 2<br />
SoundB0: binclude sound\soundB0.bin<br />
align 2<br />
SoundB1: binclude sound\soundB1.bin<br />
align 2<br />
SoundB2: binclude sound\soundB2.bin<br />
align 2<br />
SoundB3: binclude sound\soundB3.bin<br />
align 2<br />
SoundB4: binclude sound\soundB4.bin<br />
align 2<br />
SoundB5: binclude sound\soundB5.bin<br />
align 2<br />
SoundB6: binclude sound\soundB6.bin<br />
align 2<br />
SoundB7: binclude sound\soundB7.bin<br />
align 2<br />
SoundB8: binclude sound\soundB8.bin<br />
align 2<br />
SoundB9: binclude sound\soundB9.bin<br />
align 2<br />
SoundBA: binclude sound\soundBA.bin<br />
align 2<br />
SoundBB: binclude sound\soundBB.bin<br />
align 2<br />
SoundBC: binclude sound\soundBC.bin<br />
align 2<br />
SoundBD: binclude sound\soundBD.bin<br />
align 2<br />
SoundBE: binclude sound\soundBE.bin<br />
align 2<br />
SoundBF: binclude sound\soundBF.bin<br />
align 2<br />
SoundC0: binclude sound\soundC0.bin<br />
align 2<br />
SoundC1: binclude sound\soundC1.bin<br />
align 2<br />
SoundC2: binclude sound\soundC2.bin<br />
align 2<br />
SoundC3: binclude sound\soundC3.bin<br />
align 2<br />
SoundC4: binclude sound\soundC4.bin<br />
align 2<br />
SoundC5: binclude sound\soundC5.bin<br />
align 2<br />
SoundC6: binclude sound\soundC6.bin<br />
align 2<br />
SoundC7: binclude sound\soundC7.bin<br />
align 2<br />
SoundC8: binclude sound\soundC8.bin<br />
align 2<br />
SoundC9: binclude sound\soundC9.bin<br />
align 2<br />
SoundCA: binclude sound\soundCA.bin<br />
align 2<br />
SoundCB: binclude sound\soundCB.bin<br />
align 2<br />
SoundCC: binclude sound\soundCC.bin<br />
align 2<br />
SoundCD: binclude sound\soundCD.bin<br />
align 2<br />
SoundCE: binclude sound\soundCE.bin<br />
align 2<br />
SoundCF: binclude sound\soundCF.bin<br />
align 2<br />
SoundD0: binclude sound\soundD0.bin<br />
align 2<br />
SegaPCM: binclude sound\segapcm.bin<br />
align 2<br />
</asm><br />
and replace it completely with:<br />
<asm><br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MB_Ptr equ (Mini_Boss_Snd&$FFFF)|$8000 ; $C71A0<br />
FB_Ptr equ (Final_Boss_Snd&$FFFF)|$8000 ; $C7A61<br />
AIz1_Ptr equ (Angel_Island_1_Snd&$FFFF)|$8000 ; $C8000<br />
AIz2_Ptr equ (Angel_Island_2_Snd&$FFFF)|$8000 ; $C9B6D<br />
HCz1_Ptr equ (Hidrocity_1_Snd&$FFFF)|$8000 ; $CB0BC<br />
HCz2_Ptr equ (Hidrocity_2_Snd&$FFFF)|$8000 ; $CC0C6<br />
MGz1_Ptr equ (Marble_Garden_1_Snd&$FFFF)|$8000 ; $CD364<br />
MGz2_Ptr equ (Marble_Garden_2_Snd&$FFFF)|$8000 ; $CD97B<br />
CNz2_Ptr equ (Carnival_Night_2_Snd&$FFFF)|$8000 ; $CDDA9<br />
CNz1_Ptr equ (Carnival_Night_1_Snd&$FFFF)|$8000 ; $CE48F<br />
FBz1_Ptr equ (Flying_Battery_1_Snd&$FFFF)|$8000 ; $CEBF1<br />
FBz2_Ptr equ (Flying_Battery_2_Snd&$FFFF)|$8000 ; $CF189<br />
TDz_Ptr equ (The_Doomsday_Snd&$FFFF)|$8000 ; $CF6F0<br />
Iz2_Ptr equ (Icecap_2_Snd&$FFFF)|$8000 ; $D0000<br />
Iz1_Ptr equ (Icecap_1_Snd&$FFFF)|$8000 ; $D06AA<br />
LBz2_Ptr equ (Launch_Base_2_Snd&$FFFF)|$8000 ; $D0DC8<br />
LBz1_Ptr equ (Launch_Base_1_Snd&$FFFF)|$8000 ; $D1345<br />
MHz1_Ptr equ (Mushroom_Hill_1_Snd&$FFFF)|$8000 ; $D17A7<br />
MHz2_Ptr equ (Mushroom_Hill_2_Snd&$FFFF)|$8000 ; $D1DAF<br />
Sz1_Ptr equ (Sandopolis_1_Snd&$FFFF)|$8000 ; $D2331<br />
Sz2_Ptr equ (Sandopolis_2_Snd&$FFFF)|$8000 ; $D299B<br />
LRz1_Ptr equ (Lava_Reef_1_Snd&$FFFF)|$8000 ; $D2F8E<br />
LRz2_Ptr equ (Lava_Reef_2_Snd&$FFFF)|$8000 ; $D399C<br />
SCz_Ptr equ (Sky_Sanctuary_Snd&$FFFF)|$8000 ; $D4B29<br />
DEz1_Ptr equ (Death_Egg_1_Snd&$FFFF)|$8000 ; $D4F4F<br />
DEz2_Ptr equ (Death_Egg_2_Snd&$FFFF)|$8000 ; $D543A<br />
MB_SK_Ptr equ (Mini_Boss_SK_Snd&$FFFF)|$8000 ; $D584C<br />
Boss_Ptr equ (Boss_Snd&$FFFF)|$8000 ; $D5B7C<br />
GS_BS_Ptr equ (Glowing_Spheres_Bonus_Stage_snd&$FFFF)|$8000 ; $D6078<br />
SS_Ptr equ (Special_Stage_Snd&$FFFF)|$8000 ; $D65DB<br />
LR_Ptr equ (Level_Results_Snd&$FFFF)|$8000 ; $D6E73<br />
Menu_Ptr equ (Menu_Snd&$FFFF)|$8000 ; $D7027<br />
SM_BS_Ptr equ (Slot_Machine_Bonus_Stage_snd&$FFFF)|$8000 ; $D8000<br />
GBM_BS_Ptr equ (Gum_Ball_Machine_Bonus_Stage_snd&$FFFF)|$8000 ; $D8AE8<br />
KTE_Ptr equ (Knuckles_Theme_Snd&$FFFF)|$8000 ; $D97FD<br />
ALz_Ptr equ (Azure_Lake_Snd&$FFFF)|$8000 ; $D99F7<br />
BPz_Ptr equ (Balloon_Park_Snd&$FFFF)|$8000 ; $DA4FD<br />
DPz_Ptr equ (Desert_Palace_Snd&$FFFF)|$8000 ; $DB0EC<br />
CGz_Ptr equ (Chrome_Gadget_Snd&$FFFF)|$8000 ; $DC324<br />
EMz_Ptr equ (Endless_Mine_Snd&$FFFF)|$8000 ; $DDA47<br />
TS_Ptr equ (Title_Screen_Snd&$FFFF)|$8000 ; $DE18F<br />
Credits_Ptr equ (Credits_Snd&$FFFF)|$8000 ; $DE587<br />
TGOvr_Ptr equ (Time_Game_Over_Snd&$FFFF)|$8000 ; $DEA20<br />
Continue_Ptr equ (Continue_Snd&$FFFF)|$8000 ; $DEC7B<br />
_1_Up_Ptr equ (Extra_Life_Snd&$FFFF)|$8000 ; $DF095<br />
Emerald_Ptr equ (Emerald_Snd&$FFFF)|$8000 ; $DF298<br />
Invcblty_Ptr equ (Invencibility_Snd&$FFFF)|$8000 ; $DF364<br />
_2p_Menu_Ptr equ (Competition_Menu_Snd&$FFFF)|$8000 ; $DF5E4<br />
UT_Ptr equ (Underwater_Timming_Snd&$FFFF)|$8000 ; $DFABE<br />
PbS_Ptr equ (Presented_by_SEGA_Snd&$FFFF)|$8000 ; $DFBFE<br />
<br />
Sfx_34_Ptr equ (Sfx_34_Snd&$FFFF)|$8000 ; $FDE30<br />
Sfx_35_Ptr equ (Sfx_35_Snd&$FFFF)|$8000 ; $FDE5E<br />
Sfx_36_Ptr equ (Sfx_36_Snd&$FFFF)|$8000 ; $FDE6F<br />
Sfx_37_Ptr equ (Sfx_37_Snd&$FFFF)|$8000 ; $FDEA1<br />
Sfx_38_Ptr equ (Sfx_38_Snd&$FFFF)|$8000 ; $FDEC5<br />
Sfx_39_Ptr equ (Sfx_39_Snd&$FFFF)|$8000 ; $FDEF4<br />
Sfx_3A_Ptr equ (Sfx_3A_Snd&$FFFF)|$8000 ; $FDF2A<br />
Sfx_3B_Ptr equ (Sfx_3B_Snd&$FFFF)|$8000 ; $FDF6B<br />
Sfx_3C_Ptr equ (Sfx_3C_Snd&$FFFF)|$8000 ; $FDF96<br />
Sfx_3D_Ptr equ (Sfx_3D_Snd&$FFFF)|$8000 ; $FDFE5<br />
Sfx_3E_Ptr equ (Sfx_3E_Snd&$FFFF)|$8000 ; $FE023<br />
Sfx_3F_Ptr equ (Sfx_3F_Snd&$FFFF)|$8000 ; $FE05D<br />
Sfx_40_Ptr equ (Sfx_40_Snd&$FFFF)|$8000 ; $FE088<br />
Sfx_41_Ptr equ (Sfx_41_Snd&$FFFF)|$8000 ; $FE0AB<br />
Sfx_42_Ptr equ (Sfx_42_Snd&$FFFF)|$8000 ; $FE0CE<br />
Sfx_43_Ptr equ (Sfx_43_Snd&$FFFF)|$8000 ; $FE0F1<br />
Sfx_44_Ptr equ (Sfx_44_Snd&$FFFF)|$8000 ; $FE109<br />
Sfx_45_Ptr equ (Sfx_45_Snd&$FFFF)|$8000 ; $FE122<br />
Sfx_46_Ptr equ (Sfx_46_Snd&$FFFF)|$8000 ; $FE14F<br />
Sfx_47_Ptr equ (Sfx_47_Snd&$FFFF)|$8000 ; $FE177<br />
Sfx_48_Ptr equ (Sfx_48_Snd&$FFFF)|$8000 ; $FE1A4<br />
Sfx_49_Ptr equ (Sfx_49_Snd&$FFFF)|$8000 ; $FE1C4<br />
Sfx_4A_Ptr equ (Sfx_4A_Snd&$FFFF)|$8000 ; $FE1DE<br />
Sfx_4B_Ptr equ (Sfx_4B_Snd&$FFFF)|$8000 ; $FE206<br />
Sfx_4C_Ptr equ (Sfx_4C_Snd&$FFFF)|$8000 ; $FE22E<br />
Sfx_4D_Ptr equ (Sfx_4D_Snd&$FFFF)|$8000 ; $FE278<br />
Sfx_4E_Ptr equ (Sfx_4E_Snd&$FFFF)|$8000 ; $FE2A2<br />
Sfx_4F_Ptr equ (Sfx_4F_Snd&$FFFF)|$8000 ; $FE2CF<br />
Sfx_50_Ptr equ (Sfx_50_Snd&$FFFF)|$8000 ; $FE313<br />
Sfx_51_Ptr equ (Sfx_51_Snd&$FFFF)|$8000 ; $FE322<br />
Sfx_52_Ptr equ (Sfx_52_Snd&$FFFF)|$8000 ; $FE35A<br />
Sfx_53_Ptr equ (Sfx_53_Snd&$FFFF)|$8000 ; $FE38B<br />
Sfx_54_Ptr equ (Sfx_54_Snd&$FFFF)|$8000 ; $FE3A8<br />
Sfx_55_Ptr equ (Sfx_55_Snd&$FFFF)|$8000 ; $FE3E8<br />
Sfx_56_Ptr equ (Sfx_56_Snd&$FFFF)|$8000 ; $FE42B<br />
Sfx_57_Ptr equ (Sfx_57_Snd&$FFFF)|$8000 ; $FE453<br />
Sfx_58_Ptr equ (Sfx_58_Snd&$FFFF)|$8000 ; $FE463<br />
Sfx_59_Ptr equ (Sfx_59_Snd&$FFFF)|$8000 ; $FE481<br />
Sfx_5A_Ptr equ (Sfx_5A_Snd&$FFFF)|$8000 ; $FE49A<br />
Sfx_5B_Ptr equ (Sfx_5B_Snd&$FFFF)|$8000 ; $FE4F6<br />
Sfx_5C_Ptr equ (Sfx_5C_Snd&$FFFF)|$8000 ; $FE523<br />
Sfx_5D_Ptr equ (Sfx_5D_Snd&$FFFF)|$8000 ; $FE530<br />
Sfx_5E_Ptr equ (Sfx_5E_Snd&$FFFF)|$8000 ; $FE558<br />
Sfx_5F_Ptr equ (Sfx_5F_Snd&$FFFF)|$8000 ; $FE581<br />
Sfx_60_Ptr equ (Sfx_60_Snd&$FFFF)|$8000 ; $FE5B2<br />
Sfx_61_Ptr equ (Sfx_61_Snd&$FFFF)|$8000 ; $FE5DA<br />
Sfx_62_Ptr equ (Sfx_62_Snd&$FFFF)|$8000 ; $FE61B<br />
Sfx_63_Ptr equ (Sfx_63_Snd&$FFFF)|$8000 ; $FE64C<br />
Sfx_64_Ptr equ (Sfx_64_Snd&$FFFF)|$8000 ; $FE662<br />
Sfx_65_Ptr equ (Sfx_65_Snd&$FFFF)|$8000 ; $FE68C<br />
Sfx_66_Ptr equ (Sfx_66_Snd&$FFFF)|$8000 ; $FE6AB<br />
Sfx_67_Ptr equ (Sfx_67_Snd&$FFFF)|$8000 ; $FE6E1<br />
Sfx_68_Ptr equ (Sfx_68_Snd&$FFFF)|$8000 ; $FE730<br />
Sfx_69_Ptr equ (Sfx_69_Snd&$FFFF)|$8000 ; $FE75C<br />
Sfx_6A_Ptr equ (Sfx_6A_Snd&$FFFF)|$8000 ; $FE7B0<br />
Sfx_6B_Ptr equ (Sfx_6B_Snd&$FFFF)|$8000 ; $FE7DD<br />
Sfx_6C_Ptr equ (Sfx_6C_Snd&$FFFF)|$8000 ; $FE811<br />
Sfx_6D_Ptr equ (Sfx_6D_Snd&$FFFF)|$8000 ; $FE823<br />
Sfx_6E_Ptr equ (Sfx_6E_Snd&$FFFF)|$8000 ; $FE833<br />
Sfx_6F_Ptr equ (Sfx_6F_Snd&$FFFF)|$8000 ; $FE852<br />
Sfx_70_Ptr equ (Sfx_70_Snd&$FFFF)|$8000 ; $FE886<br />
Sfx_71_Ptr equ (Sfx_71_Snd&$FFFF)|$8000 ; $FE896<br />
Sfx_72_Ptr equ (Sfx_72_Snd&$FFFF)|$8000 ; $FE8E0<br />
Sfx_73_Ptr equ (Sfx_73_Snd&$FFFF)|$8000 ; $FE8EA<br />
Sfx_74_Ptr equ (Sfx_74_Snd&$FFFF)|$8000 ; $FE917<br />
Sfx_75_Ptr equ (Sfx_75_Snd&$FFFF)|$8000 ; $FE94B<br />
Sfx_76_Ptr equ (Sfx_76_Snd&$FFFF)|$8000 ; $FE978<br />
Sfx_77_Ptr equ (Sfx_77_Snd&$FFFF)|$8000 ; $FE9A7<br />
Sfx_78_Ptr equ (Sfx_78_Snd&$FFFF)|$8000 ; $FE9D1<br />
Sfx_79_Ptr equ (Sfx_79_Snd&$FFFF)|$8000 ; $FEA1B<br />
Sfx_7A_Ptr equ (Sfx_7A_Snd&$FFFF)|$8000 ; $FEA48<br />
Sfx_7B_Ptr equ (Sfx_7B_Snd&$FFFF)|$8000 ; $FEA93<br />
Sfx_7C_Ptr equ (Sfx_7C_Snd&$FFFF)|$8000 ; $FEAC7<br />
Sfx_7D_Ptr equ (Sfx_7D_Snd&$FFFF)|$8000 ; $FEAF7<br />
Sfx_7E_Ptr equ (Sfx_7E_Snd&$FFFF)|$8000 ; $FEB28<br />
Sfx_7F_Ptr equ (Sfx_7F_Snd&$FFFF)|$8000 ; $FEB55<br />
Sfx_80_Ptr equ (Sfx_80_Snd&$FFFF)|$8000 ; $FEB6D<br />
Sfx_81_Ptr equ (Sfx_81_Snd&$FFFF)|$8000 ; $FEB8B<br />
Sfx_82_Ptr equ (Sfx_82_Snd&$FFFF)|$8000 ; $FEBBA<br />
Sfx_83_Ptr equ (Sfx_83_Snd&$FFFF)|$8000 ; $FEC05<br />
Sfx_84_Ptr equ (Sfx_84_Snd&$FFFF)|$8000 ; $FEC32<br />
Sfx_85_Ptr equ (Sfx_85_Snd&$FFFF)|$8000 ; $FEC7E<br />
Sfx_86_Ptr equ (Sfx_86_Snd&$FFFF)|$8000 ; $FECAB<br />
Sfx_87_Ptr equ (Sfx_87_Snd&$FFFF)|$8000 ; $FECD8<br />
Sfx_88_Ptr equ (Sfx_88_Snd&$FFFF)|$8000 ; $FED05<br />
Sfx_89_Ptr equ (Sfx_89_Snd&$FFFF)|$8000 ; $FED3B<br />
Sfx_8A_Ptr equ (Sfx_8A_Snd&$FFFF)|$8000 ; $FED68<br />
Sfx_8B_Ptr equ (Sfx_8B_Snd&$FFFF)|$8000 ; $FED75<br />
Sfx_8C_Ptr equ (Sfx_8C_Snd&$FFFF)|$8000 ; $FEDA9<br />
Sfx_8D_Ptr equ (Sfx_8D_Snd&$FFFF)|$8000 ; $FEDDF<br />
Sfx_8E_Ptr equ (Sfx_8E_Snd&$FFFF)|$8000 ; $FEE10<br />
Sfx_8F_Ptr equ (Sfx_8F_Snd&$FFFF)|$8000 ; $FEE2A<br />
Sfx_90_Ptr equ (Sfx_90_Snd&$FFFF)|$8000 ; $FEE5B<br />
Sfx_91_Ptr equ (Sfx_91_Snd&$FFFF)|$8000 ; $FEE91<br />
Sfx_92_Ptr equ (Sfx_92_Snd&$FFFF)|$8000 ; $FEEC3<br />
Sfx_93_Ptr equ (Sfx_93_Snd&$FFFF)|$8000 ; $FEEF9<br />
Sfx_94_Ptr equ (Sfx_94_Snd&$FFFF)|$8000 ; $FEF2D<br />
Sfx_95_Ptr equ (Sfx_95_Snd&$FFFF)|$8000 ; $FEF77<br />
Sfx_96_Ptr equ (Sfx_96_Snd&$FFFF)|$8000 ; $FEFA6<br />
Sfx_97_Ptr equ (Sfx_97_Snd&$FFFF)|$8000 ; $FEFD5<br />
Sfx_98_Ptr equ (Sfx_98_Snd&$FFFF)|$8000 ; $FF009<br />
Sfx_99_Ptr equ (Sfx_99_Snd&$FFFF)|$8000 ; $FF01C<br />
Sfx_9A_Ptr equ (Sfx_9A_Snd&$FFFF)|$8000 ; $FF068<br />
Sfx_9B_Ptr equ (Sfx_9B_Snd&$FFFF)|$8000 ; $FF090<br />
Sfx_9C_Ptr equ (Sfx_9C_Snd&$FFFF)|$8000 ; $FF0AF<br />
Sfx_9D_Ptr equ (Sfx_9D_Snd&$FFFF)|$8000 ; $FF114<br />
Sfx_9E_Ptr equ (Sfx_9E_Snd&$FFFF)|$8000 ; $FF14B<br />
Sfx_9F_Ptr equ (Sfx_9F_Snd&$FFFF)|$8000 ; $FF17F<br />
Sfx_A0_Ptr equ (Sfx_A0_Snd&$FFFF)|$8000 ; $FF1C0<br />
Sfx_A1_Ptr equ (Sfx_A1_Snd&$FFFF)|$8000 ; $FF1FC<br />
Sfx_A2_Ptr equ (Sfx_A2_Snd&$FFFF)|$8000 ; $FF214<br />
Sfx_A3_Ptr equ (Sfx_A3_Snd&$FFFF)|$8000 ; $FF23C<br />
Sfx_A4_Ptr equ (Sfx_A4_Snd&$FFFF)|$8000 ; $FF274<br />
Sfx_A5_Ptr equ (Sfx_A5_Snd&$FFFF)|$8000 ; $FF2A1<br />
Sfx_A6_Ptr equ (Sfx_A6_Snd&$FFFF)|$8000 ; $FF2CE<br />
Sfx_A7_Ptr equ (Sfx_A7_Snd&$FFFF)|$8000 ; $FF2FB<br />
Sfx_A8_Ptr equ (Sfx_A8_Snd&$FFFF)|$8000 ; $FF313<br />
Sfx_A9_Ptr equ (Sfx_A9_Snd&$FFFF)|$8000 ; $FF33B<br />
Sfx_AA_Ptr equ (Sfx_AA_Snd&$FFFF)|$8000 ; $FF365<br />
Sfx_AB_Ptr equ (Sfx_AB_Snd&$FFFF)|$8000 ; $FF38F<br />
Sfx_AC_Ptr equ (Sfx_AC_Snd&$FFFF)|$8000 ; $FF3EA<br />
Sfx_AD_Ptr equ (Sfx_AD_Snd&$FFFF)|$8000 ; $FF42A<br />
Sfx_AE_Ptr equ (Sfx_AE_Snd&$FFFF)|$8000 ; $FF49C<br />
Sfx_AF_Ptr equ (Sfx_AF_Snd&$FFFF)|$8000 ; $FF4AB<br />
Sfx_B0_Ptr equ (Sfx_B0_Snd&$FFFF)|$8000 ; $FF4DA<br />
Sfx_B1_Ptr equ (Sfx_B1_Snd&$FFFF)|$8000 ; $FF507<br />
Sfx_B2_Ptr equ (Sfx_B2_Snd&$FFFF)|$8000 ; $FF582<br />
Sfx_B3_Ptr equ (Sfx_B3_Snd&$FFFF)|$8000 ; $FF5D7<br />
Sfx_B4_Ptr equ (Sfx_B4_Snd&$FFFF)|$8000 ; $FF603<br />
Sfx_B5_Ptr equ (Sfx_B5_Snd&$FFFF)|$8000 ; $FF67D<br />
Sfx_B6_Ptr equ (Sfx_B6_Snd&$FFFF)|$8000 ; $FF6AA<br />
Sfx_B7_Ptr equ (Sfx_B7_Snd&$FFFF)|$8000 ; $FF6D2<br />
Sfx_B8_Ptr equ (Sfx_B8_Snd&$FFFF)|$8000 ; $FF713<br />
Sfx_B9_Ptr equ (Sfx_B9_Snd&$FFFF)|$8000 ; $FF745<br />
Sfx_BA_Ptr equ (Sfx_BA_Snd&$FFFF)|$8000 ; $FF76C<br />
Sfx_BB_Ptr equ (Sfx_BB_Snd&$FFFF)|$8000 ; $FF794<br />
Sfx_BC_Ptr equ (Sfx_BC_Snd&$FFFF)|$8000 ; $FF7BE<br />
Sfx_BD_Ptr equ (Sfx_BD_Snd&$FFFF)|$8000 ; $FF7CE<br />
Sfx_BE_Ptr equ (Sfx_BE_Snd&$FFFF)|$8000 ; $FF7F9<br />
Sfx_BF_Ptr equ (Sfx_BF_Snd&$FFFF)|$8000 ; $FF837<br />
Sfx_C0_Ptr equ (Sfx_C0_Snd&$FFFF)|$8000 ; $FF86A<br />
Sfx_C1_Ptr equ (Sfx_C1_Snd&$FFFF)|$8000 ; $FF89C<br />
Sfx_C2_Ptr equ (Sfx_C2_Snd&$FFFF)|$8000 ; $FF8D1<br />
Sfx_C3_Ptr equ (Sfx_C3_Snd&$FFFF)|$8000 ; $FF907<br />
Sfx_C4_Ptr equ (Sfx_C4_Snd&$FFFF)|$8000 ; $FF91E<br />
Sfx_C5_Ptr equ (Sfx_C5_Snd&$FFFF)|$8000 ; $FF94E<br />
Sfx_C6_Ptr equ (Sfx_C6_Snd&$FFFF)|$8000 ; $FF97E<br />
Sfx_C7_Ptr equ (Sfx_C7_Snd&$FFFF)|$8000 ; $FF9B7<br />
Sfx_C8_Ptr equ (Sfx_C8_Snd&$FFFF)|$8000 ; $FF9F2<br />
Sfx_C9_Ptr equ (Sfx_C9_Snd&$FFFF)|$8000 ; $FFA21<br />
Sfx_CA_Ptr equ (Sfx_CA_Snd&$FFFF)|$8000 ; $FFA2B<br />
Sfx_CB_Ptr equ (Sfx_CB_Snd&$FFFF)|$8000 ; $FFA66<br />
Sfx_CC_Ptr equ (Sfx_CC_Snd&$FFFF)|$8000 ; $FFA9C<br />
Sfx_CD_Ptr equ (Sfx_CD_Snd&$FFFF)|$8000 ; $FFAD7<br />
Sfx_CE_Ptr equ (Sfx_CE_Snd&$FFFF)|$8000 ; $FFB12<br />
Sfx_CF_Ptr equ (Sfx_CF_Snd&$FFFF)|$8000 ; $FFB45<br />
Sfx_D0_Ptr equ (Sfx_D0_Snd&$FFFF)|$8000 ; $FFB60<br />
Sfx_D1_Ptr equ (Sfx_D1_Snd&$FFFF)|$8000 ; $FFB6A<br />
Sfx_D2_Ptr equ (Sfx_D2_Snd&$FFFF)|$8000 ; $FFBA1<br />
Sfx_D3_Ptr equ (Sfx_D3_Snd&$FFFF)|$8000 ; $FFBBE<br />
Sfx_D4_Ptr equ (Sfx_D4_Snd&$FFFF)|$8000 ; $FFBF4<br />
Sfx_D5_Ptr equ (Sfx_D5_Snd&$FFFF)|$8000 ; $FFC2D<br />
Sfx_D6_Ptr equ (Sfx_D6_Snd&$FFFF)|$8000 ; $FFC64<br />
Sfx_D7_Ptr equ (Sfx_D7_Snd&$FFFF)|$8000 ; $FFC9D<br />
Sfx_D8_Ptr equ (Sfx_D8_Snd&$FFFF)|$8000 ; $FFCCE<br />
Sfx_D9_Ptr equ (Sfx_D9_Snd&$FFFF)|$8000 ; $FFCFF<br />
Sfx_DA_Ptr equ (Sfx_DA_Snd&$FFFF)|$8000 ; $FFD32<br />
Sfx_DB_Ptr equ (Sfx_DB_Snd&$FFFF)|$8000 ; $FFD62<br />
Sfx_DC_Ptr equ (Sfx_DC_Snd&$FFFF)|$8000 ; $FFD94<br />
<br />
MusicPointers: <br />
dc.w ((AIz1_Ptr>>$08)|(AIz1_Ptr<<$08))&$FFFF<br />
dc.w ((AIz2_Ptr>>$08)|(AIz2_Ptr<<$08))&$FFFF<br />
dc.w ((HCz1_Ptr>>$08)|(HCz1_Ptr<<$08))&$FFFF<br />
dc.w ((HCz2_Ptr>>$08)|(HCz2_Ptr<<$08))&$FFFF<br />
dc.w ((MGz1_Ptr>>$08)|(MGz1_Ptr<<$08))&$FFFF<br />
dc.w ((MGz2_Ptr>>$08)|(MGz2_Ptr<<$08))&$FFFF<br />
dc.w ((CNz1_Ptr>>$08)|(CNz1_Ptr<<$08))&$FFFF<br />
dc.w ((CNz2_Ptr>>$08)|(CNz2_Ptr<<$08))&$FFFF<br />
dc.w ((FBz1_Ptr>>$08)|(FBz1_Ptr<<$08))&$FFFF<br />
dc.w ((FBz2_Ptr>>$08)|(FBz2_Ptr<<$08))&$FFFF<br />
dc.w ((Iz1_Ptr>>$08)|(Iz1_Ptr<<$08))&$FFFF<br />
dc.w ((Iz2_Ptr>>$08)|(Iz2_Ptr<<$08))&$FFFF<br />
dc.w ((LBz1_Ptr>>$08)|(LBz1_Ptr<<$08))&$FFFF<br />
dc.w ((LBz2_Ptr>>$08)|(LBz2_Ptr<<$08))&$FFFF<br />
dc.w ((MHz1_Ptr>>$08)|(MHz1_Ptr<<$08))&$FFFF<br />
dc.w ((MHz2_Ptr>>$08)|(MHz2_Ptr<<$08))&$FFFF<br />
dc.w ((Sz1_Ptr>>$08)|(Sz1_Ptr<<$08))&$FFFF<br />
dc.w ((Sz2_Ptr>>$08)|(Sz2_Ptr<<$08))&$FFFF<br />
dc.w ((LRz1_Ptr>>$08)|(LRz1_Ptr<<$08))&$FFFF<br />
dc.w ((LRz2_Ptr>>$08)|(LRz2_Ptr<<$08))&$FFFF<br />
dc.w ((SCz_Ptr>>$08)|(SCz_Ptr<<$08))&$FFFF<br />
dc.w ((DEz1_Ptr>>$08)|(DEz1_Ptr<<$08))&$FFFF<br />
dc.w ((DEz2_Ptr>>$08)|(DEz2_Ptr<<$08))&$FFFF<br />
dc.w ((MB_SK_Ptr>>$08)|(MB_SK_Ptr<<$08))&$FFFF<br />
dc.w ((Boss_Ptr>>$08)|(Boss_Ptr<<$08))&$FFFF<br />
dc.w ((TDz_Ptr>>$08)|(TDz_Ptr<<$08))&$FFFF<br />
dc.w ((GS_BS_Ptr>>$08)|(GS_BS_Ptr<<$08))&$FFFF<br />
dc.w ((SS_Ptr>>$08)|(SS_Ptr<<$08))&$FFFF<br />
dc.w ((SM_BS_Ptr>>$08)|(SM_BS_Ptr<<$08))&$FFFF<br />
dc.w ((GBM_BS_Ptr>>$08)|(GBM_BS_Ptr<<$08))&$FFFF<br />
dc.w ((KTE_Ptr>>$08)|(KTE_Ptr<<$08))&$FFFF<br />
dc.w ((ALz_Ptr>>$08)|(ALz_Ptr<<$08))&$FFFF<br />
dc.w ((BPz_Ptr>>$08)|(BPz_Ptr<<$08))&$FFFF<br />
dc.w ((DPz_Ptr>>$08)|(DPz_Ptr<<$08))&$FFFF<br />
dc.w ((CGz_Ptr>>$08)|(CGz_Ptr<<$08))&$FFFF<br />
dc.w ((EMz_Ptr>>$08)|(EMz_Ptr<<$08))&$FFFF<br />
dc.w ((TS_Ptr>>$08)|(TS_Ptr<<$08))&$FFFF<br />
dc.w ((Credits_Ptr>>$08)|(Credits_Ptr<<$08))&$FFFF<br />
dc.w ((TGOvr_Ptr>>$08)|(TGOvr_Ptr<<$08))&$FFFF<br />
dc.w ((Continue_Ptr>>$08)|(Continue_Ptr<<$08))&$FFFF<br />
dc.w ((LR_Ptr>>$08)|(LR_Ptr<<$08))&$FFFF<br />
dc.w ((_1_Up_Ptr>>$08)|(_1_Up_Ptr<<$08))&$FFFF<br />
dc.w ((Emerald_Ptr>>$08)|(Emerald_Ptr<<$08))&$FFFF<br />
dc.w ((Invcblty_Ptr>>$08)|(Invcblty_Ptr<<$08))&$FFFF<br />
dc.w ((_2p_Menu_Ptr>>$08)|(_2p_Menu_Ptr<<$08))&$FFFF<br />
dc.w ((MB_Ptr>>$08)|(MB_Ptr<<$08))&$FFFF<br />
dc.w ((Menu_Ptr>>$08)|(Menu_Ptr<<$08))&$FFFF<br />
dc.w ((FB_Ptr>>$08)|(FB_Ptr<<$08))&$FFFF<br />
dc.w ((UT_Ptr>>$08)|(UT_Ptr<<$08))&$FFFF<br />
dc.w ((PbS_Ptr>>$08)|(PbS_Ptr<<$08))&$FFFF<br />
<br />
SndPointers:<br />
dc.w ((Sfx_34_Ptr>>$08)|(Sfx_34_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_35_Ptr>>$08)|(Sfx_35_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_36_Ptr>>$08)|(Sfx_36_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_37_Ptr>>$08)|(Sfx_37_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_38_Ptr>>$08)|(Sfx_38_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_39_Ptr>>$08)|(Sfx_39_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_3A_Ptr>>$08)|(Sfx_3A_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_3B_Ptr>>$08)|(Sfx_3B_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_3C_Ptr>>$08)|(Sfx_3C_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_3D_Ptr>>$08)|(Sfx_3D_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_3E_Ptr>>$08)|(Sfx_3E_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_3F_Ptr>>$08)|(Sfx_3F_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_40_Ptr>>$08)|(Sfx_40_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_41_Ptr>>$08)|(Sfx_41_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_42_Ptr>>$08)|(Sfx_42_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_43_Ptr>>$08)|(Sfx_43_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_44_Ptr>>$08)|(Sfx_44_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_45_Ptr>>$08)|(Sfx_45_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_46_Ptr>>$08)|(Sfx_46_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_47_Ptr>>$08)|(Sfx_47_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_48_Ptr>>$08)|(Sfx_48_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_49_Ptr>>$08)|(Sfx_49_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_4A_Ptr>>$08)|(Sfx_4A_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_4B_Ptr>>$08)|(Sfx_4B_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_4C_Ptr>>$08)|(Sfx_4C_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_4D_Ptr>>$08)|(Sfx_4D_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_4E_Ptr>>$08)|(Sfx_4E_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_4F_Ptr>>$08)|(Sfx_4F_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_50_Ptr>>$08)|(Sfx_50_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_51_Ptr>>$08)|(Sfx_51_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_52_Ptr>>$08)|(Sfx_52_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_53_Ptr>>$08)|(Sfx_53_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_54_Ptr>>$08)|(Sfx_54_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_55_Ptr>>$08)|(Sfx_55_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_56_Ptr>>$08)|(Sfx_56_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_57_Ptr>>$08)|(Sfx_57_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_58_Ptr>>$08)|(Sfx_58_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_59_Ptr>>$08)|(Sfx_59_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_5A_Ptr>>$08)|(Sfx_5A_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_5B_Ptr>>$08)|(Sfx_5B_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_5C_Ptr>>$08)|(Sfx_5C_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_5D_Ptr>>$08)|(Sfx_5D_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_5E_Ptr>>$08)|(Sfx_5E_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_5F_Ptr>>$08)|(Sfx_5F_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_60_Ptr>>$08)|(Sfx_60_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_61_Ptr>>$08)|(Sfx_61_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_62_Ptr>>$08)|(Sfx_62_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_63_Ptr>>$08)|(Sfx_63_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_64_Ptr>>$08)|(Sfx_64_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_65_Ptr>>$08)|(Sfx_65_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_66_Ptr>>$08)|(Sfx_66_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_67_Ptr>>$08)|(Sfx_67_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_68_Ptr>>$08)|(Sfx_68_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_69_Ptr>>$08)|(Sfx_69_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_6A_Ptr>>$08)|(Sfx_6A_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_6B_Ptr>>$08)|(Sfx_6B_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_6C_Ptr>>$08)|(Sfx_6C_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_6D_Ptr>>$08)|(Sfx_6D_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_6E_Ptr>>$08)|(Sfx_6E_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_6F_Ptr>>$08)|(Sfx_6F_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_70_Ptr>>$08)|(Sfx_70_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_71_Ptr>>$08)|(Sfx_71_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_72_Ptr>>$08)|(Sfx_72_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_73_Ptr>>$08)|(Sfx_73_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_74_Ptr>>$08)|(Sfx_74_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_75_Ptr>>$08)|(Sfx_75_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_76_Ptr>>$08)|(Sfx_76_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_77_Ptr>>$08)|(Sfx_77_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_78_Ptr>>$08)|(Sfx_78_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_79_Ptr>>$08)|(Sfx_79_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_7A_Ptr>>$08)|(Sfx_7A_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_7B_Ptr>>$08)|(Sfx_7B_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_7C_Ptr>>$08)|(Sfx_7C_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_7D_Ptr>>$08)|(Sfx_7D_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_7E_Ptr>>$08)|(Sfx_7E_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_7F_Ptr>>$08)|(Sfx_7F_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_80_Ptr>>$08)|(Sfx_80_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_81_Ptr>>$08)|(Sfx_81_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_82_Ptr>>$08)|(Sfx_82_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_83_Ptr>>$08)|(Sfx_83_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_84_Ptr>>$08)|(Sfx_84_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_85_Ptr>>$08)|(Sfx_85_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_86_Ptr>>$08)|(Sfx_86_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_87_Ptr>>$08)|(Sfx_87_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_88_Ptr>>$08)|(Sfx_88_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_89_Ptr>>$08)|(Sfx_89_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_8A_Ptr>>$08)|(Sfx_8A_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_8B_Ptr>>$08)|(Sfx_8B_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_8C_Ptr>>$08)|(Sfx_8C_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_8D_Ptr>>$08)|(Sfx_8D_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_8E_Ptr>>$08)|(Sfx_8E_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_8F_Ptr>>$08)|(Sfx_8F_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_90_Ptr>>$08)|(Sfx_90_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_91_Ptr>>$08)|(Sfx_91_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_92_Ptr>>$08)|(Sfx_92_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_93_Ptr>>$08)|(Sfx_93_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_94_Ptr>>$08)|(Sfx_94_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_95_Ptr>>$08)|(Sfx_95_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_96_Ptr>>$08)|(Sfx_96_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_97_Ptr>>$08)|(Sfx_97_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_98_Ptr>>$08)|(Sfx_98_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_99_Ptr>>$08)|(Sfx_99_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_9A_Ptr>>$08)|(Sfx_9A_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_9B_Ptr>>$08)|(Sfx_9B_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_9C_Ptr>>$08)|(Sfx_9C_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_9D_Ptr>>$08)|(Sfx_9D_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_9E_Ptr>>$08)|(Sfx_9E_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_9F_Ptr>>$08)|(Sfx_9F_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A0_Ptr>>$08)|(Sfx_A0_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A1_Ptr>>$08)|(Sfx_A1_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A2_Ptr>>$08)|(Sfx_A2_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A3_Ptr>>$08)|(Sfx_A3_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A4_Ptr>>$08)|(Sfx_A4_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A5_Ptr>>$08)|(Sfx_A5_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A6_Ptr>>$08)|(Sfx_A6_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A7_Ptr>>$08)|(Sfx_A7_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A8_Ptr>>$08)|(Sfx_A8_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A9_Ptr>>$08)|(Sfx_A9_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_AA_Ptr>>$08)|(Sfx_AA_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_AB_Ptr>>$08)|(Sfx_AB_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_AC_Ptr>>$08)|(Sfx_AC_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_AD_Ptr>>$08)|(Sfx_AD_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_AE_Ptr>>$08)|(Sfx_AE_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_AF_Ptr>>$08)|(Sfx_AF_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B0_Ptr>>$08)|(Sfx_B0_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B1_Ptr>>$08)|(Sfx_B1_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B2_Ptr>>$08)|(Sfx_B2_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B3_Ptr>>$08)|(Sfx_B3_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B4_Ptr>>$08)|(Sfx_B4_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B5_Ptr>>$08)|(Sfx_B5_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B6_Ptr>>$08)|(Sfx_B6_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B7_Ptr>>$08)|(Sfx_B7_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B8_Ptr>>$08)|(Sfx_B8_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B9_Ptr>>$08)|(Sfx_B9_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_BA_Ptr>>$08)|(Sfx_BA_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_BB_Ptr>>$08)|(Sfx_BB_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_BC_Ptr>>$08)|(Sfx_BC_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_BD_Ptr>>$08)|(Sfx_BD_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_BE_Ptr>>$08)|(Sfx_BE_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_BF_Ptr>>$08)|(Sfx_BF_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C0_Ptr>>$08)|(Sfx_C0_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C1_Ptr>>$08)|(Sfx_C1_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C2_Ptr>>$08)|(Sfx_C2_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C3_Ptr>>$08)|(Sfx_C3_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C4_Ptr>>$08)|(Sfx_C4_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C5_Ptr>>$08)|(Sfx_C5_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C6_Ptr>>$08)|(Sfx_C6_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C7_Ptr>>$08)|(Sfx_C7_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C8_Ptr>>$08)|(Sfx_C8_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C9_Ptr>>$08)|(Sfx_C9_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_CA_Ptr>>$08)|(Sfx_CA_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_CB_Ptr>>$08)|(Sfx_CB_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_CC_Ptr>>$08)|(Sfx_CC_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_CD_Ptr>>$08)|(Sfx_CD_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_CE_Ptr>>$08)|(Sfx_CE_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_CF_Ptr>>$08)|(Sfx_CF_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D0_Ptr>>$08)|(Sfx_D0_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D1_Ptr>>$08)|(Sfx_D1_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D2_Ptr>>$08)|(Sfx_D2_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D3_Ptr>>$08)|(Sfx_D3_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D4_Ptr>>$08)|(Sfx_D4_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D5_Ptr>>$08)|(Sfx_D5_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D6_Ptr>>$08)|(Sfx_D6_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D7_Ptr>>$08)|(Sfx_D7_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D8_Ptr>>$08)|(Sfx_D8_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D9_Ptr>>$08)|(Sfx_D9_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_DA_Ptr>>$08)|(Sfx_DA_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_DB_Ptr>>$08)|(Sfx_DB_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_DC_Ptr>>$08)|(Sfx_DC_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_DC_Ptr>>$08)|(Sfx_DC_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_DC_Ptr>>$08)|(Sfx_DC_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_DC_Ptr>>$08)|(Sfx_DC_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_DC_Ptr>>$08)|(Sfx_DC_Ptr<<$08))&$FFFF<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
align $8000<br />
<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
<br />
align $8000<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
align $8000<br />
<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
align $8000<br />
<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
align $8000<br />
<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
align $8000<br />
<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
align $8000<br />
<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CC_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DC_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
</asm><br />
<br />
===Driver data files===<br />
then unpack this into the sound folder and optionally remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Enabling Sonic 2 / 3 Level Music Memory==<br />
Doing this is optional as it has little to do with the driver itself, but is a very useful and quick hack that makes life a lot easier for the more painful phase of using a massively different sound system than before, fixing the freaken sound. Sonic1 uses a second index for restoring music as opposed to actually memorizing it like later sonic games do.<br />
<br />
First we will locate:<br />
<asm><br />
Level_PlayBgm:<br />
lea (MusicList).l,a1 ; load music playlist<br />
move.b (a1,d0.w),d0 ; add d0 to a1<br />
bsr.w PlaySound ; play music<br />
move.b #$34,($FFFFD080).w ; load title card object<br />
</asm><br />
<br />
and insert a new line to make it read:<br />
<asm><br />
Level_PlayBgm:<br />
lea (MusicList).l,a1 ; load music playlist<br />
move.b (a1,d0.w),d0 ; add d0 to a1<br />
move.w d0,($FFFFFF90).w ; store level music<br />
bsr.w PlaySound ; play music<br />
move.b #$34,($FFFFD080).w ; load title card object<br />
</asm><br />
<br />
Now we will locate:<br />
<asm><br />
move.b ($FFFFFE10).w,d0<br />
cmpi.w #$103,($FFFFFE10).w ; check if level is SBZ3<br />
bne.s Obj01_PlayMusic<br />
moveq #5,d0 ; play SBZ music<br />
<br />
Obj01_PlayMusic:<br />
lea (MusicList2).l,a1<br />
move.b (a1,d0.w),d0<br />
jsr (PlaySound).l ; play normal music<br />
</asm><br />
<br />
seems the invincibility stars conflict with music memory, so we will just make it use music list 1, so the result is:<br />
<asm><br />
move.b ($FFFFFE10).w,d0<br />
cmpi.w #$103,($FFFFFE10).w ; check if level is SBZ3<br />
bne.s Obj01_PlayMusic<br />
moveq #5,d0 ; play SBZ music<br />
<br />
Obj01_PlayMusic:<br />
lea (MusicList).l,a1 ; load music playlist<br />
move.b (a1,d0.w),d0 ; add d0 to a1<br />
move.w d0,($FFFFFF90).w ; store level music<br />
jsr (PlaySound).l ; play normal music<br />
</asm><br />
<br />
then remove:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Music to play after invincibility wears off<br />
; ---------------------------------------------------------------------------<br />
MusicList2: binclude misc\muslist2.bin<br />
</asm><br />
now we want to fix the underwater counter music restore code, so locate:<br />
<asm><br />
ResumeMusic: ; XREF: Obj64_Wobble; Sonic_Water; Obj0A_ReduceAir<br />
cmpi.w #$C,($FFFFFE14).w<br />
bhi.s loc_140AC<br />
move.w #$82,d0 ; play LZ music<br />
cmpi.w #$103,($FFFFFE10).w ; check if level is 0103 (SBZ3)<br />
bne.s loc_140A6<br />
move.w #$86,d0 ; play SBZ music<br />
<br />
loc_140A6:<br />
jsr (PlaySound).l<br />
</asm><br />
and replace it with:<br />
<asm><br />
ResumeMusic: ; XREF: Obj64_Wobble; Sonic_Water; Obj0A_ReduceAir<br />
cmpi.w #$C,($FFFFFE14).w<br />
bhi.s loc_140AC<br />
move.w ($FFFFFF90).w,d0 ;resume music<br />
jsr (PlaySound).l<br />
</asm><br />
that sets up music memory for later.<br />
<br />
==Fixing the Music Playlist==<br />
Okay, so we now have a working sonic3 driver, but we have yet to fix the music playlist it is still pointing to sound effects.<br />
Open ''misc\muslist1.bin'' in your favorite hex editor.<p><br />
You will find that it reads:<br />
{| class="prettytable"<br />
! Hex Data<br />
|-<br />
| '''81 82 83 84 85 86 8D 00'''<br />
|}<br />
Pick some new music for your game.<br />
----<br />
<br />
I prefer to use:<br />
{| class="prettytable"<br />
! Hex Data<br />
|-<br />
| '''01 04 13 0D 07 16 30 00'''<br />
|}<br />
Once you rebuild your rom, you will have some music on the levels, but sound effects and some other musics unrelated to the playlist will need fixing. This part is much easier fixing if you applied the sonic2 memory fix to your hack, otherwise edit ''misc/muslist2.bin'' and make the exact same changes.<br />
<br />
==Fixing the Sneaker==<br />
We need to fix the sneaker in a different way than we normally do, because sonic3 uses a different means for speeding up or slowing down the music then its predecessors do.<br />
first we will locate:<br />
<asm><br />
Obj2E_ChkShoes:<br />
cmpi.b #3,d0 ; does monitor contain speed shoes?<br />
bne.s Obj2E_ChkShield<br />
move.b #1,($FFFFFE2E).w ; speed up the BG music<br />
move.w #$4B0,($FFFFD034).w ; time limit for the power-up<br />
move.w #$C00,($FFFFF760).w ; change Sonic"s top speed<br />
move.w #$18,($FFFFF762).w<br />
move.w #$80,($FFFFF764).w<br />
move.w #$E2,d0<br />
jmp (PlaySound).l ; Speed up the music<br />
</asm><br />
note that sonic1 plays a special sound to make the music speed up, our new driver does not do that, so we will change it to read:<br />
<asm><br />
Obj2E_ChkShoes:<br />
cmpi.b #3,d0 ; does monitor contain speed shoes?<br />
bne.s Obj2E_ChkShield<br />
move.b #1,($FFFFFE2E).w ; speed up the BG music<br />
move.w #$4B0,($FFFFD034).w ; time limit for the power-up<br />
move.w #$C00,($FFFFF760).w ; change Sonic"s top speed<br />
move.w #$18,($FFFFF762).w<br />
move.w #$80,($FFFFF764).w<br />
move.w #8,d0<br />
jmp (SetTempo).l ; Speed up the music<br />
</asm><br />
that speeds the music up properly, but we need to tell it how to slow the music back down. So we find:<br />
<asm><br />
Obj01_ChkShoes:<br />
tst.b ($FFFFFE2E).w ; does Sonic have speed shoes?<br />
beq.s Obj01_ExitChk ; if not, branch<br />
tst.w $34(a0) ; check time remaining<br />
beq.s Obj01_ExitChk<br />
subq.w #1,$34(a0) ; subtract 1 from time<br />
bne.s Obj01_ExitChk<br />
move.w #$600,($FFFFF760).w ; restore Sonic"s speed<br />
move.w #$C,($FFFFF762).w ; restore Sonic"s acceleration<br />
move.w #$80,($FFFFF764).w ; restore Sonic"s deceleration<br />
move.b #0,($FFFFFE2E).w ; cancel speed shoes<br />
move.w #$E3,d0<br />
jmp (PlaySound).l ; run music at normal speed<br />
</asm><br />
note that sonic1 also uses another sound to return the music to normal speed, sonic3 doesn't, so we will correct the sneaker wearing off effect, by changin it to:<br />
<asm><br />
Obj01_ChkShoes:<br />
tst.b ($FFFFFE2E).w ; does Sonic have speed shoes?<br />
beq.s Obj01_ExitChk ; if not, branch<br />
tst.w $34(a0) ; check time remaining<br />
beq.s Obj01_ExitChk<br />
subq.w #1,$34(a0) ; subtract 1 from time<br />
bne.s Obj01_ExitChk<br />
move.w #$600,($FFFFF760).w ; restore Sonic"s speed<br />
move.w #$C,($FFFFF762).w ; restore Sonic"s acceleration<br />
move.w #$80,($FFFFF764).w ; restore Sonic"s deceleration<br />
move.b #0,($FFFFFE2E).w ; cancel speed shoes<br />
move.w #$0,d0<br />
jmp (SetTempo).l ; run music at normal speed<br />
</asm><br />
<br />
==Fixing the screen transition sound effects==<br />
===Sega Screen Part 1===<br />
Don't we want music to fade out properly when changing screens? Well if that is true, then you are reading in the right place, first off, go and find:<br />
<asm><br />
SegaScreen: ; XREF: GameModeArray<br />
move.b #$E4,d0<br />
bsr.w PlaySound_Special ; stop music<br />
</asm><br />
<br />
we want it to change to:<br />
<asm><br />
SegaScreen: ; XREF: GameModeArray<br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; Sonic 3 prefers to fade out rather than stop the music.<br />
</asm><br />
<br />
===Title Screen playback fix===<br />
Good, the sega logo screen does with music what we want it to! now to fix the Title Screen, locate:<br />
<asm><br />
TitleScreen: ; XREF: GameModeArray<br />
move.b #$E4,d0<br />
bsr.w PlaySound_Special ; stop music<br />
</asm><br />
and change it to:<br />
<asm><br />
TitleScreen: ; XREF: GameModeArray<br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; Sonic 3 prefers to fade out rather than stop the music.<br />
</asm><br />
<br />
===Ending Sequence music fix===<br />
Good, the title screen transition effect should be fixed now, but we still have a ways to go, so now lets fix the ending sequence transitioning, locate:<br />
<asm><br />
EndingSequence: ; XREF: GameModeArray<br />
move.b #$E4,d0<br />
bsr.w PlaySound_Special ; stop music<br />
</asm><br />
and change it to:<br />
<asm><br />
EndingSequence: ; XREF: GameModeArray<br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; Sonic 3 prefers to fade out rather than stop the music.<br />
</asm><br />
<br />
===Fix the level select sound===<br />
Now that the screens fade music as they should, shouldn't we fix the rest of the fades throughout the game? I would think so, so lets do just that, locate:<br />
<asm><br />
move.b #$E0,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
rts <br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Level select - level pointers<br />
; ---------------------------------------------------------------------------<br />
</asm><br />
and change it to:<br />
<asm><br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
rts <br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Level select - level pointers<br />
; ---------------------------------------------------------------------------<br />
</asm><br />
<br />
===Music fade out on demo exit ala Sonic 3===<br />
that fixes a spot in the level select, which we will work on later. For now locate:<br />
<asm><br />
loc_33E4: ; XREF: Demo<br />
andi.b #$80,($FFFFF605).w ; is Start button pressed?<br />
bne.w Title_ChkLevSel ; if yes, branch<br />
tst.w ($FFFFF614).w<br />
bne.w loc_33B6<br />
move.b #$E0,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_33E4: ; XREF: Demo<br />
andi.b #$80,($FFFFF605).w ; is Start button pressed?<br />
bne.w Title_ChkLevSel ; if yes, branch<br />
tst.w ($FFFFF614).w<br />
bne.w loc_33B6<br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
</asm><br />
===Fade out music in prep of level===<br />
now find:<br />
<asm><br />
Level: ; XREF: GameModeArray<br />
bset #7,($FFFFF600).w ; add $80 to screen mode (for pre level sequence)<br />
tst.w ($FFFFFFF0).w<br />
bmi.s loc_37B6<br />
move.b #$E0,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
</asm><br />
and change it to:<br />
<asm><br />
Level: ; XREF: GameModeArray<br />
bset #7,($FFFFF600).w ; add $80 to screen mode (for pre level sequence)<br />
tst.w ($FFFFFFF0).w<br />
bmi.s loc_37B6<br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
</asm><br />
===Continue screen fade out===<br />
now find:<br />
<asm><br />
Obj81_GetUp: ; XREF: Obj81_Animate<br />
addq.b #2,$24(a0)<br />
move.l #Map_Sonic,4(a0)<br />
move.w #$780,2(a0)<br />
move.b #$1E,$1C(a0) ; use "getting up" animation<br />
clr.w $14(a0)<br />
subq.w #8,$C(a0)<br />
move.b #$E0,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj81_GetUp: ; XREF: Obj81_Animate<br />
addq.b #2,$24(a0)<br />
move.l #Map_Sonic,4(a0)<br />
move.w #$780,2(a0)<br />
move.b #$1E,$1C(a0) ; use "getting up" animation<br />
clr.w $14(a0)<br />
subq.w #8,$C(a0)<br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
</asm><br />
okay, that should fix all the music fades between screens, but still there are yet more fixes to be made.<br />
<br />
==Fixing the SEGA! sound==<br />
Want to hear the SEGA! pcm when you should? Well this section is for you then. Go find:<br />
<asm><br />
Sega_WaitPallet:<br />
move.b #2,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
bsr.w PalCycle_Sega<br />
bne.s Sega_WaitPallet<br />
<br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; play "SEGA" sound<br />
move.b #$14,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
move.w #$1E,($FFFFF614).w<br />
</asm><br />
and change it to:<br />
<asm><br />
Sega_WaitPallet:<br />
move.b #2,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
bsr.w PalCycle_Sega<br />
bne.s Sega_WaitPallet<br />
<br />
move.b #$FF,d0<br />
bsr.w PlaySound_Special ; play "SEGA" sound<br />
move.b #$14,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
move.w #$1E,($FFFFF614).w<br />
</asm><br />
That should fix the sega pcm sample on the sega logo screen.<br />
<br />
==Fixing the Title Screen music==<br />
Want to get rid of that weird sound effect on the title screen? Then we need to fix the music. Find:<br />
<asm><br />
move.b #$8A,d0 ; play title screen music<br />
bsr.w PlaySound_Special<br />
move.b #0,($FFFFFFFA).w ; disable debug mode<br />
move.w #$178,($FFFFF614).w ; run title screen for $178 frames<br />
lea ($FFFFD080).w,a1<br />
moveq #0,d0<br />
move.w #7,d1<br />
<br />
Title_ClrObjRam2:<br />
</asm><br />
<br />
and change it to:<br />
<asm><br />
move.b #$25,d0 ; play title screen music<br />
bsr.w PlaySound_Special<br />
move.b #0,($FFFFFFFA).w ; disable debug mode<br />
move.w #$178,($FFFFF614).w ; run title screen for $178 frames<br />
lea ($FFFFD080).w,a1<br />
moveq #0,d0<br />
move.w #7,d1<br />
<br />
Title_ClrObjRam2:<br />
</asm><br />
<br />
that fixes the title screen's music so that it plays sonic 3 title screen music, or you can pick another music if you so choose.<br />
<br />
==Fixing the Special Stage music==<br />
now that the title screen plays the right music, lets fix the special stage music. We simply want to locate:<br />
<asm><br />
SS_ClrNemRam:<br />
move.l d0,(a1)+<br />
dbf d1,SS_ClrNemRam ; clear Nemesis buffer<br />
<br />
clr.b ($FFFFF64E).w<br />
clr.w ($FFFFFE02).w<br />
moveq #$A,d0<br />
bsr.w PalLoad1 ; load special stage pallet<br />
jsr (SS_Load).l<br />
move.l #0,($FFFFF700).w<br />
move.l #0,($FFFFF704).w<br />
move.b #9,($FFFFD000).w ; load special stage Sonic object<br />
bsr.w PalCycle_SS<br />
clr.w ($FFFFF780).w ; set stage angle to "upright"<br />
move.w #$40,($FFFFF782).w ; set stage rotation speed<br />
move.w #$89,d0<br />
bsr.w PlaySound ; play special stage BG music<br />
move.w #0,($FFFFF790).w<br />
lea (Demo_Index).l,a1<br />
moveq #6,d0<br />
lsl.w #2,d0<br />
movea.l (a1,d0.w),a1<br />
move.b 1(a1),($FFFFF792).w<br />
subq.b #1,($FFFFF792).w<br />
clr.w ($FFFFFE20).w<br />
clr.b ($FFFFFE1B).w<br />
move.w #0,($FFFFFE08).w<br />
move.w #1800,($FFFFF614).w<br />
tst.b ($FFFFFFE2).w ; has debug cheat been entered?<br />
beq.s SS_NoDebug ; if not, branch<br />
btst #6,($FFFFF604).w ; is A button pressed?<br />
beq.s SS_NoDebug ; if not, branch<br />
move.b #1,($FFFFFFFA).w ; enable debug mode<br />
</asm><br />
and change it to:<br />
<asm><br />
SS_ClrNemRam:<br />
move.l d0,(a1)+<br />
dbf d1,SS_ClrNemRam ; clear Nemesis buffer<br />
<br />
clr.b ($FFFFF64E).w<br />
clr.w ($FFFFFE02).w<br />
moveq #$A,d0<br />
bsr.w PalLoad1 ; load special stage pallet<br />
jsr (SS_Load).l<br />
move.l #0,($FFFFF700).w<br />
move.l #0,($FFFFF704).w<br />
move.b #9,($FFFFD000).w ; load special stage Sonic object<br />
bsr.w PalCycle_SS<br />
clr.w ($FFFFF780).w ; set stage angle to "upright"<br />
move.w #$40,($FFFFF782).w ; set stage rotation speed<br />
move.w #$1C,d0<br />
bsr.w PlaySound ; play special stage BG music<br />
move.w #0,($FFFFF790).w<br />
lea (Demo_Index).l,a1<br />
moveq #6,d0<br />
lsl.w #2,d0<br />
movea.l (a1,d0.w),a1<br />
move.b 1(a1),($FFFFF792).w<br />
subq.b #1,($FFFFF792).w<br />
clr.w ($FFFFFE20).w<br />
clr.b ($FFFFFE1B).w<br />
move.w #0,($FFFFFE08).w<br />
move.w #1800,($FFFFF614).w<br />
tst.b ($FFFFFFE2).w ; has debug cheat been entered?<br />
beq.s SS_NoDebug ; if not, branch<br />
btst #6,($FFFFF604).w ; is A button pressed?<br />
beq.s SS_NoDebug ; if not, branch<br />
move.b #1,($FFFFFFFA).w ; enable debug mode<br />
</asm><br />
now we have sonic 3 special stage music on the sonic 1 special stage. Or you could choose a different song of your choice.<br />
<br />
==Fixing the Ending Sequence music==<br />
now time to fix the music for the ending sequence. Find:<br />
<asm><br />
End_LoadData:<br />
moveq #$1C,d0<br />
bsr.w RunPLC_ROM ; load ending sequence patterns<br />
jsr (Hud_Base).l<br />
bsr.w LevelSizeLoad<br />
bsr.w DeformBgLayer<br />
bset #2,($FFFFF754).w<br />
bsr.w MainLoadBlockLoad<br />
bsr.w LoadTilesFromStart<br />
move.l #Col_GHZ,($FFFFF796).w ; load collision index<br />
move #$2300,sr<br />
lea (Kos_EndFlowers).l,a0 ; load extra flower patterns<br />
lea ($FFFF9400).w,a1 ; RAM address to buffer the patterns<br />
bsr.w KosDec<br />
moveq #3,d0<br />
bsr.w PalLoad1 ; load Sonic"s pallet<br />
move.w #$8B,d0<br />
bsr.w PlaySound ; play ending sequence music<br />
btst #6,($FFFFF604).w ; is button A pressed?<br />
beq.s End_LoadSonic ; if not, branch<br />
move.b #1,($FFFFFFFA).w ; enable debug mode<br />
</asm><br />
and change it to:<br />
<asm><br />
End_LoadData:<br />
moveq #$1C,d0<br />
bsr.w RunPLC_ROM ; load ending sequence patterns<br />
jsr (Hud_Base).l<br />
bsr.w LevelSizeLoad<br />
bsr.w DeformBgLayer<br />
bset #2,($FFFFF754).w<br />
bsr.w MainLoadBlockLoad<br />
bsr.w LoadTilesFromStart<br />
move.l #Col_GHZ,($FFFFF796).w ; load collision index<br />
move #$2300,sr<br />
lea (Kos_EndFlowers).l,a0 ; load extra flower patterns<br />
lea ($FFFF9400).w,a1 ; RAM address to buffer the patterns<br />
bsr.w KosDec<br />
moveq #3,d0<br />
bsr.w PalLoad1 ; load Sonic"s pallet<br />
move.w #$32,d0<br />
bsr.w PlaySound ; play ending sequence music<br />
btst #6,($FFFFF604).w ; is button A pressed?<br />
beq.s End_LoadSonic ; if not, branch<br />
move.b #1,($FFFFFFFA).w ; enable debug mode<br />
</asm><br />
that makes it so that sonic 3 ending sequence music plays. Or you could choose a different music.<br />
<br />
==Fixing the Credits music==<br />
time to fix the credits music, this time it needs to be fixed in multiple places. First we find:<br />
<asm><br />
LevSel_Credits: ; XREF: LevelSelect<br />
move.b #$1C,($FFFFF600).w ; set screen mode to $1C (Credits)<br />
move.b #$91,d0<br />
bsr.w PlaySound_Special ; play credits music<br />
move.w #0,($FFFFFFF4).w<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
LevSel_Credits: ; XREF: LevelSelect<br />
move.b #$1C,($FFFFF600).w ; set screen mode to $1C (Credits)<br />
move.b #$26,d0<br />
bsr.w PlaySound_Special ; play credits music<br />
move.w #0,($FFFFFFF4).w<br />
rts <br />
</asm><br />
then we find:<br />
<asm><br />
End_MainLoop:<br />
bsr.w PauseGame<br />
move.b #$18,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
addq.w #1,($FFFFFE04).w<br />
bsr.w End_MoveSonic<br />
jsr (ObjectsLoad).l<br />
bsr.w DeformBgLayer<br />
jsr (BuildSprites).l<br />
jsr (ObjPosLoad).l<br />
bsr.w PalCycle_Load<br />
bsr.w OscillateNumDo<br />
bsr.w ChangeRingFrame<br />
cmpi.b #$18,($FFFFF600).w ; is scene number $18 (ending)?<br />
beq.s loc_52DA ; if yes, branch<br />
move.b #$1C,($FFFFF600).w ; set scene to $1C (credits)<br />
move.b #$91,d0<br />
bsr.w PlaySound_Special ; play credits music<br />
move.w #0,($FFFFFFF4).w ; set credits index number to 0<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
End_MainLoop:<br />
bsr.w PauseGame<br />
move.b #$18,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
addq.w #1,($FFFFFE04).w<br />
bsr.w End_MoveSonic<br />
jsr (ObjectsLoad).l<br />
bsr.w DeformBgLayer<br />
jsr (BuildSprites).l<br />
jsr (ObjPosLoad).l<br />
bsr.w PalCycle_Load<br />
bsr.w OscillateNumDo<br />
bsr.w ChangeRingFrame<br />
cmpi.b #$18,($FFFFF600).w ; is scene number $18 (ending)?<br />
beq.s loc_52DA ; if yes, branch<br />
move.b #$1C,($FFFFF600).w ; set scene to $1C (credits)<br />
move.b #$26,d0<br />
bsr.w PlaySound_Special ; play credits music<br />
move.w #0,($FFFFFFF4).w ; set credits index number to 0<br />
rts <br />
</asm><br />
<br />
That fixes the credits music with sonic 3 credits music, otherwise you could use a different song if you choose.<br />
<br />
==Fixing Special Event sound==<br />
===Chaos Emerald===<br />
time to fix sound for events that only happen in certain situations, i.e. end of level, game over / time over, extra life and such. first we will start with the chaos emerald collection sound, go and find:<br />
<asm><br />
Obj09_NoEmer:<br />
move.w #$93,d0<br />
jsr (PlaySound_Special).l ; play emerald music<br />
moveq #0,d4<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
Obj09_NoEmer:<br />
move.w #$2B,d0<br />
jsr (PlaySound_Special).l ; play emerald music<br />
moveq #0,d4<br />
rts <br />
</asm><br />
<br />
===Game Over / Time Over===<br />
next we will start with Game Over / Time Over, go and find:<br />
<asm><br />
loc_138C2:<br />
move.w #$8F,d0<br />
jsr (PlaySound).l ; play game over music<br />
moveq #3,d0<br />
jmp (LoadPLC).l ; load game over patterns<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_138C2:<br />
move.w #$27,d0<br />
jsr (PlaySound).l ; play game over music<br />
moveq #3,d0<br />
jmp (LoadPLC).l ; load game over patterns<br />
</asm><br />
===Sonic has passed Music===<br />
that causes the Game Over and Time Over screens to use its sonic 3 version or you could choose a different song if you wish. Now we will go on to End of level Results. Find:<br />
<asm><br />
move.w ($FFFFFE20).w,d0<br />
mulu.w #10,d0 ; multiply rings by 10<br />
move.w d0,($FFFFF7D4).w ; set rings bonus<br />
move.w #$8E,d0<br />
jsr (PlaySound_Special).l ; play end-of-level music<br />
lea ($FFFFD000).w,a1<br />
moveq #0,d0<br />
move.w #$7FF,d1<br />
<br />
SS_EndClrObjRam:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w ($FFFFFE20).w,d0<br />
mulu.w #10,d0 ; multiply rings by 10<br />
move.w d0,($FFFFF7D4).w ; set rings bonus<br />
move.w #$29,d0<br />
jsr (PlaySound_Special).l ; play end-of-level music<br />
lea ($FFFFD000).w,a1<br />
moveq #0,d0<br />
move.w #$7FF,d1<br />
<br />
SS_EndClrObjRam:<br />
</asm><br />
now find:<br />
<asm><br />
loc_ECD0:<br />
add.w d0,d0<br />
move.w TimeBonuses(pc,d0.w),($FFFFF7D2).w ; set time bonus<br />
move.w ($FFFFFE20).w,d0 ; load number of rings<br />
mulu.w #10,d0 ; multiply by 10<br />
move.w d0,($FFFFF7D4).w ; set ring bonus<br />
move.w #$8E,d0<br />
jsr (PlaySound_Special).l ; play "Sonic got through" music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_ECD0:<br />
add.w d0,d0<br />
move.w TimeBonuses(pc,d0.w),($FFFFF7D2).w ; set time bonus<br />
move.w ($FFFFFE20).w,d0 ; load number of rings<br />
mulu.w #10,d0 ; multiply by 10<br />
move.w d0,($FFFFF7D4).w ; set ring bonus<br />
move.w #$29,d0<br />
jsr (PlaySound_Special).l ; play "Sonic got through" music<br />
</asm><br />
===1up Sound===<br />
that fixes the end of level and end of special stage results music by using modern version, but you could use a different song if you wish. Next we will fix the extra life sound, so find:<br />
<asm><br />
loc_9CA4:<br />
addq.b #1,($FFFFFE12).w ; add 1 to the number of lives you have<br />
addq.b #1,($FFFFFE1C).w ; add 1 to the lives counter<br />
move.w #$88,d0 ; play extra life music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_9CA4:<br />
addq.b #1,($FFFFFE12).w ; add 1 to the number of lives you have<br />
addq.b #1,($FFFFFE1C).w ; add 1 to the lives counter<br />
move.w #$2A,d0 ; play extra life music<br />
</asm><br />
now find:<br />
<asm><br />
ExtraLife:<br />
addq.b #1,($FFFFFE12).w ; add 1 to the number of lives you have<br />
addq.b #1,($FFFFFE1C).w ; add 1 to the lives counter<br />
move.w #$88,d0<br />
jmp (PlaySound).l ; play extra life music<br />
</asm><br />
and change it to:<br />
<asm><br />
ExtraLife:<br />
addq.b #1,($FFFFFE12).w ; add 1 to the number of lives you have<br />
addq.b #1,($FFFFFE1C).w ; add 1 to the lives counter<br />
move.w #$2A,d0<br />
jmp (PlaySound).l ; play extra life music<br />
</asm><br />
now find:<br />
<asm><br />
Obj09_Get1Up:<br />
addq.b #1,($FFFFFE12).w ; add 1 to number of lives<br />
addq.b #1,($FFFFFE1C).w ; add 1 to lives counter<br />
move.w #$88,d0<br />
jsr (PlaySound).l ; play extra life music<br />
moveq #0,d4<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
Obj09_Get1Up:<br />
addq.b #1,($FFFFFE12).w ; add 1 to number of lives<br />
addq.b #1,($FFFFFE1C).w ; add 1 to lives counter<br />
move.w #$2A,d0<br />
jsr (PlaySound).l ; play extra life music<br />
moveq #0,d4<br />
rts <br />
</asm><br />
===Stars Monitor===<br />
That fixes the extra life sound with the sonic3 version, though I am sure you could use a different one in a different slot if such thing exists. Time to fix the invincibinity music, so find:<br />
<asm><br />
Obj2E_ChkInvinc:<br />
cmpi.b #5,d0 ; does monitor contain invincibility?<br />
bne.s Obj2E_ChkRings<br />
move.b #1,($FFFFFE2D).w ; make Sonic invincible<br />
move.w #$4B0,($FFFFD032).w ; time limit for the power-up<br />
move.b #$38,($FFFFD200).w ; load stars object ($3801)<br />
move.b #1,($FFFFD21C).w<br />
move.b #$38,($FFFFD240).w ; load stars object ($3802)<br />
move.b #2,($FFFFD25C).w<br />
move.b #$38,($FFFFD280).w ; load stars object ($3803)<br />
move.b #3,($FFFFD29C).w<br />
move.b #$38,($FFFFD2C0).w ; load stars object ($3804)<br />
move.b #4,($FFFFD2DC).w<br />
tst.b ($FFFFF7AA).w ; is boss mode on?<br />
bne.s Obj2E_NoMusic ; if yes, branch<br />
move.w #$87,d0<br />
jmp (PlaySound).l ; play invincibility music<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj2E_ChkInvinc:<br />
cmpi.b #5,d0 ; does monitor contain invincibility?<br />
bne.s Obj2E_ChkRings<br />
move.b #1,($FFFFFE2D).w ; make Sonic invincible<br />
move.w #$4B0,($FFFFD032).w ; time limit for the power-up<br />
move.b #$38,($FFFFD200).w ; load stars object ($3801)<br />
move.b #1,($FFFFD21C).w<br />
move.b #$38,($FFFFD240).w ; load stars object ($3802)<br />
move.b #2,($FFFFD25C).w<br />
move.b #$38,($FFFFD280).w ; load stars object ($3803)<br />
move.b #3,($FFFFD29C).w<br />
move.b #$38,($FFFFD2C0).w ; load stars object ($3804)<br />
move.b #4,($FFFFD2DC).w<br />
tst.b ($FFFFF7AA).w ; is boss mode on?<br />
bne.s Obj2E_NoMusic ; if yes, branch<br />
move.w #$2C,d0<br />
jmp (PlaySound).l ; play invincibility music<br />
</asm><br />
===Extra Continue sound===<br />
that fixes the invincibility sound with the sonic3 version, but you could choose a different one if you wish. Next we will fix the get a continue sound, so find:<br />
<asm><br />
Obj7E_Continue: ; XREF: Obj7E_Index<br />
move.b #4,($FFFFD6DA).w<br />
move.b #$14,($FFFFD6E4).w<br />
move.w #$BF,d0<br />
jsr (PlaySound_Special).l ; play continues music<br />
addq.b #2,$24(a0)<br />
move.w #360,$1E(a0) ; set time delay to 6 seconds<br />
bra.w DisplaySprite<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj7E_Continue: ; XREF: Obj7E_Index<br />
move.b #4,($FFFFD6DA).w<br />
move.b #$14,($FFFFD6E4).w<br />
move.w #$AC,d0<br />
jsr (PlaySound_Special).l ; play continues music<br />
addq.b #2,$24(a0)<br />
move.w #360,$1E(a0) ; set time delay to 6 seconds<br />
bra.w DisplaySprite<br />
</asm><br />
then find:<br />
<asm><br />
Obj09_GetCont:<br />
jsr (CollectRing).l<br />
cmpi.w #50,($FFFFFE20).w ; check if you have 50 rings<br />
bcs.s Obj09_NoCont<br />
bset #0,($FFFFFE1B).w<br />
bne.s Obj09_NoCont<br />
addq.b #1,($FFFFFE18).w ; add 1 to number of continues<br />
move.w #$BF,d0<br />
jsr (PlaySound).l ; play extra continue sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj09_GetCont:<br />
jsr (CollectRing).l<br />
cmpi.w #50,($FFFFFE20).w ; check if you have 50 rings<br />
bcs.s Obj09_NoCont<br />
bset #0,($FFFFFE1B).w<br />
bne.s Obj09_NoCont<br />
addq.b #1,($FFFFFE18).w ; add 1 to number of continues<br />
move.w #$AC,d0<br />
jsr (PlaySound).l ; play extra continue sound<br />
</asm><br />
===Continue screen music===<br />
that fixes the extra continue sound that plays on both the end result screen and in the special stage. How about fixing the music for the continue screen itself? That is what we are doing next, so find:<br />
<asm><br />
jsr (ContScrCounter).l ; run countdown (start from 10)<br />
moveq #$12,d0<br />
bsr.w PalLoad1 ; load continue screen pallet<br />
move.b #$90,d0<br />
bsr.w PlaySound ; play continue music<br />
</asm><br />
and change it to:<br />
<asm><br />
jsr (ContScrCounter).l ; run countdown (start from 10)<br />
moveq #$12,d0<br />
bsr.w PalLoad1 ; load continue screen pallet<br />
move.b #$28,d0<br />
bsr.w PlaySound ; play continue music<br />
</asm><br />
===Special Stage entrance/exit===<br />
that fixes the continue screen music. Though you could choose a different song if you wish. Time to fix the special stage entry sound, so find:<br />
<asm><br />
SpecialStage: ; XREF: GameModeArray<br />
move.w #$CA,d0<br />
bsr.w PlaySound_Special ; play special stage entry sound<br />
</asm><br />
and change it to:<br />
<asm><br />
SpecialStage: ; XREF: GameModeArray<br />
move.w #$AF,d0<br />
bsr.w PlaySound_Special ; play special stage entry sound<br />
</asm><br />
then find:<br />
<asm><br />
SS_NormalExit:<br />
bsr.w PauseGame<br />
move.b #$C,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
jsr (ObjectsLoad).l<br />
jsr (BuildSprites).l<br />
bsr.w RunPLC_RAM<br />
tst.w ($FFFFFE02).w<br />
beq.s SS_NormalExit<br />
tst.l ($FFFFF680).w<br />
bne.s SS_NormalExit<br />
move.w #$CA,d0<br />
bsr.w PlaySound_Special ; play special stage exit sound<br />
bsr.w Pal_MakeFlash<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
SS_NormalExit:<br />
bsr.w PauseGame<br />
move.b #$C,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
jsr (ObjectsLoad).l<br />
jsr (BuildSprites).l<br />
bsr.w RunPLC_RAM<br />
tst.w ($FFFFFE02).w<br />
beq.s SS_NormalExit<br />
tst.l ($FFFFF680).w<br />
bne.s SS_NormalExit<br />
move.w #$AF,d0<br />
bsr.w PlaySound_Special ; play special stage exit sound<br />
bsr.w Pal_MakeFlash<br />
rts <br />
</asm><br />
===Boss music===<br />
on entry and exit, the special stage should now play the correct sound. Time to fix the boss music, so find:<br />
<asm><br />
loc_6ED0:<br />
move.w #$8C,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_6ED0:<br />
move.w #$19,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
then find:<br />
<asm><br />
loc_6F4A:<br />
move.w #$8C,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_6F4A:<br />
move.w #$19,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
then find:<br />
<asm><br />
loc_70D0:<br />
move.w #$8C,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_70D0:<br />
move.w #$19,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
then find:<br />
<asm><br />
loc_7144:<br />
move.w #$8C,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_7144:<br />
move.w #$19,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
then find:<br />
<asm><br />
loc_71EC:<br />
move.w #$8C,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_71EC:<br />
move.w #$19,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
<br />
===GHZ3 music restore, the modern way===<br />
I not that long ago remembered that since sonic1 does not have music memory support, the game's way of playing the previous song is hard coded, so we need to fix that since we added memory support earlier, so find:<br />
<asm><br />
loc_179E0:<br />
clr.w $12(a0)<br />
move.w #$81,d0<br />
jsr (PlaySound).l ; play GHZ music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_179E0:<br />
clr.w $12(a0)<br />
move.w ($FFFFFF90).w,d0<br />
jsr (PlaySound).l ; play GHZ music<br />
</asm><br />
<br />
===LZ3 music restore, the modern way===<br />
now find:<br />
<asm><br />
loc_18112:<br />
move.w #$82,d0<br />
jsr (PlaySound).l ; play LZ music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_18112:<br />
move.w ($FFFFFF90).w,d0<br />
jsr (PlaySound).l ; play LZ music<br />
</asm><br />
<br />
===MZ3 music restore, the modern way===<br />
now find:<br />
<asm><br />
loc_1856C:<br />
clr.w $12(a0)<br />
move.w #$83,d0<br />
jsr (PlaySound).l ; play MZ music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_1856C:<br />
clr.w $12(a0)<br />
move.w ($FFFFFF90).w,d0<br />
jsr (PlaySound).l ; play MZ music<br />
</asm><br />
<br />
===SLZ3 music restore, the modern way===<br />
now find:<br />
<asm><br />
loc_18BB4:<br />
clr.w $12(a0)<br />
move.w #$84,d0<br />
jsr (PlaySound).l ; play SLZ music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_18BB4:<br />
clr.w $12(a0)<br />
move.w ($FFFFFF90).w,d0<br />
jsr (PlaySound).l ; play SLZ music<br />
</asm><br />
<br />
===SYZ3 music restore, the modern way===<br />
find:<br />
<asm><br />
loc_194E0:<br />
clr.w $12(a0)<br />
move.w #$85,d0<br />
jsr (PlaySound).l ; play SYZ music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_194E0:<br />
clr.w $12(a0)<br />
move.w ($FFFFFF90).w,d0<br />
jsr (PlaySound).l ; play SYZ music<br />
</asm><br />
<br />
===SBZ2 Cut scene, Sonic & Knuckles style===<br />
that fixes the boss music, though you could choose different music per-level if you wish within this part of the how-to. Next we will fix the cut scene just before SBZ3, and I would choose to have that music be SBZ music, to have an effect like the cut scenes in s&k. So find:<br />
<asm><br />
Obj3A_SBZ2: ; XREF: Obj3A_ChkPos2<br />
cmpi.b #4,$1A(a0)<br />
bne.w DeleteObject<br />
addq.b #2,$24(a0)<br />
clr.b ($FFFFF7CC).w ; unlock controls<br />
move.w #$8D,d0<br />
jmp (PlaySound).l ; play FZ music<br />
</asm><br />
and change it to<br />
<asm><br />
Obj3A_SBZ2: ; XREF: Obj3A_ChkPos2<br />
cmpi.b #4,$1A(a0)<br />
bne.w DeleteObject<br />
addq.b #2,$24(a0)<br />
clr.b ($FFFFF7CC).w ; unlock controls<br />
move.w ($FFFFFF90).w,d0<br />
jmp (PlaySound).l ; play level music<br />
</asm><br />
<br />
===Air countdown music===<br />
that causes the game to use whatever music the level started with, but now we need to fix the air counter music, so find:<br />
<asm><br />
move.w #$92,d0<br />
jsr (PlaySound).l ; play countdown music<br />
<br />
loc_13F02:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$31,d0<br />
jsr (PlaySound).l ; play countdown music<br />
<br />
loc_13F02:<br />
</asm><br />
this uses the sonic 3 version of the underwater counter music, or you can use a custom one in a location of your own choice. Now lets fix the sound effects.<br />
<br />
==Fixing the sound effects so that they sound right, or at least close to right==<br />
So now we have all the music and a few sounds fixed, but what about the general sound effects (A0 - CF in sonic 1). Sound effects in sonic 3 start at 33 and end at DC, so lets fix them in sonic 1 order.<br />
===Quick Reference===<br />
If your disassembly has variables/constants defined for the sound effects, all you will have to do is compare this chart. If not, follow the steps underneath to change each and every reference.<br />
<br />
{| class="prettytable"<br />
!Sound Effect||Sonic 1||Sonic 3<br />
|-<br />
|Jump<br />
|$A0<br />
|$62<br />
|-<br />
|Lamppost<br />
|$A1<br />
|$63<br />
|-<br />
|Death<br />
|$A3<br />
|$35<br />
|-<br />
|Skid<br />
|$A4<br />
|$36<br />
|-<br />
|Hit Spikes<br />
|$A6<br />
|$37<br />
|-<br />
|Push<br />
|$A7<br />
|$69<br />
|-<br />
|Special Stage Goal<br />
|$A8<br />
|$6A<br />
|-<br />
|Special Stage Item<br />
|$A9<br />
|$6B<br />
|-<br />
|Splash<br />
|$AA<br />
|$6C<br />
|-<br />
|Hit Boss<br />
|$AC<br />
|$6E<br />
|-<br />
|Bubble<br />
|$AD<br />
|$38<br />
|-<br />
|Fireball<br />
|$AE<br />
|$70<br />
|-<br />
|Shield<br />
|$AF<br />
|$71<br />
|-<br />
|Saw<br />
|$B0<br />
|$D8<br />
|-<br />
|Electric<br />
|$B1<br />
|$79<br />
|-<br />
|Drown<br />
|$B2<br />
|$3B<br />
|-<br />
|Flamethrower<br />
|$B3<br />
|$48<br />
|-<br />
|Bumper<br />
|$B4<br />
|$AA<br />
|-<br />
|Ring<br />
|$B5<br />
|$33<br />
|-<br />
|Spikes Move<br />
|$B6<br />
|$52<br />
|-<br />
|Rumbling<br />
|$B7<br />
|$6F<br />
|-<br />
|Collapse<br />
|$B9<br />
|$59<br />
|-<br />
|Special Stage Glass<br />
|$BA<br />
|$B5<br />
|-<br />
|Door Opening<br />
|$BB<br />
|$58<br />
|-<br />
|Teleport<br />
|$BC<br />
|$73<br />
|-<br />
|Chain Stomp (MZ)<br />
|$BD<br />
|$5F<br />
|-<br />
|Roll<br />
|$BE<br />
|$3C<br />
|-<br />
|Continue<br />
|$BF<br />
|$AC<br />
|-<br />
|Basaran<br />
|$C0<br />
|$47<br />
|-<br />
|Break Item<br />
|$C1<br />
|$3D<br />
|-<br />
|Warning<br />
|$C2<br />
|$A9<br />
|-<br />
|Giant Ring<br />
|$C3<br />
|$B3<br />
|-<br />
|Bomb<br />
|$C4<br />
|$B4 (or $3D)<br />
|-<br />
|"Ca-ching"<br />
|$C5<br />
|$B0<br />
|-<br />
|Lose Rings<br />
|$C6<br />
|$B9<br />
|-<br />
|Chain Rise (MZ)<br />
|$C7<br />
|$D2<br />
|-<br />
|Burning<br />
|$C8<br />
|$D5<br />
|-<br />
|Bonus<br />
|$C9<br />
|$8C<br />
|-<br />
|Special Stage Start<br />
|$CA<br />
|$AF<br />
|-<br />
|Wall Smash<br />
|$CB<br />
|$59<br />
|-<br />
|Spring<br />
|$CC<br />
|$B1<br />
|-<br />
|Switch<br />
|$CD<br />
|$8C<br />
|-<br />
|Ring (Left Speaker)<br />
|$CE<br />
|$33<br />
|-<br />
|Signpost<br />
|$CF<br />
|Doesn't exist, $5E is close<br />
|-<br />
|Waterfall<br />
|$D0<br />
|$DB, sounds wonky<br />
|}<br />
<br />
Detailed instructions for replacing hard-coded sounds, starting with the jump sound, find:<br />
===Sound $A0===<br />
<asm><br />
move.w #$A0,d0<br />
jsr (PlaySound_Special).l ; play jumping sound<br />
move.b #$13,$16(a0)<br />
move.b #9,$17(a0)<br />
btst #2,$22(a0)<br />
bne.s loc_13490<br />
move.b #$E,$16(a0)<br />
move.b #7,$17(a0)<br />
move.b #2,$1C(a0) ; use "jumping" animation<br />
bset #2,$22(a0)<br />
addq.w #5,$C(a0)<br />
<br />
locret_1348E:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$62,d0<br />
jsr (PlaySound_Special).l ; play jumping sound<br />
move.b #$13,$16(a0)<br />
move.b #9,$17(a0)<br />
btst #2,$22(a0)<br />
bne.s loc_13490<br />
move.b #$E,$16(a0)<br />
move.b #7,$17(a0)<br />
move.b #2,$1C(a0) ; use "jumping" animation<br />
bset #2,$22(a0)<br />
addq.w #5,$C(a0)<br />
<br />
locret_1348E:<br />
</asm><br />
then find:<br />
<asm><br />
move.w #$A0,d0<br />
jsr (PlaySound_Special).l ; play jumping sound<br />
<br />
Obj09_NoJump:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$62,d0<br />
jsr (PlaySound_Special).l ; play jumping sound<br />
<br />
Obj09_NoJump:<br />
</asm><br />
===Sound $A1===<br />
the jump sound should now be what it is supposed to be, so we fix the lamp post next, so find:<br />
<asm><br />
Obj79_HitLamp:<br />
move.w ($FFFFD008).w,d0<br />
sub.w 8(a0),d0<br />
addq.w #8,d0<br />
cmpi.w #$10,d0<br />
bcc.w locret_16F90<br />
move.w ($FFFFD00C).w,d0<br />
sub.w $C(a0),d0<br />
addi.w #$40,d0<br />
cmpi.w #$68,d0<br />
bcc.s locret_16F90<br />
move.w #$A1,d0<br />
jsr (PlaySound_Special).l ; play lamppost sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj79_HitLamp:<br />
move.w ($FFFFD008).w,d0<br />
sub.w 8(a0),d0<br />
addq.w #8,d0<br />
cmpi.w #$10,d0<br />
bcc.w locret_16F90<br />
move.w ($FFFFD00C).w,d0<br />
sub.w $C(a0),d0<br />
addi.w #$40,d0<br />
cmpi.w #$68,d0<br />
bcc.s locret_16F90<br />
move.w #$63,d0<br />
jsr (PlaySound_Special).l ; play lamppost sound<br />
</asm><br />
===Sound $A2===<br />
Sound $A2 is not used in sonic 1, so it will be skipped.<br />
===Sound $A3===<br />
that makes the lamp post sound correct, so lets fix the normal damage sound. Find:<br />
<asm><br />
Hurt_ChkSpikes:<br />
move.w #0,$14(a0)<br />
move.b #$1A,$1C(a0)<br />
move.w #$78,$30(a0)<br />
move.w #$A3,d0 ; load normal damage sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Hurt_ChkSpikes:<br />
move.w #0,$14(a0)<br />
move.b #$1A,$1C(a0)<br />
move.w #$78,$30(a0)<br />
move.w #$35,d0 ; load normal damage sound<br />
</asm><br />
then find:<br />
<asm><br />
move.w #$A3,d0 ; play normal death sound<br />
cmpi.b #$36,(a2) ; check if you were killed by spikes<br />
bne.s Kill_Sound<br />
move.w #$A6,d0 ; play spikes death sound<br />
<br />
Kill_Sound:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$35,d0 ; play normal death sound<br />
cmpi.b #$36,(a2) ; check if you were killed by spikes<br />
bne.s Kill_Sound<br />
move.w #$A6,d0 ; play spikes death sound<br />
<br />
Kill_Sound:<br />
</asm><br />
<br />
===Sound $A4===<br />
seems we have the hurt sound working, but now we fix the skid and stop sound, so find:<br />
<asm><br />
move.w #$A4,d0<br />
jsr (PlaySound_Special).l ; play stopping sound<br />
<br />
locret_130E8:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$36,d0<br />
jsr (PlaySound_Special).l ; play stopping sound<br />
<br />
locret_130E8:<br />
</asm><br />
then find:<br />
<asm><br />
move.w #$A4,d0<br />
jsr (PlaySound_Special).l ; play stopping sound<br />
<br />
locret_1314E:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$36,d0<br />
jsr (PlaySound_Special).l ; play stopping sound<br />
<br />
locret_1314E:<br />
</asm><br />
===Sound $A5===<br />
now sonic skids right, but we need to fix another sound. Find:<br />
<asm><br />
move.w #$A5,d0<br />
jsr (PlaySound_Special).l ; play explosion sound<br />
<br />
Obj24_Animate: ; XREF: Obj24_Index<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$67,d0<br />
jsr (PlaySound_Special).l ; play explosion sound<br />
<br />
Obj24_Animate: ; XREF: Obj24_Index<br />
</asm><br />
===Sound $A6===<br />
now find:<br />
<asm><br />
move.w #$A6,d0 ; load spikes damage sound<br />
<br />
Hurt_Sound:<br />
jsr (PlaySound_Special).l<br />
moveq #-1,d0<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$37,d0 ; load spikes damage sound<br />
<br />
Hurt_Sound:<br />
jsr (PlaySound_Special).l<br />
moveq #-1,d0<br />
rts <br />
</asm><br />
now find:<br />
<asm><br />
move.w #$A3,d0 ; play normal death sound<br />
cmpi.b #$36,(a2) ; check if you were killed by spikes<br />
bne.s Kill_Sound<br />
move.w #$A6,d0 ; play spikes death sound<br />
<br />
Kill_Sound:<br />
jsr (PlaySound_Special).l<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$35,d0 ; play normal death sound<br />
cmpi.b #$36,(a2) ; check if you were killed by spikes<br />
bne.s Kill_Sound<br />
move.w #$37,d0 ; play spikes death sound<br />
<br />
Kill_Sound:<br />
jsr (PlaySound_Special).l<br />
</asm><br />
===Sound $A7===<br />
now find:<br />
<asm><br />
loc_C294:<br />
lea ($FFFFD000).w,a1<br />
add.w d0,8(a1)<br />
move.w d1,$14(a1)<br />
move.w #0,$10(a1)<br />
move.w d0,-(sp)<br />
move.w #$A7,d0<br />
jsr (PlaySound_Special).l ; play pushing sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_C294:<br />
lea ($FFFFD000).w,a1<br />
add.w d0,8(a1)<br />
move.w d1,$14(a1)<br />
move.w #0,$10(a1)<br />
move.w d0,-(sp)<br />
move.w #$69,d0<br />
jsr (PlaySound_Special).l ; play pushing sound<br />
</asm><br />
===Sound $A8===<br />
now find:<br />
<asm><br />
move.w #$A8,d0<br />
jsr (PlaySound_Special).l ; play Special Stage "GOAL" sound<br />
<br />
Obj4A_Display:<br />
jmp (DisplaySprite).l<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$6A,d0<br />
jsr (PlaySound_Special).l ; play Special Stage "GOAL" sound<br />
<br />
Obj4A_Display:<br />
jmp (DisplaySprite).l<br />
</asm><br />
now find:<br />
<asm><br />
move.w #$A8,d0<br />
jsr (PlaySound_Special).l ; play special stage GOAL sound<br />
<br />
locret_1B60C:<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$6A,d0<br />
jsr (PlaySound_Special).l ; play special stage GOAL sound<br />
<br />
locret_1B60C:<br />
rts <br />
</asm><br />
now find:<br />
<asm><br />
Obj09_GOAL:<br />
cmpi.b #$27,d0 ; is the item a "GOAL"?<br />
bne.s Obj09_UPblock<br />
addq.b #2,$24(a0) ; run routine "Obj09_ExitStage"<br />
move.w #$A8,d0 ; change item<br />
jsr (PlaySound_Special).l ; play "GOAL" sound<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
Obj09_GOAL:<br />
cmpi.b #$27,d0 ; is the item a "GOAL"?<br />
bne.s Obj09_UPblock<br />
addq.b #2,$24(a0) ; run routine "Obj09_ExitStage"<br />
move.w #$6A,d0 ; change item<br />
jsr (PlaySound_Special).l ; play "GOAL" sound<br />
rts <br />
</asm><br />
===Sound $A9===<br />
now find:<br />
<asm><br />
Obj09_UPsnd:<br />
move.w #$A9,d0<br />
jmp (PlaySound_Special).l ; play up/down sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj09_UPsnd:<br />
move.w #$6B,d0<br />
jmp (PlaySound_Special).l ; play up/down sound<br />
</asm><br />
then find:<br />
<asm><br />
Obj09_DOWNsnd:<br />
move.w #$A9,d0<br />
jmp (PlaySound_Special).l ; play up/down sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj09_DOWNsnd:<br />
move.w #$6B,d0<br />
jmp (PlaySound_Special).l ; play up/down sound<br />
</asm><br />
then find:<br />
<asm><br />
Obj09_RevStage:<br />
neg.w ($FFFFF782).w ; reverse stage rotation<br />
move.w #$A9,d0<br />
jmp (PlaySound_Special).l ; play sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj09_RevStage:<br />
neg.w ($FFFFF782).w ; reverse stage rotation<br />
move.w #$6B,d0<br />
jmp (PlaySound_Special).l ; play sound<br />
</asm><br />
===Sound $AA===<br />
now find:<br />
<asm><br />
move.w #$AA,d0<br />
jmp (PlaySound_Special).l ; play splash sound<br />
; ===========================================================================<br />
<br />
Obj01_OutWater:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$6C,d0<br />
jmp (PlaySound_Special).l ; play splash sound<br />
; ===========================================================================<br />
<br />
Obj01_OutWater:<br />
</asm><br />
then find:<br />
<asm><br />
loc_12E0E:<br />
move.w #$AA,d0<br />
jmp (PlaySound_Special).l ; play splash sound<br />
; End of function Sonic_Water<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_12E0E:<br />
move.w #$57,d0<br />
jmp (PlaySound_Special).l ; play splash sound<br />
; End of function Sonic_Water<br />
</asm><br />
===Sound $AB===<br />
Sound $AB is not used in Sonic 1, so we will skip it.<br />
<br />
===Sound $AC===<br />
now we will find:<br />
<asm><br />
bne.s locret_1784A<br />
tst.b $3E(a0)<br />
bne.s Obj3D_ShipFlash<br />
move.b #$20,$3E(a0) ; set number of times for ship to flash<br />
move.w #$AC,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
<br />
Obj3D_ShipFlash:<br />
</asm><br />
and change it to:<br />
<asm><br />
bne.s locret_1784A<br />
tst.b $3E(a0)<br />
bne.s Obj3D_ShipFlash<br />
move.b #$20,$3E(a0) ; set number of times for ship to flash<br />
move.w #$6E,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
<br />
Obj3D_ShipFlash:<br />
</asm><br />
then we will find:<br />
<asm><br />
loc_17F48:<br />
tst.b $3D(a0)<br />
bne.s loc_17F8E<br />
tst.b $22(a0)<br />
bmi.s loc_17F92<br />
tst.b $20(a0)<br />
bne.s locret_17F8C<br />
tst.b $3E(a0)<br />
bne.s loc_17F70<br />
move.b #$20,$3E(a0)<br />
move.w #$AC,d0<br />
jsr (PlaySound_Special).l<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_17F48:<br />
tst.b $3D(a0)<br />
bne.s loc_17F8E<br />
tst.b $22(a0)<br />
bmi.s loc_17F92<br />
tst.b $20(a0)<br />
bne.s locret_17F8C<br />
tst.b $3E(a0)<br />
bne.s loc_17F70<br />
move.b #$20,$3E(a0)<br />
move.w #$6E,d0<br />
jsr (PlaySound_Special).l<br />
</asm><br />
then find:<br />
<asm><br />
loc_1833E:<br />
move.w $38(a0),$C(a0)<br />
move.w $30(a0),8(a0)<br />
cmpi.b #4,$25(a0)<br />
bcc.s locret_18390<br />
tst.b $22(a0)<br />
bmi.s loc_18392<br />
tst.b $20(a0)<br />
bne.s locret_18390<br />
tst.b $3E(a0)<br />
bne.s loc_18374<br />
move.b #$28,$3E(a0)<br />
move.w #$AC,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_1833E:<br />
move.w $38(a0),$C(a0)<br />
move.w $30(a0),8(a0)<br />
cmpi.b #4,$25(a0)<br />
bcc.s locret_18390<br />
tst.b $22(a0)<br />
bmi.s loc_18392<br />
tst.b $20(a0)<br />
bne.s locret_18390<br />
tst.b $3E(a0)<br />
bne.s loc_18374<br />
move.b #$28,$3E(a0)<br />
move.w #$6E,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
<br />
then find:<br />
<asm><br />
loc_189FE:<br />
cmpi.b #6,$25(a0)<br />
bcc.s locret_18A44<br />
tst.b $22(a0)<br />
bmi.s loc_18A46<br />
tst.b $20(a0)<br />
bne.s locret_18A44<br />
tst.b $3E(a0)<br />
bne.s loc_18A28<br />
move.b #$20,$3E(a0)<br />
move.w #$AC,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_189FE:<br />
cmpi.b #6,$25(a0)<br />
bcc.s locret_18A44<br />
tst.b $22(a0)<br />
bmi.s loc_18A46<br />
tst.b $20(a0)<br />
bne.s locret_18A44<br />
tst.b $3E(a0)<br />
bne.s loc_18A28<br />
move.b #$20,$3E(a0)<br />
move.w #$6E,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
then find:<br />
<asm><br />
loc_19202:<br />
move.w 8(a0),d0<br />
subi.w #$2C00,d0<br />
lsr.w #5,d0<br />
move.b d0,$34(a0)<br />
cmpi.b #6,$25(a0)<br />
bcc.s locret_19256<br />
tst.b $22(a0)<br />
bmi.s loc_19258<br />
tst.b $20(a0)<br />
bne.s locret_19256<br />
tst.b $3E(a0)<br />
bne.s loc_1923A<br />
move.b #$20,$3E(a0)<br />
move.w #$AC,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_19202:<br />
move.w 8(a0),d0<br />
subi.w #$2C00,d0<br />
lsr.w #5,d0<br />
move.b d0,$34(a0)<br />
cmpi.b #6,$25(a0)<br />
bcc.s locret_19256<br />
tst.b $22(a0)<br />
bmi.s loc_19258<br />
tst.b $20(a0)<br />
bne.s locret_19256<br />
tst.b $3E(a0)<br />
bne.s loc_1923A<br />
move.b #$20,$3E(a0)<br />
move.w #$6E,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
then find:<br />
<asm><br />
loc_19F6A:<br />
move.w d0,($FFFFD010).w<br />
tst.b $35(a0)<br />
bne.s loc_19F88<br />
subq.b #1,$21(a0)<br />
move.b #$64,$35(a0)<br />
move.w #$AC,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_19F6A:<br />
move.w d0,($FFFFD010).w<br />
tst.b $35(a0)<br />
bne.s loc_19F88<br />
subq.b #1,$21(a0)<br />
move.b #$64,$35(a0)<br />
move.w #$6E,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
now find:<br />
<asm><br />
loc_1A1D4: ; XREF: off_19E80<br />
bset #0,$22(a0)<br />
jsr (SpeedToPos).l<br />
tst.w $30(a0)<br />
bne.s loc_1A1FC<br />
tst.b $20(a0)<br />
bne.s loc_1A216<br />
move.w #$1E,$30(a0)<br />
move.w #$AC,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_1A1D4: ; XREF: off_19E80<br />
bset #0,$22(a0)<br />
jsr (SpeedToPos).l<br />
tst.w $30(a0)<br />
bne.s loc_1A1FC<br />
tst.b $20(a0)<br />
bne.s loc_1A216<br />
move.w #$1E,$30(a0)<br />
move.w #$6E,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
<br />
===Sound $AD===<br />
lets fix the air bubble sound, so locate:<br />
<asm><br />
bsr.w ResumeMusic ; cancel countdown music<br />
move.w #$AD,d0<br />
jsr (PlaySound_Special).l ; play collecting bubble sound<br />
lea ($FFFFD000).w,a1<br />
</asm><br />
should not be very hard to do, it is part of object 64's wobble routine, and there is a single line it int to change so that it is like this:<br />
<asm><br />
bsr.w ResumeMusic ; cancel countdown music<br />
move.w #$38,d0<br />
jsr (PlaySound_Special).l ; play collecting bubble sound<br />
lea ($FFFFD000).w,a1<br />
</asm><br />
I used that same sound in a monitor that is in a hack that will enter the 2011 hacking contest this year thanks to the early notice.<br />
<br />
===Sound $AE===<br />
now find:<br />
<asm><br />
Obj14_PlaySnd:<br />
move.w #$AE,d0<br />
jsr (PlaySound_Special).l ; play lava ball sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj14_PlaySnd:<br />
move.w #$70,d0<br />
jsr (PlaySound_Special).l ; play lava ball sound<br />
</asm><br />
then find:<br />
<asm><br />
Obj62_Sound:<br />
move.w #$AE,d0<br />
jsr (PlaySound_Special).l ; play lava ball sound<br />
</asm><br />
then change it to:<br />
<asm><br />
Obj62_Sound:<br />
move.w #$70,d0<br />
jsr (PlaySound_Special).l ; play lava ball sound<br />
</asm><br />
then find:<br />
<asm><br />
loc_1870A:<br />
move.b #$1E,$29(a0)<br />
move.w #$AE,d0<br />
jsr (PlaySound_Special).l ; play lava sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_1870A:<br />
move.b #$1E,$29(a0)<br />
move.w #$70,d0<br />
jsr (PlaySound_Special).l ; play lava sound<br />
</asm><br />
===Sound $AF===<br />
now find:<br />
<asm><br />
Obj2E_ChkShield:<br />
cmpi.b #4,d0 ; does monitor contain a shield?<br />
bne.s Obj2E_ChkInvinc<br />
move.b #1,($FFFFFE2C).w ; give Sonic a shield<br />
move.b #$38,($FFFFD180).w ; load shield object ($38)<br />
move.w #$AF,d0<br />
jmp (PlaySound).l ; play shield sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj2E_ChkShield:<br />
cmpi.b #4,d0 ; does monitor contain a shield?<br />
bne.s Obj2E_ChkInvinc<br />
move.b #1,($FFFFFE2C).w ; give Sonic a shield<br />
move.b #$38,($FFFFD180).w ; load shield object ($38)<br />
move.w #$71,d0<br />
jmp (PlaySound).l ; play shield sound<br />
</asm><br />
===Sound $B0===<br />
now find:<br />
<asm><br />
loc_15A46:<br />
tst.b 1(a0)<br />
bpl.s locret_15A60<br />
move.w ($FFFFFE04).w,d0<br />
andi.w #$F,d0<br />
bne.s locret_15A60<br />
move.w #$B0,d0<br />
jsr (PlaySound_Special).l ; play saw sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_15A46:<br />
tst.b 1(a0)<br />
bpl.s locret_15A60<br />
move.w ($FFFFFE04).w,d0<br />
andi.w #$F,d0<br />
bne.s locret_15A60<br />
move.w #$D8,d0<br />
jsr (PlaySound_Special).l ; play saw sound<br />
</asm><br />
now find:<br />
<asm><br />
loc_15A96:<br />
tst.b 1(a0)<br />
bpl.s locret_15AB0<br />
move.b ($FFFFFE64).w,d0<br />
cmpi.b #$18,d0<br />
bne.s locret_15AB0<br />
move.w #$B0,d0<br />
jsr (PlaySound_Special).l ; play saw sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_15A96:<br />
tst.b 1(a0)<br />
bpl.s locret_15AB0<br />
move.b ($FFFFFE64).w,d0<br />
cmpi.b #$18,d0<br />
bne.s locret_15AB0<br />
move.w #$D8,d0<br />
jsr (PlaySound_Special).l ; play saw sound<br />
</asm><br />
now find:<br />
<asm><br />
move.w #$B0,d0<br />
jsr (PlaySound_Special).l ; play saw sound<br />
<br />
loc_15B02:<br />
addq.l #4,sp<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$D8,d0<br />
jsr (PlaySound_Special).l ; play saw sound<br />
<br />
loc_15B02:<br />
addq.l #4,sp<br />
</asm><br />
now find:<br />
<asm><br />
move.w #$B0,d0<br />
jsr (PlaySound_Special).l ; play saw sound<br />
<br />
loc_15B74:<br />
addq.l #4,sp<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$D8,d0<br />
jsr (PlaySound_Special).l ; play saw sound<br />
<br />
loc_15B74:<br />
addq.l #4,sp<br />
</asm><br />
===Sound $B1===<br />
the next sound is a little different. Sonic1 uses the same sound effect for both the shocker orb thingies and the balls of lightning in the final boss, but the sonic3 driver has a couple of sound effects that I see fitting better. shocker orbs will use the sound used for a certain badnik in carnival night zone because it sounds better in my opinion, while the balls of lightning from final boss will use the sound used for knux being shocked in hidden palace zone. This is how sonic 3d blast / flickies island used similar sound effects, so we will find:<br />
<asm><br />
Obj6E_Shock: ; XREF: Obj6E_Index<br />
move.w ($FFFFFE04).w,d0<br />
and.w $34(a0),d0<br />
bne.s Obj6E_Animate<br />
move.b #1,$1C(a0) ; run "shocking" animation<br />
tst.b 1(a0)<br />
bpl.s Obj6E_Animate<br />
move.w #$B1,d0<br />
jsr (PlaySound_Special).l ; play electricity sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj6E_Shock: ; XREF: Obj6E_Index<br />
move.w ($FFFFFE04).w,d0<br />
and.w $34(a0),d0<br />
bne.s Obj6E_Animate<br />
move.b #1,$1C(a0) ; run "shocking" animation<br />
tst.b 1(a0)<br />
bpl.s Obj6E_Animate<br />
move.w #$79,d0<br />
jsr (PlaySound_Special).l ; play cnz shock and teleport sound<br />
</asm><br />
then find:<br />
<asm><br />
loc_1A020:<br />
move.w #$B1,d0<br />
jmp (PlaySound_Special).l ; play electricity sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_1A020:<br />
move.w #$78,d0<br />
jmp (PlaySound_Special).l ; play shock knux sound<br />
</asm><br />
===Sound $B2===<br />
the next sound is a lot more like the others, it is the drowning sound. We will locate:<br />
<asm><br />
Obj0A_ReduceAir:<br />
subq.w #1,($FFFFFE14).w ; subtract 1 from air remaining<br />
bcc.w Obj0A_GoMakeItem ; if air is above 0, branch<br />
bsr.w ResumeMusic<br />
move.b #$81,($FFFFF7C8).w ; lock controls<br />
move.w #$B2,d0<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj0A_ReduceAir:<br />
subq.w #1,($FFFFFE14).w ; subtract 1 from air remaining<br />
bcc.w Obj0A_GoMakeItem ; if air is above 0, branch<br />
bsr.w ResumeMusic<br />
move.b #$81,($FFFFF7C8).w ; lock controls<br />
move.w #$3B,d0<br />
</asm><br />
<br />
===Sound $B3===<br />
now find:<br />
<asm><br />
move.w #$B3,d0<br />
jsr (PlaySound_Special).l ; play flame sound<br />
<br />
loc_E57A:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$48,d0<br />
jsr (PlaySound_Special).l ; play flame sound<br />
<br />
loc_E57A:<br />
</asm><br />
===Sound $B4===<br />
now find:<br />
<asm><br />
move.w #$B4,d0<br />
jsr (PlaySound_Special).l ; play bumper sound<br />
lea ($FFFFFC00).w,a2<br />
moveq #0,d0<br />
move.b $23(a0),d0<br />
beq.s Obj47_Score<br />
cmpi.b #$8A,2(a2,d0.w) ; has bumper been hit $8A times?<br />
bcc.s Obj47_Display ; if yes, Sonic gets no points<br />
addq.b #1,2(a2,d0.w)<br />
<br />
Obj47_Score:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$AA,d0<br />
jsr (PlaySound_Special).l ; play bumper sound<br />
lea ($FFFFFC00).w,a2<br />
moveq #0,d0<br />
move.b $23(a0),d0<br />
beq.s Obj47_Score<br />
cmpi.b #$8A,2(a2,d0.w) ; has bumper been hit $8A times?<br />
bcc.s Obj47_Display ; if yes, Sonic gets no points<br />
addq.b #1,2(a2,d0.w)<br />
<br />
Obj47_Score:<br />
</asm><br />
and find:<br />
<asm><br />
Obj09_BumpSnd:<br />
move.w #$B4,d0<br />
jmp (PlaySound_Special).l ; play bumper sound<br />
; ===========================================================================<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj09_BumpSnd:<br />
move.w #$AA,d0<br />
jmp (PlaySound_Special).l ; play bumper sound<br />
; ===========================================================================<br />
</asm><br />
===Sound $B5===<br />
now find:<br />
<asm><br />
Title_PlayRing:<br />
move.b #1,(a0,d1.w) ; activate cheat<br />
move.b #$B5,d0 ; play ring sound when code is entered<br />
bsr.w PlaySound_Special<br />
</asm><br />
and change it to:<br />
<asm><br />
Title_PlayRing:<br />
move.b #1,(a0,d1.w) ; activate cheat<br />
move.b #$33,d0 ; play ring sound when code is entered<br />
bsr.w PlaySound_Special<br />
</asm><br />
then find:<br />
<asm><br />
CollectRing: ; XREF: Obj25_Collect<br />
addq.w #1,($FFFFFE20).w ; add 1 to rings<br />
ori.b #1,($FFFFFE1D).w ; update the rings counter<br />
move.w #$B5,d0 ; play ring sound<br />
</asm><br />
and change it to:<br />
<asm><br />
CollectRing: ; XREF: Obj25_Collect<br />
addq.w #1,($FFFFFE20).w ; add 1 to rings<br />
ori.b #1,($FFFFFE1D).w ; update the rings counter<br />
move.w #$33,d0 ; play ring sound<br />
</asm><br />
then find:<br />
<asm><br />
Obj2E_RingSound:<br />
move.w #$B5,d0<br />
jmp (PlaySound).l ; play ring sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj2E_RingSound:<br />
move.w #$33,d0<br />
jmp (PlaySound).l ; play ring sound<br />
</asm><br />
===Sound $B6===<br />
now find:<br />
<asm><br />
move.w #$B6,d0<br />
jsr (PlaySound_Special).l ; play "spikes moving" sound<br />
bra.s locret_CFE6<br />
; ===========================================================================<br />
<br />
loc_CFA4:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$52,d0<br />
jsr (PlaySound_Special).l ; play "spikes moving" sound<br />
bra.s locret_CFE6<br />
; ===========================================================================<br />
<br />
loc_CFA4:<br />
</asm><br />
===Sound $B7===<br />
now find:<br />
<asm><br />
move.w #$B7,d0<br />
bsr.w PlaySound_Special ; play sound $B7 (rumbling)<br />
<br />
loc_3D54:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$6F,d0<br />
bsr.w PlaySound_Special ; play sound $6F (rumbling)<br />
<br />
loc_3D54:<br />
</asm><br />
now find:<br />
<asm><br />
move.w #$B7,d0<br />
bsr.w PlaySound_Special ; play rumbling sound<br />
<br />
loc_6F28:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$6F,d0<br />
bsr.w PlaySound_Special ; play rumbling sound<br />
<br />
loc_6F28:<br />
</asm><br />
now find:<br />
<asm><br />
move.w #$B7,d0<br />
jsr (PlaySound_Special).l ; play rumbling sound<br />
<br />
loc_19F10:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$6F,d0<br />
jsr (PlaySound_Special).l ; play rumbling sound<br />
<br />
loc_19F10:<br />
</asm><br />
===Sound $B8===<br />
sound $B8 is not used in sonic1, so we will skip it.<br />
<br />
===Sound $B9===<br />
now find:<br />
<asm><br />
loc_84F2:<br />
bsr.w DisplaySprite<br />
move.w #$B9,d0<br />
jmp (PlaySound_Special).l ; play collapsing sound<br />
</asm><br />
and we change it to:<br />
<asm><br />
loc_84F2:<br />
bsr.w DisplaySprite<br />
move.w #$59,d0<br />
jmp (PlaySound_Special).l ; play collapsing sound<br />
</asm><br />
===Sound $BA===<br />
'''note: the breaking and collapsing sounds in sonic3 are the same.'''<br><br />
now we will find:<br />
<asm><br />
Obj09_GlassSnd:<br />
move.w #$BA,d0<br />
jmp (PlaySound_Special).l ; play glass block sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj09_GlassSnd:<br />
move.w #$B5,d0<br />
jmp (PlaySound_Special).l ; play glass block sound<br />
</asm><br />
<br />
===Sound $BB===<br />
now find:<br />
<asm><br />
move.w #$BB,d0<br />
jsr (PlaySound_Special).l ; play door sound<br />
<br />
Obj0C_Solid:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$58,d0<br />
jsr (PlaySound_Special).l ; play door sound<br />
<br />
Obj0C_Solid:<br />
</asm><br />
<br />
now find:<br />
<asm><br />
move.w #$BB,d0<br />
jsr (PlaySound_Special).l ; play door sound<br />
<br />
Obj69_Animate:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$58,d0<br />
jsr (PlaySound_Special).l ; play door sound<br />
<br />
Obj69_Animate:<br />
</asm><br />
===Sound $BC===<br />
'''note: this sound effect is used differently in sonic3 but is the closest to what we have here'''<br><br />
now we find:<br />
<asm><br />
move.w #$BC,d0<br />
jsr (PlaySound_Special).l ; play teleport sound<br />
<br />
locret_16796:<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$73,d0<br />
jsr (PlaySound_Special).l ; play teleport sound<br />
<br />
locret_16796:<br />
rts <br />
</asm><br />
<br />
===Sound $BD===<br />
now find:<br />
<asm><br />
move.w #$BD,d0<br />
jsr (PlaySound_Special).l ; play stomping sound<br />
<br />
Obj31_Restart:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$5F,d0<br />
jsr (PlaySound_Special).l ; play stomping sound<br />
<br />
Obj31_Restart:<br />
</asm><br />
now find:<br />
<asm><br />
move.w #$BD,d0<br />
jsr (PlaySound_Special).l ; play stomping sound<br />
<br />
loc_B97C:<br />
bra.w Obj31_Restart<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$5F,d0<br />
jsr (PlaySound_Special).l ; play stomping sound<br />
<br />
loc_B97C:<br />
bra.w Obj31_Restart<br />
</asm><br />
===Sound $BE===<br />
'''note: this stomp sound is very different, though it is a stomping sound, the one from MGZ to be exact'''<br><br />
now find:<br />
<asm><br />
move.w #$BE,d0<br />
jsr (PlaySound_Special).l ; play rolling sound<br />
tst.w $14(a0)<br />
bne.s locret_133E8<br />
move.w #$200,$14(a0)<br />
<br />
locret_133E8:<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$3C,d0<br />
jsr (PlaySound_Special).l ; play rolling sound<br />
tst.w $14(a0)<br />
bne.s locret_133E8<br />
move.w #$200,$14(a0)<br />
<br />
locret_133E8:<br />
rts <br />
</asm><br />
now find:<br />
<asm><br />
move.w #$BE,d0<br />
jsr (PlaySound_Special).l ; play Sonic rolling sound<br />
<br />
locret_1675C:<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$53,d0<br />
jsr (PlaySound_Special).l ; sonic & knuckles begin teleportation<br />
<br />
locret_1675C:<br />
rts <br />
</asm><br />
<br />
===Sound $BF===<br />
This sound should already be fixed if you were following the guide, please refer to special event sounds if it isn't by now.<br />
<br />
===Sound $C0===<br />
Seems the sonic 3 driver does not have a sound for this, since the bat robot in CNZ (sonic 3) does not sound anywhere close to the MZ (sonic 1) variant, we will use a similar but close sound.<br><br />
lets look at the code:<br />
<asm><br />
Obj55_PlaySnd: ; XREF: Obj55_Index2<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$F,d0<br />
bne.s loc_101A0<br />
move.w #$C0,d0<br />
jsr (PlaySound_Special).l ; play flapping sound<br />
</asm><br />
And we will do as we have always been doing (I hope you were not just simply copy/pasting in the sound corrections, but changing the sound number in the line above '''jsr (PlaySound_Special).l''' or similar to the value suggested in the "change it to:" part of the tutorial at each step so that you can actually learn something and '''not simply break your hack'''. I have seen a lot of people complaining about their hack being broken with this driver, I assume that the hacker did not check to see if what they did effected their work. i.e. if you have code added to the sonic 1 driver for your hack, it is either obsolete and will be removed, of it it is unrelated to sound, either use another guide, or update your code so that you don't lose it.<br />
<br />
I use the hivebrain 2005 disassembly with asw, so you may need to apply fixes to make it work with a different disassembly. Expect later, a svn sonic1 version of this tutorial later on. Now that what was said is out of the way, lets change it:<br />
<asm><br />
Obj55_PlaySnd: ; XREF: Obj55_Index2<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$F,d0<br />
bne.s loc_101A0<br />
move.w #$47,d0<br />
jsr (PlaySound_Special).l ; play flapping sound<br />
</asm><br />
<br />
===Sound $C1===<br />
now we will find:<br />
<asm><br />
Obj27_Main: ; XREF: Obj27_Index<br />
addq.b #2,$24(a0)<br />
move.l #Map_obj27,4(a0)<br />
move.w #$5A0,2(a0)<br />
move.b #4,1(a0)<br />
move.b #1,$18(a0)<br />
move.b #0,$20(a0)<br />
move.b #$C,$19(a0)<br />
move.b #7,$1E(a0) ; set frame duration to 7 frames<br />
move.b #0,$1A(a0)<br />
move.w #$C1,d0<br />
jsr (PlaySound_Special).l ; play breaking enemy sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj27_Main: ; XREF: Obj27_Index<br />
addq.b #2,$24(a0)<br />
move.l #Map_obj27,4(a0)<br />
move.w #$5A0,2(a0)<br />
move.b #4,1(a0)<br />
move.b #1,$18(a0)<br />
move.b #0,$20(a0)<br />
move.b #$C,$19(a0)<br />
move.b #7,$1E(a0) ; set frame duration to 7 frames<br />
move.b #0,$1A(a0)<br />
move.w #$3D,d0<br />
jsr (PlaySound_Special).l ; play breaking enemy sound<br />
</asm><br />
<br />
===Sound $C2===<br />
the warning sound that you hear every so often under water "ding, ding" will be fixed by finding:<br />
<asm><br />
Obj0A_WarnSound: ; XREF: Obj0A_Countdown<br />
move.w #$C2,d0<br />
jsr (PlaySound_Special).l ; play "ding-ding" warning sound<br />
</asm><br />
and changing it to:<br />
<asm><br />
Obj0A_WarnSound: ; XREF: Obj0A_Countdown<br />
move.w #$A9,d0<br />
jsr (PlaySound_Special).l ; play "ding-ding" warning sound<br />
</asm><br />
<br />
===Sound $C3===<br />
now we fix the giant special stage ring sound, what sound to use should be a no brainer if you listen to the sound test in sonic 3, since a new version of the giant rings return in sonic 3, so lets fix it by finding:<br />
<asm><br />
Obj4B_PlaySnd:<br />
move.w #$C3,d0<br />
jsr (PlaySound_Special).l ; play giant ring sound<br />
bra.s Obj4B_Animate<br />
</asm><br />
and changing it to:<br />
<asm><br />
Obj4B_PlaySnd:<br />
move.w #$B3,d0<br />
jsr (PlaySound_Special).l ; play giant ring sound<br />
bra.s Obj4B_Animate<br />
</asm><br />
<br />
===Sound $C4===<br />
for this one, you can use a sonic 3/s&k/sonic3k exploding sound (monitor/badnik pop), or use the classic, with is $B4, both work in a sonic game and either one could be useful in the hack, it is up to you. For that reason, I will provide two different versions of this step.<br />
====Classic version====<br />
still want the old school sound with the sonic 3 driver?<br><br />
find:<br />
<asm><br />
Obj3F_Main: ; XREF: Obj3F_Index<br />
addq.b #2,$24(a0)<br />
move.l #Map_obj3F,4(a0)<br />
move.w #$5A0,2(a0)<br />
move.b #4,1(a0)<br />
move.b #1,$18(a0)<br />
move.b #0,$20(a0)<br />
move.b #$C,$19(a0)<br />
move.b #7,$1E(a0)<br />
move.b #0,$1A(a0)<br />
move.w #$C4,d0<br />
jmp (PlaySound_Special).l ; play exploding bomb sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj3F_Main: ; XREF: Obj3F_Index<br />
addq.b #2,$24(a0)<br />
move.l #Map_obj3F,4(a0)<br />
move.w #$5A0,2(a0)<br />
move.b #4,1(a0)<br />
move.b #1,$18(a0)<br />
move.b #0,$20(a0)<br />
move.b #$C,$19(a0)<br />
move.b #7,$1E(a0)<br />
move.b #0,$1A(a0)<br />
move.w #$B4,d0<br />
jmp (PlaySound_Special).l ; play exploding bomb sound<br />
</asm><br />
<br />
====Sonic3/k version (my favorite)====<br />
want the new sound?<br><br />
find:<br />
<asm><br />
Obj3F_Main: ; XREF: Obj3F_Index<br />
addq.b #2,$24(a0)<br />
move.l #Map_obj3F,4(a0)<br />
move.w #$5A0,2(a0)<br />
move.b #4,1(a0)<br />
move.b #1,$18(a0)<br />
move.b #0,$20(a0)<br />
move.b #$C,$19(a0)<br />
move.b #7,$1E(a0)<br />
move.b #0,$1A(a0)<br />
move.w #$C4,d0<br />
jmp (PlaySound_Special).l ; play exploding bomb sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj3F_Main: ; XREF: Obj3F_Index<br />
addq.b #2,$24(a0)<br />
move.l #Map_obj3F,4(a0)<br />
move.w #$5A0,2(a0)<br />
move.b #4,1(a0)<br />
move.b #1,$18(a0)<br />
move.b #0,$20(a0)<br />
move.b #$C,$19(a0)<br />
move.b #7,$1E(a0)<br />
move.b #0,$1A(a0)<br />
move.w #$3D,d0<br />
jmp (PlaySound_Special).l ; play monitor destruction sound like sonic3/k<br />
</asm><br />
you are probably wondering, why use this sound here? the LRZ (s&k) exploding rock uses it and astareon (sonic2, MtZ) uese it, and besides it is used in the eggman defeat routine and the egg prison destruction routine. the result, the eggman defeat sounds as it does in sonic 3, time to update the eggmobile artwork now if you so choose so that it fits better with this sound improvement.<br />
<br />
===Sound $C5===<br />
this sound really needs to be fixed badly if the sonic 3 driver is in, it is the same in every single sonic game excluding 8-bit and portable games, even the next-gen games (though it is an enhanced version) and sonic adventure has an improved version even. please fix this one in your hack or it will be way off from normal sonic games.<br><br />
find:<br />
<asm><br />
Obj3A_ChkBonus:<br />
tst.w d0 ; is there any bonus?<br />
bne.s Obj3A_AddBonus ; if yes, branch<br />
move.w #$C5,d0<br />
jsr (PlaySound_Special).l ; play "ker-ching" sound<br />
addq.b #2,$24(a0)<br />
cmpi.w #$501,($FFFFFE10).w<br />
bne.s Obj3A_SetDelay<br />
addq.b #4,$24(a0)<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj3A_ChkBonus:<br />
tst.w d0 ; is there any bonus?<br />
bne.s Obj3A_AddBonus ; if yes, branch<br />
move.w #$B0,d0<br />
jsr (PlaySound_Special).l ; play "ker-ching" sound<br />
addq.b #2,$24(a0)<br />
cmpi.w #$501,($FFFFFE10).w<br />
bne.s Obj3A_SetDelay<br />
addq.b #4,$24(a0)<br />
</asm><br />
<br />
then find:<br />
<asm><br />
loc_C8C4: ; XREF: Obj7E_RingBonus<br />
move.w #$C5,d0<br />
jsr (PlaySound_Special).l ; play "ker-ching" sound<br />
addq.b #2,$24(a0)<br />
move.w #180,$1E(a0) ; set time delay to 3 seconds<br />
cmpi.w #50,($FFFFFE20).w ; do you have at least 50 rings?<br />
bcs.s locret_C8EA ; if not, branch<br />
move.w #60,$1E(a0) ; set time delay to 1 second<br />
addq.b #4,$24(a0) ; goto "Obj7E_Continue" routine<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_C8C4: ; XREF: Obj7E_RingBonus<br />
move.w #$B0,d0<br />
jsr (PlaySound_Special).l ; play "ker-ching" sound<br />
addq.b #2,$24(a0)<br />
move.w #180,$1E(a0) ; set time delay to 3 seconds<br />
cmpi.w #50,($FFFFFE20).w ; do you have at least 50 rings?<br />
bcs.s locret_C8EA ; if not, branch<br />
move.w #60,$1E(a0) ; set time delay to 1 second<br />
addq.b #4,$24(a0) ; goto "Obj7E_Continue" routine<br />
</asm><br />
===Sound $C6===<br />
fixing this sound will make sonic's ring loss sound right, so locate:<br />
<asm><br />
Obj37_ResetCounter: ; XREF: Obj37_Loop<br />
move.w #0,($FFFFFE20).w ; reset number of rings to zero<br />
move.b #$80,($FFFFFE1D).w ; update ring counter<br />
move.b #0,($FFFFFE1B).w<br />
move.w #$C6,d0<br />
jsr (PlaySound_Special).l ; play ring loss sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj37_ResetCounter: ; XREF: Obj37_Loop<br />
move.w #0,($FFFFFE20).w ; reset number of rings to zero<br />
move.b #$80,($FFFFFE1D).w ; update ring counter<br />
move.b #0,($FFFFFE1B).w<br />
move.w #$B9,d0<br />
jsr (PlaySound_Special).l ; play ring loss sound<br />
</asm><br />
<br />
===Sound $C7===<br />
remember the giant weight with spikes under it that goes up and crashes down in MZ? we are going to fix the sound now.<br><br />
find:<br />
<asm><br />
loc_B872:<br />
tst.w $32(a0)<br />
beq.s loc_B8A0<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$F,d0<br />
bne.s loc_B892<br />
tst.b 1(a0)<br />
bpl.s loc_B892<br />
move.w #$C7,d0<br />
jsr (PlaySound_Special).l ; play rising chain sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_B872:<br />
tst.w $32(a0)<br />
beq.s loc_B8A0<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$F,d0<br />
bne.s loc_B892<br />
tst.b 1(a0)<br />
bpl.s loc_B892<br />
move.w #$D2,d0<br />
jsr (PlaySound_Special).l ; play rising chain sound<br />
</asm><br />
and then find:<br />
<asm><br />
loc_B902:<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$F,d0<br />
bne.s loc_B91C<br />
tst.b 1(a0)<br />
bpl.s loc_B91C<br />
move.w #$C7,d0<br />
jsr (PlaySound_Special).l ; play rising chain sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_B902:<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$F,d0<br />
bne.s loc_B91C<br />
tst.b 1(a0)<br />
bpl.s loc_B91C<br />
move.w #$D2,d0<br />
jsr (PlaySound_Special).l ; play rising chain sound<br />
</asm><br />
<br />
===Sound $C8===<br />
Once again sonic3 has 2 sounds for this one (one used in the spiked weight in LRZ, the other from the lava waterfalls also in LRZ) we will put them both where they belong)<br><br />
first we will make the MZ lava spouts use the lava waterfall sound (yes, that one):<br />
<asm><br />
Obj4D_PlaySnd:<br />
move.w #$C8,d0<br />
jsr (PlaySound_Special).l ; play flame sound<br />
</asm><br />
and yes change the code to:<br />
<asm><br />
Obj4D_PlaySnd:<br />
move.w #$D5,d0<br />
jsr (PlaySound_Special).l ; play flame sound<br />
</asm><br />
now for the other sound:<br />
<asm><br />
Obj35_Main: ; XREF: Obj35_Index<br />
addq.b #2,$24(a0)<br />
move.l #Map_obj14,4(a0)<br />
move.w #$345,2(a0)<br />
move.w 8(a0),$2A(a0)<br />
move.b #4,1(a0)<br />
move.b #1,$18(a0)<br />
move.b #$8B,$20(a0)<br />
move.b #8,$19(a0)<br />
move.w #$C8,d0<br />
jsr (PlaySound_Special).l ; play flame sound<br />
tst.b $28(a0)<br />
beq.s loc_B238<br />
addq.b #2,$24(a0)<br />
bra.w Obj35_Move<br />
</asm><br />
and it should be changed to:<br />
<asm><br />
Obj35_Main: ; XREF: Obj35_Index<br />
addq.b #2,$24(a0)<br />
move.l #Map_obj14,4(a0)<br />
move.w #$345,2(a0)<br />
move.w 8(a0),$2A(a0)<br />
move.b #4,1(a0)<br />
move.b #1,$18(a0)<br />
move.b #$8B,$20(a0)<br />
move.b #8,$19(a0)<br />
move.w #$7F,d0<br />
jsr (PlaySound_Special).l ; play flame sound<br />
tst.b $28(a0)<br />
beq.s loc_B238<br />
addq.b #2,$24(a0)<br />
bra.w Obj35_Move<br />
</asm><br />
<br />
===Sound $C9===<br />
the hidden points sound is no longer in sonic 3, but the egg logger mini boss from MHZ has a similar sound that is used, so it probably will have to work until you replace a sound effect.<br><br />
find:<br />
<asm><br />
move.w #$C9,d0<br />
jsr (PlaySound_Special).l ; play bonus sound<br />
moveq #0,d0<br />
move.b $28(a0),d0<br />
add.w d0,d0<br />
move.w Obj7D_Points(pc,d0.w),d0 ; load bonus points array<br />
jsr (AddPoints).l<br />
<br />
Obj7D_ChkDel:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$8C,d0<br />
jsr (PlaySound_Special).l ; play bonus sound<br />
moveq #0,d0<br />
move.b $28(a0),d0<br />
add.w d0,d0<br />
move.w Obj7D_Points(pc,d0.w),d0 ; load bonus points array<br />
jsr (AddPoints).l<br />
<br />
Obj7D_ChkDel:<br />
</asm><br />
<br />
===Sound $CA===<br />
This Sound should already be fixed by now (it was fixed with special event sounds)<br />
<br />
===Sound $CB===<br />
remember that I said sonic3 has only 1 version of this sound above?<br><br />
the crumbling sound from above and smashing sound in sonic3 are identical, so find:<br />
<asm><br />
loc_197D4:<br />
move.w #$CB,d0<br />
jmp (PlaySound_Special).l ; play smashing sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_197D4:<br />
move.w #$59,d0<br />
jmp (PlaySound_Special).l ; play smashing sound<br />
</asm><br />
then find:<br />
<asm><br />
Obj83_BreakSnd:<br />
move.w #$CB,d0<br />
jsr (PlaySound_Special).l ; play smashing sound<br />
jmp (DisplaySprite).l<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj83_BreakSnd:<br />
move.w #$59,d0<br />
jsr (PlaySound_Special).l ; play smashing sound<br />
jmp (DisplaySprite).l<br />
</asm><br />
now find:<br />
<asm><br />
Smash_PlaySnd:<br />
move.w #$CB,d0<br />
jmp (PlaySound_Special).l ; play smashing sound<br />
; End of function SmashObject<br />
</asm><br />
and change it to:<br />
<asm><br />
Smash_PlaySnd:<br />
move.w #$59,d0<br />
jmp (PlaySound_Special).l ; play smashing sound<br />
; End of function SmashObject<br />
</asm><br />
<br />
===Sound $CC===<br />
the spring sound now, find:<br />
<asm><br />
Obj41_BounceUp: ; XREF: Obj41_Up<br />
addq.b #2,$24(a0)<br />
addq.w #8,$C(a1)<br />
move.w $30(a0),$12(a1) ; move Sonic upwards<br />
bset #1,$22(a1)<br />
bclr #3,$22(a1)<br />
move.b #$10,$1C(a1) ; use "bouncing" animation<br />
move.b #2,$24(a1)<br />
bclr #3,$22(a0)<br />
clr.b $25(a0)<br />
move.w #$CC,d0<br />
jsr (PlaySound_Special).l ; play spring sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj41_BounceUp: ; XREF: Obj41_Up<br />
addq.b #2,$24(a0)<br />
addq.w #8,$C(a1)<br />
move.w $30(a0),$12(a1) ; move Sonic upwards<br />
bset #1,$22(a1)<br />
bclr #3,$22(a1)<br />
move.b #$10,$1C(a1) ; use "bouncing" animation<br />
move.b #2,$24(a1)<br />
bclr #3,$22(a0)<br />
clr.b $25(a0)<br />
move.w #$B1,d0<br />
jsr (PlaySound_Special).l ; play spring sound<br />
</asm><br />
then find:<br />
<asm><br />
loc_DC56:<br />
bclr #5,$22(a0)<br />
bclr #5,$22(a1)<br />
move.w #$CC,d0<br />
jsr (PlaySound_Special).l ; play spring sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_DC56:<br />
bclr #5,$22(a0)<br />
bclr #5,$22(a1)<br />
move.w #$B1,d0<br />
jsr (PlaySound_Special).l ; play spring sound<br />
</asm><br />
then find:<br />
<asm><br />
Obj41_BounceDwn: ; XREF: Obj41_Dwn<br />
addq.b #2,$24(a0)<br />
subq.w #8,$C(a1)<br />
move.w $30(a0),$12(a1)<br />
neg.w $12(a1) ; move Sonic downwards<br />
bset #1,$22(a1)<br />
bclr #3,$22(a1)<br />
move.b #2,$24(a1)<br />
bclr #3,$22(a0)<br />
clr.b $25(a0)<br />
move.w #$CC,d0<br />
jsr (PlaySound_Special).l ; play spring sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj41_BounceDwn: ; XREF: Obj41_Dwn<br />
addq.b #2,$24(a0)<br />
subq.w #8,$C(a1)<br />
move.w $30(a0),$12(a1)<br />
neg.w $12(a1) ; move Sonic downwards<br />
bset #1,$22(a1)<br />
bclr #3,$22(a1)<br />
move.b #2,$24(a1)<br />
bclr #3,$22(a0)<br />
clr.b $25(a0)<br />
move.w #$B1,d0<br />
jsr (PlaySound_Special).l ; play spring sound<br />
</asm><br />
then we will use the MHZ version of this one because it makes sense:<br />
<asm><br />
Obj5E_Spring:<br />
move.b d1,$3A(a1)<br />
move.b d1,$3A(a0)<br />
cmp.b $1A(a1),d1<br />
beq.s loc_1192C<br />
bclr #3,$22(a1)<br />
beq.s loc_1192C<br />
clr.b $25(a1)<br />
move.b #2,$24(a1)<br />
lea ($FFFFD000).w,a2<br />
move.w $12(a0),$12(a2)<br />
neg.w $12(a2)<br />
bset #1,$22(a2)<br />
bclr #3,$22(a2)<br />
clr.b $3C(a2)<br />
move.b #$10,$1C(a2) ; change Sonic"s animation to "spring" ($10)<br />
move.b #2,$24(a2)<br />
move.w #$CC,d0<br />
jsr (PlaySound_Special).l ; play spring sound<br />
</asm><br />
which gets changed to:<br />
<asm><br />
Obj5E_Spring:<br />
move.b d1,$3A(a1)<br />
move.b d1,$3A(a0)<br />
cmp.b $1A(a1),d1<br />
beq.s loc_1192C<br />
bclr #3,$22(a1)<br />
beq.s loc_1192C<br />
clr.b $25(a1)<br />
move.b #2,$24(a1)<br />
lea ($FFFFD000).w,a2<br />
move.w $12(a0),$12(a2)<br />
neg.w $12(a2)<br />
bset #1,$22(a2)<br />
bclr #3,$22(a2)<br />
clr.b $3C(a2)<br />
move.b #$10,$1C(a2) ; change Sonic"s animation to "spring" ($10)<br />
move.b #2,$24(a2)<br />
move.w #$AE,d0<br />
jsr (PlaySound_Special).l ; play spring sound<br />
</asm><br />
<br />
===Sound $CD===<br />
find:<br />
<asm><br />
loc_BDC8:<br />
tst.b (a3)<br />
bne.s loc_BDD6<br />
move.w #$CD,d0<br />
jsr (PlaySound_Special).l ; play switch sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_BDC8:<br />
tst.b (a3)<br />
bne.s loc_BDD6<br />
move.w #$5B,d0<br />
jsr (PlaySound_Special).l ; play switch sound<br />
</asm><br />
then find:<br />
<asm><br />
Obj3A_AddBonus: ; XREF: Obj3A_ChkBonus<br />
jsr (AddPoints).l<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #3,d0<br />
bne.s locret_C692<br />
move.w #$CD,d0<br />
jmp (PlaySound_Special).l ; play "blip" sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj3A_AddBonus: ; XREF: Obj3A_ChkBonus<br />
jsr (AddPoints).l<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #3,d0<br />
bne.s locret_C692<br />
move.w #$5B,d0<br />
jmp (PlaySound_Special).l ; play "blip" sound<br />
</asm><br />
then find:<br />
<asm><br />
Obj7E_RingBonus: ; XREF: Obj7E_Index<br />
bsr.w DisplaySprite<br />
move.b #1,($FFFFF7D6).w ; set ring bonus update flag<br />
tst.w ($FFFFF7D4).w ; is ring bonus = zero?<br />
beq.s loc_C8C4 ; if yes, branch<br />
subi.w #10,($FFFFF7D4).w ; subtract 10 from ring bonus<br />
moveq #10,d0 ; add 10 to score<br />
jsr (AddPoints).l<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #3,d0<br />
bne.s locret_C8EA<br />
move.w #$CD,d0<br />
jmp (PlaySound_Special).l ; play "blip" sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj7E_RingBonus: ; XREF: Obj7E_Index<br />
bsr.w DisplaySprite<br />
move.b #1,($FFFFF7D6).w ; set ring bonus update flag<br />
tst.w ($FFFFF7D4).w ; is ring bonus = zero?<br />
beq.s loc_C8C4 ; if yes, branch<br />
subi.w #10,($FFFFF7D4).w ; subtract 10 from ring bonus<br />
moveq #10,d0 ; add 10 to score<br />
jsr (AddPoints).l<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #3,d0<br />
bne.s locret_C8EA<br />
move.w #$5B,d0<br />
jmp (PlaySound_Special).l ; play "blip" sound<br />
</asm><br />
<br />
===Sound $CE===<br />
this sound's usage was defined in the old 68k driver and fixes itself.<br />
<br />
===Sound $CF===<br />
the old sound for the end sign is no longer in sonic 3, but a similar (unused) sound does exist, so find:<br />
<asm><br />
Obj0D_Touch: ; XREF: Obj0D_Index<br />
move.w ($FFFFD008).w,d0<br />
sub.w 8(a0),d0<br />
bcs.s locret_EBBA<br />
cmpi.w #$20,d0 ; is Sonic within $20 pixels of the signpost?<br />
bcc.s locret_EBBA ; if not, branch<br />
move.w #$CF,d0<br />
jsr (PlaySound).l ; play signpost sound<br />
clr.b ($FFFFFE1E).w ; stop time counter<br />
move.w ($FFFFF72A).w,($FFFFF728).w ; lock screen position<br />
addq.b #2,$24(a0)<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj0D_Touch: ; XREF: Obj0D_Index<br />
move.w ($FFFFD008).w,d0<br />
sub.w 8(a0),d0<br />
bcs.s locret_EBBA<br />
cmpi.w #$20,d0 ; is Sonic within $20 pixels of the signpost?<br />
bcc.s locret_EBBA ; if not, branch<br />
move.w #$5E,d0<br />
jsr (PlaySound).l ; play signpost sound<br />
clr.b ($FFFFFE1E).w ; stop time counter<br />
move.w ($FFFFF72A).w,($FFFFF728).w ; lock screen position<br />
addq.b #2,$24(a0)<br />
</asm><br />
<br />
===Sound $D0===<br />
this one is the hard one, sonic1's timing of the waterfalls is not right, so the water sound will have pauses in it. I will look into it and update the code when I get it working right.<br><br />
for now find:<br />
<asm><br />
loc_3F9A:<br />
clr.b $15(a1)<br />
move.b #$1B,$1C(a1) ; use Sonic"s "sliding" animation<br />
move.b #1,($FFFFF7CA).w ; lock controls (except jumping)<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$1F,d0<br />
bne.s locret_3FBE<br />
move.w #$D0,d0<br />
jsr (PlaySound_Special).l ; play water sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_3F9A:<br />
clr.b $15(a1)<br />
move.b #$1B,$1C(a1) ; use Sonic"s "sliding" animation<br />
move.b #1,($FFFFF7CA).w ; lock controls (except jumping)<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$1F,d0<br />
bne.s locret_3FBE<br />
move.w #$DB,d0<br />
jsr (PlaySound_Special).l ; play water sound<br />
</asm><br />
then find:<br />
<asm><br />
Obj49_PlaySnd: ; XREF: Obj49_Index<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$3F,d0<br />
bne.s Obj49_ChkDel<br />
move.w #$D0,d0<br />
jsr (PlaySound_Special).l ; play waterfall sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj49_PlaySnd: ; XREF: Obj49_Index<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$3F,d0<br />
bne.s Obj49_ChkDel<br />
move.w #$DB,d0<br />
jsr (PlaySound_Special).l ; play waterfall sound<br />
</asm><br />
then find:<br />
<asm><br />
LZWind_Loop:<br />
move.w 8(a1),d0<br />
cmp.w (a2),d0<br />
bcs.w loc_3EF4<br />
cmp.w 4(a2),d0<br />
bcc.w loc_3EF4<br />
move.w $C(a1),d2<br />
cmp.w 2(a2),d2<br />
bcs.s loc_3EF4<br />
cmp.w 6(a2),d2<br />
bcc.s loc_3EF4<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$3F,d0<br />
bne.s loc_3E90<br />
move.w #$D0,d0<br />
jsr (PlaySound_Special).l ; play rushing water sound<br />
</asm><br />
and change it to:<br />
<asm><br />
LZWind_Loop:<br />
move.w 8(a1),d0<br />
cmp.w (a2),d0<br />
bcs.w loc_3EF4<br />
cmp.w 4(a2),d0<br />
bcc.w loc_3EF4<br />
move.w $C(a1),d2<br />
cmp.w 2(a2),d2<br />
bcs.s loc_3EF4<br />
cmp.w 6(a2),d2<br />
bcc.s loc_3EF4<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$3F,d0<br />
bne.s loc_3E90<br />
move.w #$DB,d0<br />
jsr (PlaySound_Special).l ; play rushing water sound<br />
</asm><br />
<br />
Now all that is left, is fixing the level select so that it plays the data select music upon entry and allows selection of sounds $00 - $FF.<br />
<br />
==Utilizing new sounds in existing badniks==<br />
here, we delve a little into object editing and how to effectively use the sonic 3 sound system, because you have already decided to use it, right? Well, if you hadn't, then why are you here?<br><br />
Using sounds in sonic 3 is very similar to older games, just the sound numbers are changed thus why the strange stuff you may have encountered earlier and why you will have to fix the level select later. here is how the sounds line up:<br />
{|class="prettytable"<br />
!Type||Numbers in Sonic 1/Sonic 2||Numbers in Sonic 3+<br />
|-<br />
|Broken/Error<br />
|$00 - $7F<br />
|N/A<br />
|-<br />
|Emty/Null<br />
|$80<br />
|$00<br />
|-<br />
|Music<br />
|$81 - $9F<br />
|$01 - $32<br />
|-<br />
|Sound Effects/Control<br />
|$A0 - $FF<br />
|$33 - $FF<br />
|}<br />
As you probably had noticed if you actually had a brain, the sound effects are in a larger range that encompassed the entire old range of sounds, music included, which would explain why the game would have sounded drunk when you first got the driver working and chose to test it before continuing this tutorial.<br />
<br />
===Buzz Bomber===<br />
The buzz bomber fires at sonic, and most enemies in sonic 3 tend to make a certain sound when they fire at sonic, so lets add that one to the buzz bomber, so why don't we locate the firing routine:<br />
<asm><br />
loc_98AA:<br />
add.w d0,8(a1)<br />
move.b $22(a0),$22(a1)<br />
move.w #$E,$32(a1)<br />
move.l a0,$3C(a1)<br />
move.b #1,$34(a0) ; set to "already fired" to pralign 2t refiring<br />
move.w #$3B,$32(a0)<br />
move.b #2,$1C(a0) ; use "firing" animation<br />
</asm><br />
and add these lines right under it:<br />
<asm><br />
move.w #$4D,d0<br />
jmp PlaySound ; play firing sound<br />
</asm><br />
<br />
now our buzz bomber has sound!<br />
===Crabmeat===<br />
the Crabmeat badnik can have a sound too, if we add it in a similar manner, so lets do it! Crabmeat throws something with both claws, but so does that monkey in AIZ throw something, so lets use that sound. lets find the Crabmeat throwing routine:<br />
<asm><br />
Obj1F_MakeFire: ; XREF: Obj1F_WaitFire<br />
move.w #$3B,$30(a0)<br />
move.b #6,$1C(a0) ; use firing animation<br />
bsr.w SingleObjLoad<br />
bne.s Obj1F_MakeFire2<br />
_move.b #$1F,0(a1) ; load left fireball<br />
move.b #6,$24(a1)<br />
move.w 8(a0),8(a1)<br />
subi.w #$10,8(a1)<br />
move.w $C(a0),$C(a1)<br />
move.w #-$100,$10(a1)<br />
<br />
Obj1F_MakeFire2:<br />
bsr.w SingleObjLoad<br />
bne.s locret_9618<br />
_move.b #$1F,0(a1) ; load right fireball<br />
move.b #6,$24(a1)<br />
move.w 8(a0),8(a1)<br />
addi.w #$10,8(a1)<br />
move.w $C(a0),$C(a1)<br />
move.w #$100,$10(a1)<br />
</asm><br />
Two throwing routines? Of course, one for each claw, so we will have to update them both:<br />
<asm><br />
Obj1F_MakeFire: ; XREF: Obj1F_WaitFire<br />
move.w #$3B,$30(a0)<br />
move.b #6,$1C(a0) ; use firing animation<br />
bsr.w SingleObjLoad<br />
bne.s Obj1F_MakeFire2<br />
_move.b #$1F,0(a1) ; load left fireball<br />
move.b #6,$24(a1)<br />
move.w 8(a0),8(a1)<br />
subi.w #$10,8(a1)<br />
move.w $C(a0),$C(a1)<br />
move.w #-$100,$10(a1)<br />
move.b #$51,d0<br />
jsr PlaySound ;play throwing sound<br />
<br />
Obj1F_MakeFire2:<br />
bsr.w SingleObjLoad<br />
bne.s locret_9618<br />
_move.b #$1F,0(a1) ; load right fireball<br />
move.b #6,$24(a1)<br />
move.w 8(a0),8(a1)<br />
addi.w #$10,8(a1)<br />
move.w $C(a0),$C(a1)<br />
move.w #$100,$10(a1)<br />
move.b #$51,d0<br />
jsr PlaySound ;play throwing sound<br />
</asm><br />
finally an audiable Crabmeat.<br />
<br />
===Orbinaught===<br />
Looks like this one can have sound too, it also throws something at sonic, so lets locate the firing/throwing routine:<br />
<asm><br />
Obj60_FireOrb:<br />
move.w #-$200,$10(a0) ; move orb to the left (quickly)<br />
btst #0,$22(a1)<br />
beq.s Obj60_Display2<br />
neg.w $10(a0)<br />
</asm><br />
What? There is only one, when the last had two? Yes, that is right, the same routine is used four times, so just simply add these lines after what is above:<br />
<asm><br />
move.b #$51,d0<br />
jsr PlaySound ;play throwing sound<br />
</asm><br />
<br />
===Ball Hog===<br />
Ball Hog also can have sound added, so lets find the throwing routine:<br />
<asm><br />
loc_8C0A:<br />
add.w d0,8(a1)<br />
addi.w #$C,$C(a1)<br />
move.b $28(a0),$28(a1) ; copy object type from Ball Hog<br />
</asm><br />
and add after it:<br />
<asm><br />
move.b #$51,d0<br />
jsr PlaySound ;play throwing sound<br />
</asm><br />
<br />
==Fixing the sound test on the level select==<br />
Now we finally get to correcting the level select. First off, we do a sort of addition to the sonic 1 level select that has been added to the simon wai prototype, but not yet to the sonic 1 level select, music.<br />
===music upon entry of level select===<br />
locate:<br />
<asm><br />
LevelSelect:<br />
move.b #4,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
bsr.w LevSelControls<br />
bsr.w RunPLC_RAM<br />
tst.l ($FFFFF680).w<br />
bne.s LevelSelect<br />
andi.b #$F0,($FFFFF605).w ; is A, B, C, or Start pressed?<br />
beq.s LevelSelect ; if not, branch<br />
move.w ($FFFFFF82).w,d0<br />
cmpi.w #$14,d0 ; have you selected item $14 (sound test)?<br />
bne.s LevSel_Level_SS ; if not, go to Level/SS subroutine<br />
move.w ($FFFFFF84).w,d0<br />
addi.w #$80,d0<br />
tst.b ($FFFFFFE3).w ; is Japanese Credits cheat on?<br />
beq.s LevSel_NoCheat ; if not, branch<br />
cmpi.w #$9F,d0 ; is sound $9F being played?<br />
beq.s LevSel_Ending ; if yes, branch<br />
cmpi.w #$9E,d0 ; is sound $9E being played?<br />
beq.s LevSel_Credits ; if yes, branch<br />
</asm><br />
and add before the label:<br />
<asm><br />
move.w #$2F,d0<br />
jsr PlaySound<br />
</asm><br />
<br />
the result should look like this:<br />
<asm><br />
bsr.w LevSelTextLoad<br />
move.w #$2F,d0<br />
jsr PlaySound<br />
; ---------------------------------------------------------------------------<br />
; Level Select<br />
; ---------------------------------------------------------------------------<br />
<br />
LevelSelect:<br />
move.b #4,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
bsr.w LevSelControls<br />
bsr.w RunPLC_RAM<br />
tst.l ($FFFFF680).w<br />
bne.s LevelSelect<br />
andi.b #$F0,($FFFFF605).w ; is A, B, C, or Start pressed?<br />
beq.s LevelSelect ; if not, branch<br />
move.w ($FFFFFF82).w,d0<br />
cmpi.w #$14,d0 ; have you selected item $14 (sound test)?<br />
bne.s LevSel_Level_SS ; if not, go to Level/SS subroutine<br />
move.w ($FFFFFF84).w,d0<br />
addi.w #$80,d0<br />
tst.b ($FFFFFFE3).w ; is Japanese Credits cheat on?<br />
beq.s LevSel_NoCheat ; if not, branch<br />
cmpi.w #$9F,d0 ; is sound $9F being played?<br />
beq.s LevSel_Ending ; if yes, branch<br />
cmpi.w #$9E,d0 ; is sound $9E being played?<br />
beq.s LevSel_Credits ; if yes, branch<br />
</asm><br />
<br />
===fixing the sound test===<br />
Okay, there is a lot that needs fixing here, the sonic 1 sound test seems to be set up for the old driver not the new one, first off lets look at part 1 of the level select code:<br />
<asm><br />
LevelSelect:<br />
move.b #4,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
bsr.w LevSelControls<br />
bsr.w RunPLC_RAM<br />
tst.l ($FFFFF680).w<br />
bne.s LevelSelect<br />
andi.b #$F0,($FFFFF605).w ; is A, B, C, or Start pressed?<br />
beq.s LevelSelect ; if not, branch<br />
move.w ($FFFFFF82).w,d0<br />
cmpi.w #$14,d0 ; have you selected item $14 (sound test)?<br />
bne.s LevSel_Level_SS ; if not, go to Level/SS subroutine<br />
move.w ($FFFFFF84).w,d0<br />
addi.w #$80,d0<br />
tst.b ($FFFFFFE3).w ; is Japanese Credits cheat on?<br />
beq.s LevSel_NoCheat ; if not, branch<br />
cmpi.w #$9F,d0 ; is sound $9F being played?<br />
beq.s LevSel_Ending ; if yes, branch<br />
cmpi.w #$9E,d0 ; is sound $9E being played?<br />
beq.s LevSel_Credits ; if yes, branch<br />
<br />
LevSel_NoCheat:<br />
cmpi.w #$94,d0 ; is sound $80-$94 being played?<br />
bcs.s LevSel_PlaySnd ; if yes, branch<br />
cmpi.w #$A0,d0 ; is sound $95-$A0 being played?<br />
bcs.s LevelSelect ; if yes, branch<br />
<br />
LevSel_PlaySnd:<br />
bsr.w PlaySound_Special<br />
bra.s LevelSelect<br />
; ===========================================================================<br />
<br />
LevSel_Ending: ; XREF: LevelSelect<br />
move.b #$18,($FFFFF600).w ; set screen mode to $18 (Ending)<br />
move.w #$600,($FFFFFE10).w ; set level to 0600 (Ending)<br />
rts <br />
; ===========================================================================<br />
<br />
LevSel_Credits: ; XREF: LevelSelect<br />
move.b #$1C,($FFFFF600).w ; set screen mode to $1C (Credits)<br />
move.b #$26,d0<br />
bsr.w PlaySound_Special ; play credits music<br />
move.w #0,($FFFFFFF4).w<br />
rts <br />
; ===========================================================================<br />
<br />
LevSel_Level_SS: ; XREF: LevelSelect<br />
add.w d0,d0<br />
move.w LSelectPointers(pc,d0.w),d0 ; load level number<br />
bmi.w LevelSelect<br />
cmpi.w #$700,d0 ; check if level is 0700 (Special Stage)<br />
bne.s LevSel_Level ; if not, branch<br />
move.b #$10,($FFFFF600).w ; set screen mode to $10 (Special Stage)<br />
clr.w ($FFFFFE10).w ; clear level<br />
move.b #3,($FFFFFE12).w ; set lives to 3<br />
moveq #0,d0<br />
move.w d0,($FFFFFE20).w ; clear rings<br />
move.l d0,($FFFFFE22).w ; clear time<br />
move.l d0,($FFFFFE26).w ; clear score<br />
rts <br />
; ===========================================================================<br />
<br />
LevSel_Level: ; XREF: LevSel_Level_SS<br />
andi.w #$3FFF,d0<br />
move.w d0,($FFFFFE10).w ; set level number<br />
<br />
PlayLevel: ; XREF: ROM:00003246�j ...<br />
move.b #$C,($FFFFF600).w ; set screen mode to $0C (level)<br />
move.b #3,($FFFFFE12).w ; set lives to 3<br />
moveq #0,d0<br />
move.w d0,($FFFFFE20).w ; clear rings<br />
move.l d0,($FFFFFE22).w ; clear time<br />
move.l d0,($FFFFFE26).w ; clear score<br />
move.b d0,($FFFFFE16).w ; clear special stage number<br />
move.b d0,($FFFFFE57).w ; clear emeralds<br />
move.l d0,($FFFFFE58).w ; clear emeralds<br />
move.l d0,($FFFFFE5C).w ; clear emeralds<br />
move.b d0,($FFFFFE18).w ; clear continues<br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
rts <br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Level select - level pointers<br />
; ---------------------------------------------------------------------------<br />
LSelectPointers:<br />
binclude misc/ls_point.bin<br />
align 2<br />
</asm><br />
my, oh my... first off we do not need all that japanese cheat junk, and second we do not need any gaps in the sound test, so lets remove that junk:<br />
<asm><br />
LevelSelect:<br />
move.b #4,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
bsr.w LevSelControls<br />
bsr.w RunPLC_RAM<br />
tst.l ($FFFFF680).w<br />
bne.s LevelSelect<br />
andi.b #$F0,($FFFFF605).w ; is A, B, C, or Start pressed?<br />
beq.s LevelSelect ; if not, branch<br />
move.w ($FFFFFF82).w,d0<br />
cmpi.w #$14,d0 ; have you selected item $14 (sound test)?<br />
bne.s LevSel_Level_SS ; if not, go to Level/SS subroutine<br />
move.w ($FFFFFF84).w,d0<br />
bsr.w PlaySound_Special<br />
bra.s LevelSelect<br />
; ===========================================================================<br />
<br />
LevSel_Level_SS: ; XREF: LevelSelect<br />
add.w d0,d0<br />
move.w LSelectPointers(pc,d0.w),d0 ; load level number<br />
bmi.w LevelSelect<br />
cmpi.w #$700,d0 ; check if level is 0700 (Special Stage)<br />
bne.s LevSel_Level ; if not, branch<br />
move.b #$10,($FFFFF600).w ; set screen mode to $10 (Special Stage)<br />
clr.w ($FFFFFE10).w ; clear level<br />
move.b #3,($FFFFFE12).w ; set lives to 3<br />
moveq #0,d0<br />
move.w d0,($FFFFFE20).w ; clear rings<br />
move.l d0,($FFFFFE22).w ; clear time<br />
move.l d0,($FFFFFE26).w ; clear score<br />
rts <br />
; ===========================================================================<br />
<br />
LevSel_Level: ; XREF: LevSel_Level_SS<br />
andi.w #$3FFF,d0<br />
move.w d0,($FFFFFE10).w ; set level number<br />
<br />
PlayLevel: ; XREF: ROM:00003246�j ...<br />
move.b #$C,($FFFFF600).w ; set screen mode to $0C (level)<br />
move.b #3,($FFFFFE12).w ; set lives to 3<br />
moveq #0,d0<br />
move.w d0,($FFFFFE20).w ; clear rings<br />
move.l d0,($FFFFFE22).w ; clear time<br />
move.l d0,($FFFFFE26).w ; clear score<br />
move.b d0,($FFFFFE16).w ; clear special stage number<br />
move.b d0,($FFFFFE57).w ; clear emeralds<br />
move.l d0,($FFFFFE58).w ; clear emeralds<br />
move.l d0,($FFFFFE5C).w ; clear emeralds<br />
move.b d0,($FFFFFE18).w ; clear continues<br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
rts <br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Level select - level pointers<br />
; ---------------------------------------------------------------------------<br />
LSelectPointers:<br />
binclude misc/ls_point.bin<br />
align 2<br />
</asm><br />
now lets look at the next part of the level select:<br />
<asm><br />
LevSelControls: ; XREF: LevelSelect<br />
move.b ($FFFFF605).w,d1<br />
andi.b #3,d1 ; is up/down pressed and held?<br />
bne.s LevSel_UpDown ; if yes, branch<br />
subq.w #1,($FFFFFF80).w ; subtract 1 from time to next move<br />
bpl.s LevSel_SndTest ; if time remains, branch<br />
<br />
LevSel_UpDown:<br />
move.w #$B,($FFFFFF80).w ; reset time delay<br />
move.b ($FFFFF604).w,d1<br />
andi.b #3,d1 ; is up/down pressed?<br />
beq.s LevSel_SndTest ; if not, branch<br />
move.w ($FFFFFF82).w,d0<br />
btst #0,d1 ; is up pressed?<br />
beq.s LevSel_Down ; if not, branch<br />
subq.w #1,d0 ; move up 1 selection<br />
bcc.s LevSel_Down<br />
moveq #$14,d0 ; if selection moves below 0, jump to selection $14<br />
<br />
LevSel_Down:<br />
btst #1,d1 ; is down pressed?<br />
beq.s LevSel_Refresh ; if not, branch<br />
addq.w #1,d0 ; move down 1 selection<br />
cmpi.w #$15,d0<br />
bcs.s LevSel_Refresh<br />
moveq #0,d0 ; if selection moves above $14, jump to selection 0<br />
<br />
LevSel_Refresh:<br />
move.w d0,($FFFFFF82).w ; set new selection<br />
bsr.w LevSelTextLoad ; refresh text<br />
rts <br />
; ===========================================================================<br />
<br />
LevSel_SndTest: ; XREF: LevSelControls<br />
cmpi.w #$14,($FFFFFF82).w ; is item $14 selected?<br />
bne.s LevSel_NoMove ; if not, branch<br />
move.b ($FFFFF605).w,d1<br />
andi.b #$C,d1 ; is left/right pressed?<br />
beq.s LevSel_NoMove ; if not, branch<br />
move.w ($FFFFFF84).w,d0<br />
btst #2,d1 ; is left pressed?<br />
beq.s LevSel_Right ; if not, branch<br />
subq.w #1,d0 ; subtract 1 from sound test<br />
bcc.s LevSel_Right<br />
moveq #$4F,d0 ; if sound test moves below 0, set to $4F<br />
<br />
LevSel_Right:<br />
btst #3,d1 ; is right pressed?<br />
beq.s LevSel_Refresh2 ; if not, branch<br />
addq.w #1,d0 ; add 1 to sound test<br />
cmpi.w #$50,d0<br />
bcs.s LevSel_Refresh2<br />
moveq #0,d0 ; if sound test moves above $4F, set to 0<br />
<br />
LevSel_Refresh2:<br />
move.w d0,($FFFFFF84).w ; set sound test number<br />
bsr.w LevSelTextLoad ; refresh text<br />
<br />
LevSel_NoMove:<br />
rts <br />
</asm><br />
seems that we have now located the code that limits the level select to $80 - $CF, so we fix it:<br />
<asm><br />
LevSelControls: ; XREF: LevelSelect<br />
move.b ($FFFFF605).w,d1<br />
andi.b #3,d1 ; is up/down pressed and held?<br />
bne.s LevSel_UpDown ; if yes, branch<br />
subq.w #1,($FFFFFF80).w ; subtract 1 from time to next move<br />
bpl.s LevSel_SndTest ; if time remains, branch<br />
<br />
LevSel_UpDown:<br />
move.w #$B,($FFFFFF80).w ; reset time delay<br />
move.b ($FFFFF604).w,d1<br />
andi.b #3,d1 ; is up/down pressed?<br />
beq.s LevSel_SndTest ; if not, branch<br />
move.w ($FFFFFF82).w,d0<br />
btst #0,d1 ; is up pressed?<br />
beq.s LevSel_Down ; if not, branch<br />
subq.w #1,d0 ; move up 1 selection<br />
bcc.s LevSel_Down<br />
moveq #$14,d0 ; if selection moves below 0, jump to selection $14<br />
<br />
LevSel_Down:<br />
btst #1,d1 ; is down pressed?<br />
beq.s LevSel_Refresh ; if not, branch<br />
addq.w #1,d0 ; move down 1 selection<br />
cmpi.w #$15,d0<br />
bcs.s LevSel_Refresh<br />
moveq #0,d0 ; if selection moves above $14, jump to selection 0<br />
<br />
LevSel_Refresh:<br />
move.w d0,($FFFFFF82).w ; set new selection<br />
bsr.w LevSelTextLoad ; refresh text<br />
rts <br />
; ===========================================================================<br />
<br />
LevSel_SndTest: ; XREF: LevSelControls<br />
cmpi.w #$14,($FFFFFF82).w ; is item $14 selected?<br />
bne.s LevSel_NoMove ; if not, branch<br />
move.b ($FFFFF605).w,d1<br />
andi.b #$C,d1 ; is left/right pressed?<br />
beq.s LevSel_NoMove ; if not, branch<br />
move.w ($FFFFFF84).w,d0<br />
btst #2,d1 ; is left pressed?<br />
beq.s LevSel_Right ; if not, branch<br />
subq.w #1,d0 ; subtract 1 from sound test<br />
bcc.s LevSel_Right<br />
moveq #$FF,d0 ; if sound test moves below 0, set to $4F<br />
<br />
LevSel_Right:<br />
btst #3,d1 ; is right pressed?<br />
beq.s LevSel_Refresh2 ; if not, branch<br />
addq.w #1,d0 ; add 1 to sound test<br />
cmpi.w #$100,d0<br />
bcs.s LevSel_Refresh2<br />
moveq #0,d0 ; if sound test moves above $4F, set to 0<br />
<br />
LevSel_Refresh2:<br />
move.w d0,($FFFFFF84).w ; set sound test number<br />
bsr.w LevSelTextLoad ; refresh text<br />
<br />
LevSel_NoMove:<br />
rts <br />
</asm><br />
Thought it was fixed already? well even though it works right, the display is still wrong, so we need to fix it.<br />
so lets go to:<br />
<asm><br />
loc_3550:<br />
move.l #$6C300003,($C00004).l ; screen position (sound test)<br />
move.w ($FFFFFF84).w,d0<br />
addi.w #$80,d0<br />
move.b d0,d2<br />
lsr.b #4,d0<br />
bsr.w LevSel_ChgSnd<br />
move.b d2,d0<br />
bsr.w LevSel_ChgSnd<br />
rts <br />
</asm><br />
and remove this line:<br />
<asm><br />
addi.w #$80,d0<br />
</asm><br />
I hope you make good use of this driver and make many great hacks.<br />
<br />
==Credits==<br />
I give credit where it is due:<br />
* '''Esrael''' for the original port of the Sonic 3 Driver, which I fixed up.<br />
* '''Tornado''' for the original hackish guide on SSRG<br />
* '''Selbi''' for posting info on most of, but not all the sound test values which I had to finish<br />
<br />
{{S1Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_1&diff=208762
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 1
2014-05-25T17:36:08Z
<p>Kram1024: /* Boss music */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
'''Updated by''' [[User:Kram1024]]<br />
<br />
You probably saw a quick and dirty way to do this on SSRG, but lets do it the proper way, the way that sonic team would do it.<br />
<br />
==Overview==<br />
First off, Sonic 3's sound driver has the V_Int reloader built into it so it is not needed, some routines need replacement, sounds need fixing, and we need to replace the sounds and music. We will be using the hivebrain version, if you wish to do it via svn version, I am sure you can come up with a way that works by seeing what changes I made in the hivebrain version.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of master V_Int branch to s1driver point===<br />
first we will fix the vertical interrupt, by changing:<br />
<asm><br />
<br />
loc_B5E: ; XREF: loc_B88<br />
jsr (sub_71B4C).l<br />
</asm><br />
<br />
to:<br />
<br />
<asm><br />
loc_B5E: ; XREF: loc_B88<br />
nop ; The nop was placed here in order to make sure<br />
; that the same number of cycles was used.<br />
; not doing so could put things slightly out of sync.<br />
</asm><br />
<br />
===Removal of H_Int branch point to s1driver===<br />
Now we locate:<br />
<asm><br />
loc_119E: ; XREF: PalToCRAM<br />
clr.b ($FFFFF64F).w<br />
movem.l d0-a6,-(sp)<br />
bsr.w Demo_Time<br />
jsr (sub_71B4C).l<br />
movem.l (sp)+,d0-a6<br />
rte <br />
; End of function PalToCRAM<br />
</asm><br />
See another familiar line? Yes, you've got it, do the same thing to it:<br />
<asm><br />
loc_119E: ; XREF: PalToCRAM<br />
clr.b ($FFFFF64F).w<br />
movem.l d0-a6,-(sp)<br />
bsr.w Demo_Time<br />
nop ; The nop was placed here in order to make sure<br />
; that the same number of cycles was used.<br />
; not doing so could put things slightly out of sync.<br />
movem.l (sp)+,d0-a6<br />
rte <br />
; End of function PalToCRAM<br />
</asm><br />
That effectively disables the sonic1 style v_int and h_int driver reloading that we will not need and prevents a nasty error down the road.<br />
<br />
==Upgrading the Load Driver Routine==<br />
Okay, we disabled the sonic1 driver junk, wouldn't we want now to use the sonic3 driver instead? Here is where we start installing it. Locate:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
SoundDriverLoad: ; XREF: GameClrRAM; TitleScreen<br />
nop <br />
move.w #$100,($A11100).l ; stop the Z80<br />
move.w #$100,($A11200).l ; reset the Z80<br />
lea (Kos_Z80).l,a0 ; load sound driver<br />
lea ($A00000).l,a1<br />
bsr.w KosDec ; decompress<br />
move.w #0,($A11200).l<br />
nop <br />
nop <br />
nop <br />
nop <br />
move.w #$100,($A11200).l ; reset the Z80<br />
move.w #0,($A11100).l ; start the Z80<br />
rts <br />
; End of function SoundDriverLoad<br />
</asm><br />
<br />
and replace it all with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
SoundDriverLoad: ; XREF: GameClrRAM; TitleScreen<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
</asm><br />
<br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlaySound routine, locate:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a sound or music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlaySound:<br />
move.b d0,($FFFFF00A).w<br />
rts <br />
; End of function PlaySound<br />
</asm><br />
<br />
and replace it completely with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a sound or music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlaySound:<br />
cmpi.w #$FB,d0<br />
blt.s PlayNotSpecialFlag<br />
bhi.s TestForNormalSpeed<br />
move #8,d0<br />
jmp SetTempo<br />
<br />
TestForNormalSpeed:<br />
cmpi.w #$FC,d0<br />
bne.s PlayNotSpecialFlag<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
PlayNotSpecialFlag:<br />
move.w #$100,($A11100).l<br />
<br />
PlaySoundZ80NotStopped:<br />
btst #0,($A11100).l<br />
bne.s PlaySoundZ80NotStopped ; loop until it says it's stopped<br />
move.b d0,($A01C0A).l<br />
move.w #0,($A11100).l<br />
rts<br />
; End of function PlaySound<br />
<br />
; ---------------------------------------------------------------------------<br />
; Exclusive sound/music subroutine<br />
; ---------------------------------------------------------------------------<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
<br />
PlaySound_Ex:<br />
tst.b 4(A0)<br />
bpl.s SkipPlaySound_Special<br />
</asm><br />
Do not be alarmed about the new sound routine that was added, it is equivalent to the PlaySound_Local routine (as a matter of fact, it is identical, why sonic1 does not already have it is beyond me, since it indeed does work in sonic 1)<br />
<br />
===sound playback routines===<br />
now find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a special sound/music (E0-E4)<br />
;<br />
; E0 - Fade out<br />
; E1 - Sega<br />
; E2 - Speed up<br />
; E3 - Normal speed<br />
; E4 - Stop<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlaySound_Special:<br />
move.b d0,($FFFFF00B).w<br />
rts <br />
; End of function PlaySound_Special<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Unused sound/music subroutine<br />
; ---------------------------------------------------------------------------<br />
<br />
PlaySound_Unk:<br />
move.b d0,($FFFFF00C).w<br />
rts <br />
</asm><br />
<br />
and replace it entirely with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Unused sound/music subroutine<br />
; ---------------------------------------------------------------------------<br />
<br />
PlaySound_Unk:<br />
nop<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a special sound/music (FB-FF)<br />
; ---------------------------------------------------------------------------<br />
<br />
PlaySound_Special:<br />
move.w #$100,($A11100).l<br />
<br />
PlaySound_SpecialZ80NotStopped:<br />
btst #0,($A11100).l<br />
bne.s PlaySound_SpecialZ80NotStopped<br />
cmp.b ($A01C0B).l,d0<br />
beq.s PlaySound_Special1<br />
tst.b ($A01C0B).l<br />
bne.s PlaySound_Special0<br />
move.b d0,($A01C0B).l<br />
move.w #0,($A11100).l<br />
rts<br />
<br />
PlaySound_Special0:<br />
move.b d0,($A01C0C).l<br />
<br />
PlaySound_Special1:<br />
move.w #0,($A11100).l<br />
<br />
SkipPlaySound_Special:<br />
rts<br />
; End of function PlaySound_Special<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to change the music tempo<br />
; ---------------------------------------------------------------------------<br />
<br />
SetTempo:<br />
move.w #$100,($A11100).l<br />
<br />
SetTempoZ80NotStopped:<br />
btst #0,($A11100).l<br />
bne.s SetTempoZ80NotStopped<br />
move.b D0,($A01C08).l<br />
move.w #0,($A11100).l<br />
rts<br />
</asm><br />
<br />
==Upgrading Pause / Resume routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PauseGame: ; XREF: Level_MainLoop; et al<br />
nop <br />
tst.b ($FFFFFE12).w ; do you have any lives left?<br />
beq.s Unpause ; if not, branch<br />
tst.w ($FFFFF63A).w ; is game already paused?<br />
bne.s loc_13BE ; if yes, branch<br />
btst #7,($FFFFF605).w ; is Start button pressed?<br />
beq.s Pause_DoNothing ; if not, branch<br />
<br />
loc_13BE:<br />
move.w #1,($FFFFF63A).w ; freeze time<br />
move.b #1,($FFFFF003).w ; pause music<br />
<br />
loc_13CA:<br />
move.b #$10,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
tst.b ($FFFFFFE1).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #6,($FFFFF605).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #4,($FFFFF600).w ; set game mode to 4 (title screen)<br />
nop <br />
bra.s loc_1404<br />
; ===========================================================================<br />
<br />
Pause_ChkBC: ; XREF: PauseGame<br />
btst #4,($FFFFF604).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #5,($FFFFF605).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
<br />
Pause_ChkStart: ; XREF: PauseGame<br />
btst #7,($FFFFF605).w ; is Start button pressed?<br />
beq.s loc_13CA ; if not, branch<br />
<br />
loc_1404: ; XREF: PauseGame<br />
move.b #$80,($FFFFF003).w<br />
<br />
Unpause: ; XREF: PauseGame<br />
move.w #0,($FFFFF63A).w ; unpause the game<br />
<br />
Pause_DoNothing: ; XREF: PauseGame<br />
rts <br />
; ===========================================================================<br />
<br />
Pause_SlowMo: ; XREF: PauseGame<br />
move.w #1,($FFFFF63A).w<br />
move.b #$80,($FFFFF003).w<br />
rts <br />
; End of function PauseGame<br />
</asm><br />
<br />
and replace it completely with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PauseGame: ; XREF: Level_MainLoop; et al<br />
nop<br />
tst.b ($FFFFFE12).w<br />
beq Unpause<br />
tst.w ($FFFFF63A).w<br />
bne.s PauseGame_AlreadyPaused<br />
move.b ($FFFFF605).w,d0<br />
or.b ($FFFFF607).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
<br />
PauseGame_AlreadyPaused: <br />
move.w #1,($FFFFF63A).w<br />
move.w #$100,($A11100).l<br />
<br />
PauseGameZ80NotStopped:<br />
btst #0,($A11100).l<br />
bne.s PauseGameZ80NotStopped<br />
move.b #1,($A01C10).l<br />
move.w #0,($A11100).l<br />
<br />
PauseGameLoop:<br />
move.b #$10,($FFFFF62A).w<br />
jsr DelayProgram<br />
tst.b ($FFFFFFE1).w ; Edit: the value is $FFFFFFE1 in Sonic 1<br />
beq.s Pause_ChkStart<br />
btst #6,($FFFFF605).w<br />
beq.s Pause_ChkBC<br />
move.b #$4,($FFFFF600).w ; Go To Title Screen<br />
nop<br />
bra.s PauseGame1<br />
<br />
Pause_ChkBC:<br />
btst #4,($FFFFF604).w<br />
bne.s Pause_SlowMo<br />
btst #5,($FFFFF605).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
cmpi.b #$E,($FFFFFE10).w<br />
bcs.s PauseGame0<br />
cmpi.b #$12,($FFFFFE10).w<br />
bhi.s PauseGame0<br />
tst.b ($FFFFFF8B).w<br />
bpl.s PauseGame0<br />
btst #4,($FFFFF605).w<br />
beq.s PauseGame0<br />
move.b #$C0,($FFFFF600).w<br />
bra.s PauseGame1<br />
<br />
PauseGame0:<br />
move.b ($FFFFF605).w,d0<br />
or.b ($FFFFF607).w,d0<br />
andi.b #$80,d0<br />
beq.s PauseGameLoop<br />
<br />
PauseGame1:<br />
move.w #$100,($A11100).l<br />
<br />
Pause_ChkStartZ80NotStopped:<br />
btst #0,($A11100).l<br />
bne.s Pause_ChkStartZ80NotStopped<br />
move.b #$80,($A01C10).l<br />
move.w #0,($A11100).l<br />
<br />
Unpause:<br />
move.w #0,($FFFFF63A).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,($FFFFF63A).w<br />
move.w #$100,($A11100).l<br />
<br />
Pause_SlowMoZ80NotStopped:<br />
btst #0,($A11100).l<br />
bne.s Pause_SlowMoZ80NotStopped<br />
move.b #$80,($A01C10).l<br />
move.w #0,($A11100).l<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
==Replacing 68k driver with new Z80 driver==<br />
We need the sound driver itself if we are going to have any sound and music, so we locate:<br />
<asm><br />
align 2<br />
<br />
Go_SoundTypes: dc.l SoundTypes ; XREF: Sound_Play<br />
Go_SoundD0: dc.l SoundD0Index ; XREF: Sound_D0toDF<br />
Go_MusicIndex: dc.l MusicIndex ; XREF: Sound_81to9F<br />
Go_SoundIndex: dc.l SoundIndex ; XREF: Sound_A0toCF<br />
off_719A0: dc.l byte_71A94 ; XREF: Sound_81to9F<br />
Go_PSGIndex: dc.l PSG_Index ; XREF: sub_72926<br />
; ---------------------------------------------------------------------------<br />
; PSG instruments used in music<br />
; ---------------------------------------------------------------------------<br />
PSG_Index: dc.l PSG1, PSG2, PSG3<br />
dc.l PSG4, PSG5, PSG6<br />
dc.l PSG7, PSG8, PSG9<br />
PSG1: binclude sound\psg1.bin<br />
PSG2: binclude sound\psg2.bin<br />
PSG3: binclude sound\psg3.bin<br />
PSG4: binclude sound\psg4.bin<br />
PSG6: binclude sound\psg6.bin<br />
PSG5: binclude sound\psg5.bin<br />
PSG7: binclude sound\psg7.bin<br />
PSG8: binclude sound\psg8.bin<br />
PSG9: binclude sound\psg9.bin<br />
<br />
byte_71A94: dc.b 7, $72, $73, $26, $15, 8, $FF, 5<br />
; ---------------------------------------------------------------------------<br />
; Music Pointers<br />
; ---------------------------------------------------------------------------<br />
MusicIndex: dc.l Music81, Music82<br />
dc.l Music83, Music84<br />
dc.l Music85, Music86<br />
dc.l Music87, Music88<br />
dc.l Music89, Music8A<br />
dc.l Music8B, Music8C<br />
dc.l Music8D, Music8E<br />
dc.l Music8F, Music90<br />
dc.l Music91, Music92<br />
dc.l Music93<br />
; ---------------------------------------------------------------------------<br />
; Type of sound being played ($90 = music; $70 = normal sound effect)<br />
; ---------------------------------------------------------------------------<br />
SoundTypes: dc.b $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90<br />
dc.b $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $80<br />
dc.b $70, $70, $70, $70, $70, $70, $70, $70, $70, $68, $70, $70, $70, $60, $70, $70<br />
dc.b $60, $70, $60, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $7F, $60<br />
dc.b $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $80<br />
dc.b $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $90<br />
dc.b $90, $90, $90, $90<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71B4C: ; XREF: loc_B10; PalToCRAM<br />
move.w #$100,($A11100).l ; stop the Z80<br />
nop <br />
nop <br />
nop <br />
<br />
loc_71B5A:<br />
btst #0,($A11100).l<br />
bne.s loc_71B5A<br />
<br />
btst #7,($A01FFD).l<br />
beq.s loc_71B82<br />
move.w #0,($A11100).l ; start the Z80<br />
nop <br />
nop <br />
nop <br />
nop <br />
nop <br />
bra.s sub_71B4C<br />
; ===========================================================================<br />
<br />
loc_71B82:<br />
lea ($FFF000).l,a6<br />
clr.b $E(a6)<br />
tst.b 3(a6) ; is music paused?<br />
bne.w loc_71E50 ; if yes, branch<br />
subq.b #1,1(a6)<br />
bne.s loc_71B9E<br />
jsr sub_7260C(pc)<br />
<br />
loc_71B9E:<br />
move.b 4(a6),d0<br />
beq.s loc_71BA8<br />
jsr sub_72504(pc)<br />
<br />
loc_71BA8:<br />
tst.b $24(a6)<br />
beq.s loc_71BB2<br />
jsr sub_7267C(pc)<br />
<br />
loc_71BB2:<br />
tst.w $A(a6) ; is music or sound being played?<br />
beq.s loc_71BBC ; if not, branch<br />
jsr Sound_Play(pc)<br />
<br />
loc_71BBC:<br />
cmpi.b #$80,9(a6)<br />
beq.s loc_71BC8<br />
jsr Sound_ChkValue(pc)<br />
<br />
loc_71BC8:<br />
lea $40(a6),a5<br />
tst.b (a5)<br />
bpl.s loc_71BD4<br />
jsr sub_71C4E(pc)<br />
<br />
loc_71BD4:<br />
clr.b 8(a6)<br />
moveq #5,d7<br />
<br />
loc_71BDA:<br />
adda.w #$30,a5<br />
tst.b (a5)<br />
bpl.s loc_71BE6<br />
jsr sub_71CCA(pc)<br />
<br />
loc_71BE6:<br />
dbf d7,loc_71BDA<br />
<br />
moveq #2,d7<br />
<br />
loc_71BEC:<br />
adda.w #$30,a5<br />
tst.b (a5)<br />
bpl.s loc_71BF8<br />
jsr sub_72850(pc)<br />
<br />
loc_71BF8:<br />
dbf d7,loc_71BEC<br />
<br />
move.b #$80,$E(a6)<br />
moveq #2,d7<br />
<br />
loc_71C04:<br />
adda.w #$30,a5<br />
tst.b (a5)<br />
bpl.s loc_71C10<br />
jsr sub_71CCA(pc)<br />
<br />
loc_71C10:<br />
dbf d7,loc_71C04<br />
<br />
moveq #2,d7<br />
<br />
loc_71C16:<br />
adda.w #$30,a5<br />
tst.b (a5)<br />
bpl.s loc_71C22<br />
jsr sub_72850(pc)<br />
<br />
loc_71C22:<br />
dbf d7,loc_71C16<br />
move.b #$40,$E(a6)<br />
adda.w #$30,a5<br />
tst.b (a5)<br />
bpl.s loc_71C38<br />
jsr sub_71CCA(pc)<br />
<br />
loc_71C38:<br />
adda.w #$30,a5<br />
tst.b (a5)<br />
bpl.s loc_71C44<br />
jsr sub_72850(pc)<br />
<br />
loc_71C44:<br />
move.w #0,($A11100).l ; start the Z80<br />
rts <br />
; End of function sub_71B4C<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71C4E: ; XREF: sub_71B4C<br />
subq.b #1,$E(a5)<br />
bne.s locret_71CAA<br />
move.b #$80,8(a6)<br />
movea.l 4(a5),a4<br />
<br />
loc_71C5E:<br />
moveq #0,d5<br />
move.b (a4)+,d5<br />
cmpi.b #-$20,d5<br />
bcs.s loc_71C6E<br />
jsr sub_72A5A(pc)<br />
bra.s loc_71C5E<br />
; ===========================================================================<br />
<br />
loc_71C6E:<br />
tst.b d5<br />
bpl.s loc_71C84<br />
move.b d5,$10(a5)<br />
move.b (a4)+,d5<br />
bpl.s loc_71C84<br />
subq.w #1,a4<br />
move.b $F(a5),$E(a5)<br />
bra.s loc_71C88<br />
; ===========================================================================<br />
<br />
loc_71C84:<br />
jsr sub_71D40(pc)<br />
<br />
loc_71C88:<br />
move.l a4,4(a5)<br />
btst #2,(a5)<br />
bne.s locret_71CAA<br />
moveq #0,d0<br />
move.b $10(a5),d0<br />
cmpi.b #$80,d0<br />
beq.s locret_71CAA<br />
btst #3,d0<br />
bne.s loc_71CAC<br />
move.b d0,($A01FFF).l<br />
<br />
locret_71CAA:<br />
rts <br />
; ===========================================================================<br />
<br />
loc_71CAC:<br />
subi.b #$88,d0<br />
move.b byte_71CC4(pc,d0.w),d0<br />
move.b d0,($A000EA).l<br />
move.b #$83,($A01FFF).l<br />
rts <br />
; End of function sub_71C4E<br />
<br />
; ===========================================================================<br />
byte_71CC4: dc.b $12, $15, $1C, $1D, $FF, $FF<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71CCA: ; XREF: sub_71B4C<br />
subq.b #1,$E(a5)<br />
bne.s loc_71CE0<br />
bclr #4,(a5)<br />
jsr sub_71CEC(pc)<br />
jsr sub_71E18(pc)<br />
bra.w loc_726E2<br />
; ===========================================================================<br />
<br />
loc_71CE0:<br />
jsr sub_71D9E(pc)<br />
jsr sub_71DC6(pc)<br />
bra.w loc_71E24<br />
; End of function sub_71CCA<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71CEC: ; XREF: sub_71CCA<br />
movea.l 4(a5),a4<br />
bclr #1,(a5)<br />
<br />
loc_71CF4:<br />
moveq #0,d5<br />
move.b (a4)+,d5<br />
cmpi.b #-$20,d5<br />
bcs.s loc_71D04<br />
jsr sub_72A5A(pc)<br />
bra.s loc_71CF4<br />
; ===========================================================================<br />
<br />
loc_71D04:<br />
jsr sub_726FE(pc)<br />
tst.b d5<br />
bpl.s loc_71D1A<br />
jsr sub_71D22(pc)<br />
move.b (a4)+,d5<br />
bpl.s loc_71D1A<br />
subq.w #1,a4<br />
bra.w sub_71D60<br />
; ===========================================================================<br />
<br />
loc_71D1A:<br />
jsr sub_71D40(pc)<br />
bra.w sub_71D60<br />
; End of function sub_71CEC<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71D22: ; XREF: sub_71CEC<br />
subi.b #$80,d5<br />
beq.s loc_71D58<br />
add.b 8(a5),d5<br />
andi.w #$7F,d5<br />
lsl.w #1,d5<br />
lea word_72790(pc),a0<br />
move.w (a0,d5.w),d6<br />
move.w d6,$10(a5)<br />
rts <br />
; End of function sub_71D22<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71D40: ; XREF: sub_71C4E; sub_71CEC; sub_72878<br />
move.b d5,d0<br />
move.b 2(a5),d1<br />
<br />
loc_71D46:<br />
subq.b #1,d1<br />
beq.s loc_71D4E<br />
add.b d5,d0<br />
bra.s loc_71D46<br />
; ===========================================================================<br />
<br />
loc_71D4E:<br />
move.b d0,$F(a5)<br />
move.b d0,$E(a5)<br />
rts <br />
; End of function sub_71D40<br />
<br />
; ===========================================================================<br />
<br />
loc_71D58: ; XREF: sub_71D22<br />
bset #1,(a5)<br />
clr.w $10(a5)<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71D60: ; XREF: sub_71CEC; sub_72878; sub_728AC<br />
move.l a4,4(a5)<br />
move.b $F(a5),$E(a5)<br />
btst #4,(a5)<br />
bne.s locret_71D9C<br />
move.b $13(a5),$12(a5)<br />
clr.b $C(a5)<br />
btst #3,(a5)<br />
beq.s locret_71D9C<br />
movea.l $14(a5),a0<br />
move.b (a0)+,$18(a5)<br />
move.b (a0)+,$19(a5)<br />
move.b (a0)+,$1A(a5)<br />
move.b (a0)+,d0<br />
lsr.b #1,d0<br />
move.b d0,$1B(a5)<br />
clr.w $1C(a5)<br />
<br />
locret_71D9C:<br />
rts <br />
; End of function sub_71D60<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71D9E: ; XREF: sub_71CCA; sub_72850<br />
tst.b $12(a5)<br />
beq.s locret_71DC4<br />
subq.b #1,$12(a5)<br />
bne.s locret_71DC4<br />
bset #1,(a5)<br />
tst.b 1(a5)<br />
bmi.w loc_71DBE<br />
jsr sub_726FE(pc)<br />
addq.w #4,sp<br />
rts <br />
; ===========================================================================<br />
<br />
loc_71DBE:<br />
jsr sub_729A0(pc)<br />
addq.w #4,sp<br />
<br />
locret_71DC4:<br />
rts <br />
; End of function sub_71D9E<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71DC6: ; XREF: sub_71CCA; sub_72850<br />
addq.w #4,sp<br />
btst #3,(a5)<br />
beq.s locret_71E16<br />
tst.b $18(a5)<br />
beq.s loc_71DDA<br />
subq.b #1,$18(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_71DDA:<br />
subq.b #1,$19(a5)<br />
beq.s loc_71DE2<br />
rts <br />
; ===========================================================================<br />
<br />
loc_71DE2:<br />
movea.l $14(a5),a0<br />
move.b 1(a0),$19(a5)<br />
tst.b $1B(a5)<br />
bne.s loc_71DFE<br />
move.b 3(a0),$1B(a5)<br />
neg.b $1A(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_71DFE:<br />
subq.b #1,$1B(a5)<br />
move.b $1A(a5),d6<br />
ext.w d6<br />
add.w $1C(a5),d6<br />
move.w d6,$1C(a5)<br />
add.w $10(a5),d6<br />
subq.w #4,sp<br />
<br />
locret_71E16:<br />
rts <br />
; End of function sub_71DC6<br />
<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_71E18: ; XREF: sub_71CCA<br />
btst #1,(a5)<br />
bne.s locret_71E48<br />
move.w $10(a5),d6<br />
beq.s loc_71E4A<br />
<br />
loc_71E24: ; XREF: sub_71CCA<br />
move.b $1E(a5),d0<br />
ext.w d0<br />
add.w d0,d6<br />
btst #2,(a5)<br />
bne.s locret_71E48<br />
move.w d6,d1<br />
lsr.w #8,d1<br />
move.b #-$5C,d0<br />
jsr sub_72722(pc)<br />
move.b d6,d1<br />
move.b #-$60,d0<br />
jsr sub_72722(pc)<br />
<br />
locret_71E48:<br />
rts <br />
; ===========================================================================<br />
<br />
loc_71E4A:<br />
bset #1,(a5)<br />
rts <br />
; End of function sub_71E18<br />
<br />
; ===========================================================================<br />
<br />
loc_71E50: ; XREF: sub_71B4C<br />
bmi.s loc_71E94<br />
cmpi.b #2,3(a6)<br />
beq.w loc_71EFE<br />
move.b #2,3(a6)<br />
moveq #2,d3<br />
move.b #-$4C,d0<br />
moveq #0,d1<br />
<br />
loc_71E6A:<br />
jsr sub_7272E(pc)<br />
jsr sub_72764(pc)<br />
addq.b #1,d0<br />
dbf d3,loc_71E6A<br />
<br />
moveq #2,d3<br />
moveq #$28,d0<br />
<br />
loc_71E7C:<br />
move.b d3,d1<br />
jsr sub_7272E(pc)<br />
addq.b #4,d1<br />
jsr sub_7272E(pc)<br />
dbf d3,loc_71E7C<br />
<br />
jsr sub_729B6(pc)<br />
bra.w loc_71C44<br />
; ===========================================================================<br />
<br />
loc_71E94: ; XREF: loc_71E50<br />
clr.b 3(a6)<br />
moveq #$30,d3<br />
lea $40(a6),a5<br />
moveq #6,d4<br />
<br />
loc_71EA0:<br />
btst #7,(a5)<br />
beq.s loc_71EB8<br />
btst #2,(a5)<br />
bne.s loc_71EB8<br />
move.b #-$4C,d0<br />
move.b $A(a5),d1<br />
jsr sub_72722(pc)<br />
<br />
loc_71EB8:<br />
adda.w d3,a5<br />
dbf d4,loc_71EA0<br />
<br />
lea $220(a6),a5<br />
moveq #2,d4<br />
<br />
loc_71EC4:<br />
btst #7,(a5)<br />
beq.s loc_71EDC<br />
btst #2,(a5)<br />
bne.s loc_71EDC<br />
move.b #-$4C,d0<br />
move.b $A(a5),d1<br />
jsr sub_72722(pc)<br />
<br />
loc_71EDC:<br />
adda.w d3,a5<br />
dbf d4,loc_71EC4<br />
<br />
lea $340(a6),a5<br />
btst #7,(a5)<br />
beq.s loc_71EFE<br />
btst #2,(a5)<br />
bne.s loc_71EFE<br />
move.b #-$4C,d0<br />
move.b $A(a5),d1<br />
jsr sub_72722(pc)<br />
<br />
loc_71EFE:<br />
bra.w loc_71C44<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a sound or music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
Sound_Play: ; XREF: sub_71B4C<br />
movea.l (Go_SoundTypes).l,a0<br />
lea $A(a6),a1 ; load music track number<br />
move.b 0(a6),d3<br />
moveq #2,d4<br />
<br />
loc_71F12:<br />
move.b (a1),d0 ; move track number to d0<br />
move.b d0,d1<br />
clr.b (a1)+<br />
subi.b #$81,d0<br />
bcs.s loc_71F3E<br />
cmpi.b #$80,9(a6)<br />
beq.s loc_71F2C<br />
move.b d1,$A(a6)<br />
bra.s loc_71F3E<br />
; ===========================================================================<br />
<br />
loc_71F2C:<br />
andi.w #$7F,d0<br />
move.b (a0,d0.w),d2<br />
cmp.b d3,d2<br />
bcs.s loc_71F3E<br />
move.b d2,d3<br />
move.b d1,9(a6) ; set music flag<br />
<br />
loc_71F3E:<br />
dbf d4,loc_71F12<br />
<br />
tst.b d3<br />
bmi.s locret_71F4A<br />
move.b d3,0(a6)<br />
<br />
locret_71F4A:<br />
rts <br />
; End of function Sound_Play<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
Sound_ChkValue: ; XREF: sub_71B4C<br />
moveq #0,d7<br />
move.b 9(a6),d7<br />
beq.w Sound_E4<br />
bpl.s locret_71F8C<br />
move.b #$80,9(a6) ; reset music flag<br />
cmpi.b #$9F,d7<br />
bls.w Sound_81to9F ; music $81-$9F<br />
cmpi.b #$A0,d7<br />
bcs.w locret_71F8C<br />
cmpi.b #$CF,d7<br />
bls.w Sound_A0toCF ; sound $A0-$CF<br />
cmpi.b #$D0,d7<br />
bcs.w locret_71F8C<br />
cmpi.b #$E0,d7<br />
bcs.w Sound_D0toDF ; sound $D0-$DF<br />
cmpi.b #$E4,d7<br />
bls.s Sound_E0toE4 ; sound $E0-$E4<br />
<br />
locret_71F8C:<br />
rts <br />
; ===========================================================================<br />
<br />
Sound_E0toE4: ; XREF: Sound_ChkValue<br />
subi.b #$E0,d7<br />
lsl.w #2,d7<br />
jmp Sound_ExIndex(pc,d7.w)<br />
; ===========================================================================<br />
<br />
Sound_ExIndex:<br />
bra.w Sound_E0<br />
; ===========================================================================<br />
bra.w Sound_E1<br />
; ===========================================================================<br />
bra.w Sound_E2<br />
; ===========================================================================<br />
bra.w Sound_E3<br />
; ===========================================================================<br />
bra.w Sound_E4<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Play "Say-gaa" PCM sound<br />
; ---------------------------------------------------------------------------<br />
<br />
Sound_E1: ; XREF: Sound_ExIndex<br />
move.b #$88,($A01FFF).l<br />
move.w #0,($A11100).l ; start the Z80<br />
move.w #$11,d1<br />
<br />
loc_71FC0:<br />
move.w #-1,d0<br />
<br />
loc_71FC4:<br />
nop <br />
dbf d0,loc_71FC4<br />
<br />
dbf d1,loc_71FC0<br />
<br />
addq.w #4,sp<br />
rts <br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Play music track $81-$9F<br />
; ---------------------------------------------------------------------------<br />
<br />
Sound_81to9F: ; XREF: Sound_ChkValue<br />
cmpi.b #$88,d7 ; is "extra life" music played?<br />
bne.s loc_72024 ; if not, branch<br />
tst.b $27(a6)<br />
bne.w loc_721B6<br />
lea $40(a6),a5<br />
moveq #9,d0<br />
<br />
loc_71FE6:<br />
bclr #2,(a5)<br />
adda.w #$30,a5<br />
dbf d0,loc_71FE6<br />
<br />
lea $220(a6),a5<br />
moveq #5,d0<br />
<br />
loc_71FF8:<br />
bclr #7,(a5)<br />
adda.w #$30,a5<br />
dbf d0,loc_71FF8<br />
clr.b 0(a6)<br />
movea.l a6,a0<br />
lea $3A0(a6),a1<br />
move.w #$87,d0<br />
<br />
loc_72012:<br />
move.l (a0)+,(a1)+<br />
dbf d0,loc_72012<br />
<br />
move.b #$80,$27(a6)<br />
clr.b 0(a6)<br />
bra.s loc_7202C<br />
; ===========================================================================<br />
<br />
loc_72024:<br />
clr.b $27(a6)<br />
clr.b $26(a6)<br />
<br />
loc_7202C:<br />
jsr sub_725CA(pc)<br />
movea.l (off_719A0).l,a4<br />
subi.b #$81,d7<br />
move.b (a4,d7.w),$29(a6)<br />
movea.l (Go_MusicIndex).l,a4<br />
lsl.w #2,d7<br />
movea.l (a4,d7.w),a4<br />
moveq #0,d0<br />
move.w (a4),d0<br />
add.l a4,d0<br />
move.l d0,$18(a6)<br />
move.b 5(a4),d0<br />
move.b d0,$28(a6)<br />
tst.b $2A(a6)<br />
beq.s loc_72068<br />
move.b $29(a6),d0<br />
<br />
loc_72068:<br />
move.b d0,2(a6)<br />
move.b d0,1(a6)<br />
moveq #0,d1<br />
movea.l a4,a3<br />
addq.w #6,a4<br />
moveq #0,d7<br />
move.b 2(a3),d7<br />
beq.w loc_72114<br />
subq.b #1,d7<br />
move.b #-$40,d1<br />
move.b 4(a3),d4<br />
moveq #$30,d6<br />
move.b #1,d5<br />
lea $40(a6),a1<br />
lea byte_721BA(pc),a2<br />
<br />
loc_72098:<br />
bset #7,(a1)<br />
move.b (a2)+,1(a1)<br />
move.b d4,2(a1)<br />
move.b d6,$D(a1)<br />
move.b d1,$A(a1)<br />
move.b d5,$E(a1)<br />
moveq #0,d0<br />
move.w (a4)+,d0<br />
add.l a3,d0<br />
move.l d0,4(a1)<br />
move.w (a4)+,8(a1)<br />
adda.w d6,a1<br />
dbf d7,loc_72098<br />
cmpi.b #7,2(a3)<br />
bne.s loc_720D8<br />
moveq #$2B,d0<br />
moveq #0,d1<br />
jsr sub_7272E(pc)<br />
bra.w loc_72114<br />
; ===========================================================================<br />
<br />
loc_720D8:<br />
moveq #$28,d0<br />
moveq #6,d1<br />
jsr sub_7272E(pc)<br />
move.b #$42,d0<br />
moveq #$7F,d1<br />
jsr sub_72764(pc)<br />
move.b #$4A,d0<br />
moveq #$7F,d1<br />
jsr sub_72764(pc)<br />
move.b #$46,d0<br />
moveq #$7F,d1<br />
jsr sub_72764(pc)<br />
move.b #$4E,d0<br />
moveq #$7F,d1<br />
jsr sub_72764(pc)<br />
move.b #-$4A,d0<br />
move.b #-$40,d1<br />
jsr sub_72764(pc)<br />
<br />
loc_72114:<br />
moveq #0,d7<br />
move.b 3(a3),d7<br />
beq.s loc_72154<br />
subq.b #1,d7<br />
lea $190(a6),a1<br />
lea byte_721C2(pc),a2<br />
<br />
loc_72126:<br />
bset #7,(a1)<br />
move.b (a2)+,1(a1)<br />
move.b d4,2(a1)<br />
move.b d6,$D(a1)<br />
move.b d5,$E(a1)<br />
moveq #0,d0<br />
move.w (a4)+,d0<br />
add.l a3,d0<br />
move.l d0,4(a1)<br />
move.w (a4)+,8(a1)<br />
move.b (a4)+,d0<br />
move.b (a4)+,$B(a1)<br />
adda.w d6,a1<br />
dbf d7,loc_72126<br />
<br />
loc_72154:<br />
lea $220(a6),a1<br />
moveq #5,d7<br />
<br />
loc_7215A:<br />
tst.b (a1)<br />
bpl.w loc_7217C<br />
moveq #0,d0<br />
move.b 1(a1),d0<br />
bmi.s loc_7216E<br />
subq.b #2,d0<br />
lsl.b #2,d0<br />
bra.s loc_72170<br />
; ===========================================================================<br />
<br />
loc_7216E:<br />
lsr.b #3,d0<br />
<br />
loc_72170:<br />
lea dword_722CC(pc),a0<br />
movea.l (a0,d0.w),a0<br />
bset #2,(a0)<br />
<br />
loc_7217C:<br />
adda.w d6,a1<br />
dbf d7,loc_7215A<br />
<br />
tst.w $340(a6)<br />
bpl.s loc_7218E<br />
bset #2,$100(a6)<br />
<br />
loc_7218E:<br />
tst.w $370(a6)<br />
bpl.s loc_7219A<br />
bset #2,$1F0(a6)<br />
<br />
loc_7219A:<br />
lea $70(a6),a5<br />
moveq #5,d4<br />
<br />
loc_721A0:<br />
jsr sub_726FE(pc)<br />
adda.w d6,a5<br />
dbf d4,loc_721A0<br />
moveq #2,d4<br />
<br />
loc_721AC:<br />
jsr sub_729A0(pc)<br />
adda.w d6,a5<br />
dbf d4,loc_721AC<br />
<br />
loc_721B6:<br />
addq.w #4,sp<br />
rts <br />
; ===========================================================================<br />
byte_721BA: dc.b 6, 0, 1, 2, 4, 5, 6, 0<br />
align 2<br />
byte_721C2: dc.b $80, $A0, $C0, 0<br />
align 2<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Play normal sound effect<br />
; ---------------------------------------------------------------------------<br />
<br />
Sound_A0toCF: ; XREF: Sound_ChkValue<br />
tst.b $27(a6)<br />
bne.w loc_722C6<br />
tst.b 4(a6)<br />
bne.w loc_722C6<br />
tst.b $24(a6)<br />
bne.w loc_722C6<br />
cmpi.b #$B5,d7 ; is ring sound effect played?<br />
bne.s Sound_notB5 ; if not, branch<br />
tst.b $2B(a6)<br />
bne.s loc_721EE<br />
move.b #$CE,d7 ; play ring sound in left speaker<br />
<br />
loc_721EE:<br />
bchg #0,$2B(a6) ; change speaker<br />
<br />
Sound_notB5:<br />
cmpi.b #$A7,d7 ; is "pushing" sound played?<br />
bne.s Sound_notA7 ; if not, branch<br />
tst.b $2C(a6)<br />
bne.w locret_722C4<br />
move.b #$80,$2C(a6)<br />
<br />
Sound_notA7:<br />
movea.l (Go_SoundIndex).l,a0<br />
subi.b #$A0,d7<br />
lsl.w #2,d7<br />
movea.l (a0,d7.w),a3<br />
movea.l a3,a1<br />
moveq #0,d1<br />
move.w (a1)+,d1<br />
add.l a3,d1<br />
move.b (a1)+,d5<br />
move.b (a1)+,d7<br />
subq.b #1,d7<br />
moveq #$30,d6<br />
<br />
loc_72228:<br />
moveq #0,d3<br />
move.b 1(a1),d3<br />
move.b d3,d4<br />
bmi.s loc_72244<br />
subq.w #2,d3<br />
lsl.w #2,d3<br />
lea dword_722CC(pc),a5<br />
movea.l (a5,d3.w),a5<br />
bset #2,(a5)<br />
bra.s loc_7226E<br />
; ===========================================================================<br />
<br />
loc_72244:<br />
lsr.w #3,d3<br />
lea dword_722CC(pc),a5<br />
movea.l (a5,d3.w),a5<br />
bset #2,(a5)<br />
cmpi.b #$C0,d4<br />
bne.s loc_7226E<br />
move.b d4,d0<br />
ori.b #$1F,d0<br />
move.b d0,($C00011).l<br />
bchg #5,d0<br />
move.b d0,($C00011).l<br />
<br />
loc_7226E:<br />
movea.l dword_722EC(pc,d3.w),a5<br />
movea.l a5,a2<br />
moveq #$B,d0<br />
<br />
loc_72276:<br />
clr.l (a2)+<br />
dbf d0,loc_72276<br />
<br />
move.w (a1)+,(a5)<br />
move.b d5,2(a5)<br />
moveq #0,d0<br />
move.w (a1)+,d0<br />
add.l a3,d0<br />
move.l d0,4(a5)<br />
move.w (a1)+,8(a5)<br />
move.b #1,$E(a5)<br />
move.b d6,$D(a5)<br />
tst.b d4<br />
bmi.s loc_722A8<br />
move.b #$C0,$A(a5)<br />
move.l d1,$20(a5)<br />
<br />
loc_722A8:<br />
dbf d7,loc_72228<br />
<br />
tst.b $250(a6)<br />
bpl.s loc_722B8<br />
bset #2,$340(a6)<br />
<br />
loc_722B8:<br />
tst.b $310(a6)<br />
bpl.s locret_722C4<br />
bset #2,$370(a6)<br />
<br />
locret_722C4:<br />
rts <br />
; ===========================================================================<br />
<br />
loc_722C6:<br />
clr.b 0(a6)<br />
rts <br />
; ===========================================================================<br />
dword_722CC: dc.l $FFF0D0<br />
dc.l 0<br />
dc.l $FFF100<br />
dc.l $FFF130<br />
dc.l $FFF190<br />
dc.l $FFF1C0<br />
dc.l $FFF1F0<br />
dc.l $FFF1F0<br />
dword_722EC: dc.l $FFF220<br />
dc.l 0<br />
dc.l $FFF250<br />
dc.l $FFF280<br />
dc.l $FFF2B0<br />
dc.l $FFF2E0<br />
dc.l $FFF310<br />
dc.l $FFF310<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Play GHZ waterfall sound<br />
; ---------------------------------------------------------------------------<br />
<br />
Sound_D0toDF: ; XREF: Sound_ChkValue<br />
tst.b $27(a6)<br />
bne.w locret_723C6<br />
tst.b 4(a6)<br />
bne.w locret_723C6<br />
tst.b $24(a6)<br />
bne.w locret_723C6<br />
movea.l (Go_SoundD0).l,a0<br />
subi.b #$D0,d7<br />
lsl.w #2,d7<br />
movea.l (a0,d7.w),a3<br />
movea.l a3,a1<br />
moveq #0,d0<br />
move.w (a1)+,d0<br />
add.l a3,d0<br />
move.l d0,$20(a6)<br />
move.b (a1)+,d5<br />
move.b (a1)+,d7<br />
subq.b #1,d7<br />
moveq #$30,d6<br />
<br />
loc_72348:<br />
move.b 1(a1),d4<br />
bmi.s loc_7235A<br />
bset #2,$100(a6)<br />
lea $340(a6),a5<br />
bra.s loc_72364<br />
; ===========================================================================<br />
<br />
loc_7235A:<br />
bset #2,$1F0(a6)<br />
lea $370(a6),a5<br />
<br />
loc_72364:<br />
movea.l a5,a2<br />
moveq #$B,d0<br />
<br />
loc_72368:<br />
clr.l (a2)+<br />
dbf d0,loc_72368<br />
<br />
move.w (a1)+,(a5)<br />
move.b d5,2(a5)<br />
moveq #0,d0<br />
move.w (a1)+,d0<br />
add.l a3,d0<br />
move.l d0,4(a5)<br />
move.w (a1)+,8(a5)<br />
move.b #1,$E(a5)<br />
move.b d6,$D(a5)<br />
tst.b d4<br />
bmi.s loc_72396<br />
move.b #$C0,$A(a5)<br />
<br />
loc_72396:<br />
dbf d7,loc_72348<br />
<br />
tst.b $250(a6)<br />
bpl.s loc_723A6<br />
bset #2,$340(a6)<br />
<br />
loc_723A6:<br />
tst.b $310(a6)<br />
bpl.s locret_723C6<br />
bset #2,$370(a6)<br />
ori.b #$1F,d4<br />
move.b d4,($C00011).l<br />
bchg #5,d4<br />
move.b d4,($C00011).l<br />
<br />
locret_723C6:<br />
rts <br />
; End of function Sound_ChkValue<br />
<br />
; ===========================================================================<br />
dc.l $FFF100<br />
dc.l $FFF1F0<br />
dc.l $FFF250<br />
dc.l $FFF310<br />
dc.l $FFF340<br />
dc.l $FFF370<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
Snd_FadeOut1: ; XREF: Sound_E0<br />
clr.b 0(a6)<br />
lea $220(a6),a5<br />
moveq #5,d7<br />
<br />
loc_723EA:<br />
tst.b (a5)<br />
bpl.w loc_72472<br />
bclr #7,(a5)<br />
moveq #0,d3<br />
move.b 1(a5),d3<br />
bmi.s loc_7243C<br />
jsr sub_726FE(pc)<br />
cmpi.b #4,d3<br />
bne.s loc_72416<br />
tst.b $340(a6)<br />
bpl.s loc_72416<br />
lea $340(a6),a5<br />
movea.l $20(a6),a1<br />
bra.s loc_72428<br />
; ===========================================================================<br />
<br />
loc_72416:<br />
subq.b #2,d3<br />
lsl.b #2,d3<br />
lea dword_722CC(pc),a0<br />
movea.l a5,a3<br />
movea.l (a0,d3.w),a5<br />
movea.l $18(a6),a1<br />
<br />
loc_72428:<br />
bclr #2,(a5)<br />
bset #1,(a5)<br />
move.b $B(a5),d0<br />
jsr sub_72C4E(pc)<br />
movea.l a3,a5<br />
bra.s loc_72472<br />
; ===========================================================================<br />
<br />
loc_7243C:<br />
jsr sub_729A0(pc)<br />
lea $370(a6),a0<br />
cmpi.b #$E0,d3<br />
beq.s loc_7245A<br />
cmpi.b #$C0,d3<br />
beq.s loc_7245A<br />
lsr.b #3,d3<br />
lea dword_722CC(pc),a0<br />
movea.l (a0,d3.w),a0<br />
<br />
loc_7245A:<br />
bclr #2,(a0)<br />
bset #1,(a0)<br />
cmpi.b #$E0,1(a0)<br />
bne.s loc_72472<br />
move.b $1F(a0),($C00011).l<br />
<br />
loc_72472:<br />
adda.w #$30,a5<br />
dbf d7,loc_723EA<br />
<br />
rts <br />
; End of function Snd_FadeOut1<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
Snd_FadeOut2: ; XREF: Sound_E0<br />
lea $340(a6),a5<br />
tst.b (a5)<br />
bpl.s loc_724AE<br />
bclr #7,(a5)<br />
btst #2,(a5)<br />
bne.s loc_724AE<br />
jsr loc_7270A(pc)<br />
lea $100(a6),a5<br />
bclr #2,(a5)<br />
bset #1,(a5)<br />
tst.b (a5)<br />
bpl.s loc_724AE<br />
movea.l $18(a6),a1<br />
move.b $B(a5),d0<br />
jsr sub_72C4E(pc)<br />
<br />
loc_724AE:<br />
lea $370(a6),a5<br />
tst.b (a5)<br />
bpl.s locret_724E4<br />
bclr #7,(a5)<br />
btst #2,(a5)<br />
bne.s locret_724E4<br />
jsr loc_729A6(pc)<br />
lea $1F0(a6),a5<br />
bclr #2,(a5)<br />
bset #1,(a5)<br />
tst.b (a5)<br />
bpl.s locret_724E4<br />
cmpi.b #-$20,1(a5)<br />
bne.s locret_724E4<br />
move.b $1F(a5),($C00011).l<br />
<br />
locret_724E4:<br />
rts <br />
; End of function Snd_FadeOut2<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Fade out music<br />
; ---------------------------------------------------------------------------<br />
<br />
Sound_E0: ; XREF: Sound_ExIndex<br />
jsr Snd_FadeOut1(pc)<br />
jsr Snd_FadeOut2(pc)<br />
move.b #3,6(a6)<br />
move.b #$28,4(a6)<br />
clr.b $40(a6)<br />
clr.b $2A(a6)<br />
rts <br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_72504: ; XREF: sub_71B4C<br />
move.b 6(a6),d0<br />
beq.s loc_72510<br />
subq.b #1,6(a6)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72510:<br />
subq.b #1,4(a6)<br />
beq.w Sound_E4<br />
move.b #3,6(a6)<br />
lea $70(a6),a5<br />
moveq #5,d7<br />
<br />
loc_72524:<br />
tst.b (a5)<br />
bpl.s loc_72538<br />
addq.b #1,9(a5)<br />
bpl.s loc_72534<br />
bclr #7,(a5)<br />
bra.s loc_72538<br />
; ===========================================================================<br />
<br />
loc_72534:<br />
jsr sub_72CB4(pc)<br />
<br />
loc_72538:<br />
adda.w #$30,a5<br />
dbf d7,loc_72524<br />
<br />
moveq #2,d7<br />
<br />
loc_72542:<br />
tst.b (a5)<br />
bpl.s loc_72560<br />
addq.b #1,9(a5)<br />
cmpi.b #$10,9(a5)<br />
bcs.s loc_72558<br />
bclr #7,(a5)<br />
bra.s loc_72560<br />
; ===========================================================================<br />
<br />
loc_72558:<br />
move.b 9(a5),d6<br />
jsr sub_7296A(pc)<br />
<br />
loc_72560:<br />
adda.w #$30,a5<br />
dbf d7,loc_72542<br />
<br />
rts <br />
; End of function sub_72504<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_7256A: ; XREF: Sound_E4; sub_725CA<br />
moveq #2,d3<br />
moveq #$28,d0<br />
<br />
loc_7256E:<br />
move.b d3,d1<br />
jsr sub_7272E(pc)<br />
addq.b #4,d1<br />
jsr sub_7272E(pc)<br />
dbf d3,loc_7256E<br />
<br />
moveq #$40,d0<br />
moveq #$7F,d1<br />
moveq #2,d4<br />
<br />
loc_72584:<br />
moveq #3,d3<br />
<br />
loc_72586:<br />
jsr sub_7272E(pc)<br />
jsr sub_72764(pc)<br />
addq.w #4,d0<br />
dbf d3,loc_72586<br />
<br />
subi.b #$F,d0<br />
dbf d4,loc_72584<br />
<br />
rts <br />
; End of function sub_7256A<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Stop music<br />
; ---------------------------------------------------------------------------<br />
<br />
Sound_E4: ; XREF: Sound_ChkValue; Sound_ExIndex; sub_72504<br />
moveq #$2B,d0<br />
move.b #$80,d1<br />
jsr sub_7272E(pc)<br />
moveq #$27,d0<br />
moveq #0,d1<br />
jsr sub_7272E(pc)<br />
movea.l a6,a0<br />
move.w #$E3,d0<br />
<br />
loc_725B6:<br />
clr.l (a0)+<br />
dbf d0,loc_725B6<br />
<br />
move.b #$80,9(a6) ; set music to $80 (silence)<br />
jsr sub_7256A(pc)<br />
bra.w sub_729B6<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_725CA: ; XREF: Sound_ChkValue<br />
movea.l a6,a0<br />
move.b 0(a6),d1<br />
move.b $27(a6),d2<br />
move.b $2A(a6),d3<br />
move.b $26(a6),d4<br />
move.w $A(a6),d5<br />
move.w #$87,d0<br />
<br />
loc_725E4:<br />
clr.l (a0)+<br />
dbf d0,loc_725E4<br />
<br />
move.b d1,0(a6)<br />
move.b d2,$27(a6)<br />
move.b d3,$2A(a6)<br />
move.b d4,$26(a6)<br />
move.w d5,$A(a6)<br />
move.b #$80,9(a6)<br />
jsr sub_7256A(pc)<br />
bra.w sub_729B6<br />
; End of function sub_725CA<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_7260C: ; XREF: sub_71B4C<br />
move.b 2(a6),1(a6)<br />
lea $4E(a6),a0<br />
moveq #$30,d0<br />
moveq #9,d1<br />
<br />
loc_7261A:<br />
addq.b #1,(a0)<br />
adda.w d0,a0<br />
dbf d1,loc_7261A<br />
<br />
rts <br />
; End of function sub_7260C<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Speed up music<br />
; ---------------------------------------------------------------------------<br />
<br />
Sound_E2: ; XREF: Sound_ExIndex<br />
tst.b $27(a6)<br />
bne.s loc_7263E<br />
move.b $29(a6),2(a6)<br />
move.b $29(a6),1(a6)<br />
move.b #$80,$2A(a6)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_7263E:<br />
move.b $3C9(a6),$3A2(a6)<br />
move.b $3C9(a6),$3A1(a6)<br />
move.b #$80,$3CA(a6)<br />
rts <br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Change music back to normal speed<br />
; ---------------------------------------------------------------------------<br />
<br />
Sound_E3: ; XREF: Sound_ExIndex<br />
tst.b $27(a6)<br />
bne.s loc_7266A<br />
move.b $28(a6),2(a6)<br />
move.b $28(a6),1(a6)<br />
clr.b $2A(a6)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_7266A:<br />
move.b $3C8(a6),$3A2(a6)<br />
move.b $3C8(a6),$3A1(a6)<br />
clr.b $3CA(a6)<br />
rts <br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_7267C: ; XREF: sub_71B4C<br />
tst.b $25(a6)<br />
beq.s loc_72688<br />
subq.b #1,$25(a6)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72688:<br />
tst.b $26(a6)<br />
beq.s loc_726D6<br />
subq.b #1,$26(a6)<br />
move.b #2,$25(a6)<br />
lea $70(a6),a5<br />
moveq #5,d7<br />
<br />
loc_7269E:<br />
tst.b (a5)<br />
bpl.s loc_726AA<br />
subq.b #1,9(a5)<br />
jsr sub_72CB4(pc)<br />
<br />
loc_726AA:<br />
adda.w #$30,a5<br />
dbf d7,loc_7269E<br />
moveq #2,d7<br />
<br />
loc_726B4:<br />
tst.b (a5)<br />
bpl.s loc_726CC<br />
subq.b #1,9(a5)<br />
move.b 9(a5),d6<br />
cmpi.b #$10,d6<br />
bcs.s loc_726C8<br />
moveq #$F,d6<br />
<br />
loc_726C8:<br />
jsr sub_7296A(pc)<br />
<br />
loc_726CC:<br />
adda.w #$30,a5<br />
dbf d7,loc_726B4<br />
rts <br />
; ===========================================================================<br />
<br />
loc_726D6:<br />
bclr #2,$40(a6)<br />
clr.b $24(a6)<br />
rts <br />
; End of function sub_7267C<br />
<br />
; ===========================================================================<br />
<br />
loc_726E2: ; XREF: sub_71CCA<br />
btst #1,(a5)<br />
bne.s locret_726FC<br />
btst #2,(a5)<br />
bne.s locret_726FC<br />
moveq #$28,d0<br />
move.b 1(a5),d1<br />
ori.b #-$10,d1<br />
bra.w sub_7272E<br />
; ===========================================================================<br />
<br />
locret_726FC:<br />
rts <br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_726FE: ; XREF: sub_71CEC; sub_71D9E; Sound_ChkValue; Snd_FadeOut1<br />
btst #4,(a5)<br />
bne.s locret_72714<br />
btst #2,(a5)<br />
bne.s locret_72714<br />
<br />
loc_7270A: ; XREF: Snd_FadeOut2<br />
moveq #$28,d0<br />
move.b 1(a5),d1<br />
bra.w sub_7272E<br />
; ===========================================================================<br />
<br />
locret_72714:<br />
rts <br />
; End of function sub_726FE<br />
<br />
; ===========================================================================<br />
<br />
loc_72716: ; XREF: sub_72A5A<br />
btst #2,(a5)<br />
bne.s locret_72720<br />
bra.w sub_72722<br />
; ===========================================================================<br />
<br />
locret_72720:<br />
rts <br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_72722: ; XREF: sub_71E18; sub_72C4E; sub_72CB4<br />
btst #2,1(a5)<br />
bne.s loc_7275A<br />
add.b 1(a5),d0<br />
; End of function sub_72722<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_7272E: ; XREF: loc_71E6A<br />
move.b ($A04000).l,d2<br />
btst #7,d2<br />
bne.s sub_7272E<br />
move.b d0,($A04000).l<br />
nop <br />
nop <br />
nop <br />
<br />
loc_72746:<br />
move.b ($A04000).l,d2<br />
btst #7,d2<br />
bne.s loc_72746<br />
<br />
move.b d1,($A04001).l<br />
rts <br />
; End of function sub_7272E<br />
<br />
; ===========================================================================<br />
<br />
loc_7275A: ; XREF: sub_72722<br />
move.b 1(a5),d2<br />
bclr #2,d2<br />
add.b d2,d0<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_72764: ; XREF: loc_71E6A; Sound_ChkValue; sub_7256A; sub_72764<br />
move.b ($A04000).l,d2<br />
btst #7,d2<br />
bne.s sub_72764<br />
move.b d0,($A04002).l<br />
nop <br />
nop <br />
nop <br />
<br />
loc_7277C:<br />
move.b ($A04000).l,d2<br />
btst #7,d2<br />
bne.s loc_7277C<br />
<br />
move.b d1,($A04003).l<br />
rts <br />
; End of function sub_72764<br />
<br />
; ===========================================================================<br />
word_72790: dc.w $25E, $284, $2AB, $2D3, $2FE, $32D, $35C, $38F, $3C5<br />
dc.w $3FF, $43C, $47C, $A5E, $A84, $AAB, $AD3, $AFE, $B2D<br />
dc.w $B5C, $B8F, $BC5, $BFF, $C3C, $C7C, $125E, $1284<br />
dc.w $12AB, $12D3, $12FE, $132D, $135C, $138F, $13C5, $13FF<br />
dc.w $143C, $147C, $1A5E, $1A84, $1AAB, $1AD3, $1AFE, $1B2D<br />
dc.w $1B5C, $1B8F, $1BC5, $1BFF, $1C3C, $1C7C, $225E, $2284<br />
dc.w $22AB, $22D3, $22FE, $232D, $235C, $238F, $23C5, $23FF<br />
dc.w $243C, $247C, $2A5E, $2A84, $2AAB, $2AD3, $2AFE, $2B2D<br />
dc.w $2B5C, $2B8F, $2BC5, $2BFF, $2C3C, $2C7C, $325E, $3284<br />
dc.w $32AB, $32D3, $32FE, $332D, $335C, $338F, $33C5, $33FF<br />
dc.w $343C, $347C, $3A5E, $3A84, $3AAB, $3AD3, $3AFE, $3B2D<br />
dc.w $3B5C, $3B8F, $3BC5, $3BFF, $3C3C, $3C7C<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_72850: ; XREF: sub_71B4C<br />
subq.b #1,$E(a5)<br />
bne.s loc_72866<br />
bclr #4,(a5)<br />
jsr sub_72878(pc)<br />
jsr sub_728DC(pc)<br />
bra.w loc_7292E<br />
; ===========================================================================<br />
<br />
loc_72866:<br />
jsr sub_71D9E(pc)<br />
jsr sub_72926(pc)<br />
jsr sub_71DC6(pc)<br />
jsr sub_728E2(pc)<br />
rts <br />
; End of function sub_72850<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_72878: ; XREF: sub_72850<br />
bclr #1,(a5)<br />
movea.l 4(a5),a4<br />
<br />
loc_72880:<br />
moveq #0,d5<br />
move.b (a4)+,d5<br />
cmpi.b #$E0,d5<br />
bcs.s loc_72890<br />
jsr sub_72A5A(pc)<br />
bra.s loc_72880<br />
; ===========================================================================<br />
<br />
loc_72890:<br />
tst.b d5<br />
bpl.s loc_728A4<br />
jsr sub_728AC(pc)<br />
move.b (a4)+,d5<br />
tst.b d5<br />
bpl.s loc_728A4<br />
subq.w #1,a4<br />
bra.w sub_71D60<br />
; ===========================================================================<br />
<br />
loc_728A4:<br />
jsr sub_71D40(pc)<br />
bra.w sub_71D60<br />
; End of function sub_72878<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_728AC: ; XREF: sub_72878<br />
subi.b #$81,d5<br />
bcs.s loc_728CA<br />
add.b 8(a5),d5<br />
andi.w #$7F,d5<br />
lsl.w #1,d5<br />
lea word_729CE(pc),a0<br />
move.w (a0,d5.w),$10(a5)<br />
bra.w sub_71D60<br />
; ===========================================================================<br />
<br />
loc_728CA:<br />
bset #1,(a5)<br />
move.w #-1,$10(a5)<br />
jsr sub_71D60(pc)<br />
bra.w sub_729A0<br />
; End of function sub_728AC<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_728DC: ; XREF: sub_72850<br />
move.w $10(a5),d6<br />
bmi.s loc_72920<br />
; End of function sub_728DC<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_728E2: ; XREF: sub_72850<br />
move.b $1E(a5),d0<br />
ext.w d0<br />
add.w d0,d6<br />
btst #2,(a5)<br />
bne.s locret_7291E<br />
btst #1,(a5)<br />
bne.s locret_7291E<br />
move.b 1(a5),d0<br />
cmpi.b #$E0,d0<br />
bne.s loc_72904<br />
move.b #$C0,d0<br />
<br />
loc_72904:<br />
move.w d6,d1<br />
andi.b #$F,d1<br />
or.b d1,d0<br />
lsr.w #4,d6<br />
andi.b #$3F,d6<br />
move.b d0,($C00011).l<br />
move.b d6,($C00011).l<br />
<br />
locret_7291E:<br />
rts <br />
; End of function sub_728E2<br />
<br />
; ===========================================================================<br />
<br />
loc_72920: ; XREF: sub_728DC<br />
bset #1,(a5)<br />
rts <br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_72926: ; XREF: sub_72850<br />
tst.b $B(a5)<br />
beq.w locret_7298A<br />
<br />
loc_7292E: ; XREF: sub_72850<br />
move.b 9(a5),d6<br />
moveq #0,d0<br />
move.b $B(a5),d0<br />
beq.s sub_7296A<br />
movea.l (Go_PSGIndex).l,a0<br />
subq.w #1,d0<br />
lsl.w #2,d0<br />
movea.l (a0,d0.w),a0<br />
move.b $C(a5),d0<br />
move.b (a0,d0.w),d0<br />
addq.b #1,$C(a5)<br />
btst #7,d0<br />
beq.s loc_72960<br />
cmpi.b #$80,d0<br />
beq.s loc_7299A<br />
<br />
loc_72960:<br />
add.w d0,d6<br />
cmpi.b #$10,d6<br />
bcs.s sub_7296A<br />
moveq #$F,d6<br />
; End of function sub_72926<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_7296A: ; XREF: sub_72504; sub_7267C; sub_72926<br />
btst #1,(a5)<br />
bne.s locret_7298A<br />
btst #2,(a5)<br />
bne.s locret_7298A<br />
btst #4,(a5)<br />
bne.s loc_7298C<br />
<br />
loc_7297C:<br />
or.b 1(a5),d6<br />
addi.b #$10,d6<br />
move.b d6,($C00011).l<br />
<br />
locret_7298A:<br />
rts <br />
; ===========================================================================<br />
<br />
loc_7298C:<br />
tst.b $13(a5)<br />
beq.s loc_7297C<br />
tst.b $12(a5)<br />
bne.s loc_7297C<br />
rts <br />
; End of function sub_7296A<br />
<br />
; ===========================================================================<br />
<br />
loc_7299A: ; XREF: sub_72926<br />
subq.b #1,$C(a5)<br />
rts <br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_729A0: ; XREF: sub_71D9E; Sound_ChkValue; Snd_FadeOut1; sub_728AC<br />
btst #2,(a5)<br />
bne.s locret_729B4<br />
<br />
loc_729A6: ; XREF: Snd_FadeOut2<br />
move.b 1(a5),d0<br />
ori.b #$1F,d0<br />
move.b d0,($C00011).l<br />
<br />
locret_729B4:<br />
rts <br />
; End of function sub_729A0<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_729B6: ; XREF: loc_71E7C<br />
lea ($C00011).l,a0<br />
move.b #$9F,(a0)<br />
move.b #$BF,(a0)<br />
move.b #$DF,(a0)<br />
move.b #$FF,(a0)<br />
rts <br />
; End of function sub_729B6<br />
<br />
; ===========================================================================<br />
word_729CE: dc.w $356, $326, $2F9, $2CE, $2A5, $280, $25C, $23A, $21A<br />
dc.w $1FB, $1DF, $1C4, $1AB, $193, $17D, $167, $153, $140<br />
dc.w $12E, $11D, $10D, $FE, $EF, $E2, $D6, $C9, $BE, $B4<br />
dc.w $A9, $A0, $97, $8F, $87, $7F, $78, $71, $6B, $65<br />
dc.w $5F, $5A, $55, $50, $4B, $47, $43, $40, $3C, $39<br />
dc.w $36, $33, $30, $2D, $2B, $28, $26, $24, $22, $20<br />
dc.w $1F, $1D, $1B, $1A, $18, $17, $16, $15, $13, $12<br />
dc.w $11, 0<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_72A5A: ; XREF: sub_71C4E; sub_71CEC; sub_72878<br />
subi.w #$E0,d5<br />
lsl.w #2,d5<br />
jmp loc_72A64(pc,d5.w)<br />
; End of function sub_72A5A<br />
<br />
; ===========================================================================<br />
<br />
loc_72A64:<br />
bra.w loc_72ACC<br />
; ===========================================================================<br />
bra.w loc_72AEC<br />
; ===========================================================================<br />
bra.w loc_72AF2<br />
; ===========================================================================<br />
bra.w loc_72AF8<br />
; ===========================================================================<br />
bra.w loc_72B14<br />
; ===========================================================================<br />
bra.w loc_72B9E<br />
; ===========================================================================<br />
bra.w loc_72BA4<br />
; ===========================================================================<br />
bra.w loc_72BAE<br />
; ===========================================================================<br />
bra.w loc_72BB4<br />
; ===========================================================================<br />
bra.w loc_72BBE<br />
; ===========================================================================<br />
bra.w loc_72BC6<br />
; ===========================================================================<br />
bra.w loc_72BD0<br />
; ===========================================================================<br />
bra.w loc_72BE6<br />
; ===========================================================================<br />
bra.w loc_72BEE<br />
; ===========================================================================<br />
bra.w loc_72BF4<br />
; ===========================================================================<br />
bra.w loc_72C26<br />
; ===========================================================================<br />
bra.w loc_72D30<br />
; ===========================================================================<br />
bra.w loc_72D52<br />
; ===========================================================================<br />
bra.w loc_72D58<br />
; ===========================================================================<br />
bra.w loc_72E06<br />
; ===========================================================================<br />
bra.w loc_72E20<br />
; ===========================================================================<br />
bra.w loc_72E26<br />
; ===========================================================================<br />
bra.w loc_72E2C<br />
; ===========================================================================<br />
bra.w loc_72E38<br />
; ===========================================================================<br />
bra.w loc_72E52<br />
; ===========================================================================<br />
bra.w loc_72E64<br />
; ===========================================================================<br />
<br />
loc_72ACC: ; XREF: loc_72A64<br />
move.b (a4)+,d1<br />
tst.b 1(a5)<br />
bmi.s locret_72AEA<br />
move.b $A(a5),d0<br />
andi.b #$37,d0<br />
or.b d0,d1<br />
move.b d1,$A(a5)<br />
move.b #$B4,d0<br />
bra.w loc_72716<br />
; ===========================================================================<br />
<br />
locret_72AEA:<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72AEC: ; XREF: loc_72A64<br />
move.b (a4)+,$1E(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72AF2: ; XREF: loc_72A64<br />
move.b (a4)+,7(a6)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72AF8: ; XREF: loc_72A64<br />
moveq #0,d0<br />
move.b $D(a5),d0<br />
movea.l (a5,d0.w),a4<br />
move.l #0,(a5,d0.w)<br />
addq.w #2,a4<br />
addq.b #4,d0<br />
move.b d0,$D(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72B14: ; XREF: loc_72A64<br />
movea.l a6,a0<br />
lea $3A0(a6),a1<br />
move.w #$87,d0<br />
<br />
loc_72B1E:<br />
move.l (a1)+,(a0)+<br />
dbf d0,loc_72B1E<br />
<br />
bset #2,$40(a6)<br />
movea.l a5,a3<br />
move.b #$28,d6<br />
sub.b $26(a6),d6<br />
moveq #5,d7<br />
lea $70(a6),a5<br />
<br />
loc_72B3A:<br />
btst #7,(a5)<br />
beq.s loc_72B5C<br />
bset #1,(a5)<br />
add.b d6,9(a5)<br />
btst #2,(a5)<br />
bne.s loc_72B5C<br />
moveq #0,d0<br />
move.b $B(a5),d0<br />
movea.l $18(a6),a1<br />
jsr sub_72C4E(pc)<br />
<br />
loc_72B5C:<br />
adda.w #$30,a5<br />
dbf d7,loc_72B3A<br />
<br />
moveq #2,d7<br />
<br />
loc_72B66:<br />
btst #7,(a5)<br />
beq.s loc_72B78<br />
bset #1,(a5)<br />
jsr sub_729A0(pc)<br />
add.b d6,9(a5)<br />
<br />
loc_72B78:<br />
adda.w #$30,a5<br />
dbf d7,loc_72B66<br />
movea.l a3,a5<br />
move.b #$80,$24(a6)<br />
move.b #$28,$26(a6)<br />
clr.b $27(a6)<br />
move.w #0,($A11100).l<br />
addq.w #8,sp<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72B9E: ; XREF: loc_72A64<br />
move.b (a4)+,2(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72BA4: ; XREF: loc_72A64<br />
move.b (a4)+,d0<br />
add.b d0,9(a5)<br />
bra.w sub_72CB4<br />
; ===========================================================================<br />
<br />
loc_72BAE: ; XREF: loc_72A64<br />
bset #4,(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72BB4: ; XREF: loc_72A64<br />
move.b (a4),$12(a5)<br />
move.b (a4)+,$13(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72BBE: ; XREF: loc_72A64<br />
move.b (a4)+,d0<br />
add.b d0,8(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72BC6: ; XREF: loc_72A64<br />
move.b (a4),2(a6)<br />
move.b (a4)+,1(a6)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72BD0: ; XREF: loc_72A64<br />
lea $40(a6),a0<br />
move.b (a4)+,d0<br />
moveq #$30,d1<br />
moveq #9,d2<br />
<br />
loc_72BDA:<br />
move.b d0,2(a0)<br />
adda.w d1,a0<br />
dbf d2,loc_72BDA<br />
<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72BE6: ; XREF: loc_72A64<br />
move.b (a4)+,d0<br />
add.b d0,9(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72BEE: ; XREF: loc_72A64<br />
clr.b $2C(a6)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72BF4: ; XREF: loc_72A64<br />
bclr #7,(a5)<br />
bclr #4,(a5)<br />
jsr sub_726FE(pc)<br />
tst.b $250(a6)<br />
bmi.s loc_72C22<br />
movea.l a5,a3<br />
lea $100(a6),a5<br />
movea.l $18(a6),a1<br />
bclr #2,(a5)<br />
bset #1,(a5)<br />
move.b $B(a5),d0<br />
jsr sub_72C4E(pc)<br />
movea.l a3,a5<br />
<br />
loc_72C22:<br />
addq.w #8,sp<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72C26: ; XREF: loc_72A64<br />
moveq #0,d0<br />
move.b (a4)+,d0<br />
move.b d0,$B(a5)<br />
btst #2,(a5)<br />
bne.w locret_72CAA<br />
movea.l $18(a6),a1<br />
tst.b $E(a6)<br />
beq.s sub_72C4E<br />
movea.l $20(a5),a1<br />
tst.b $E(a6)<br />
bmi.s sub_72C4E<br />
movea.l $20(a6),a1<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_72C4E: ; XREF: Snd_FadeOut1; et al<br />
subq.w #1,d0<br />
bmi.s loc_72C5C<br />
move.w #$19,d1<br />
<br />
loc_72C56:<br />
adda.w d1,a1<br />
dbf d0,loc_72C56<br />
<br />
loc_72C5C:<br />
move.b (a1)+,d1<br />
move.b d1,$1F(a5)<br />
move.b d1,d4<br />
move.b #$B0,d0<br />
jsr sub_72722(pc)<br />
lea byte_72D18(pc),a2<br />
moveq #$13,d3<br />
<br />
loc_72C72:<br />
move.b (a2)+,d0<br />
move.b (a1)+,d1<br />
jsr sub_72722(pc)<br />
dbf d3,loc_72C72<br />
moveq #3,d5<br />
andi.w #7,d4<br />
move.b byte_72CAC(pc,d4.w),d4<br />
move.b 9(a5),d3<br />
<br />
loc_72C8C:<br />
move.b (a2)+,d0<br />
move.b (a1)+,d1<br />
lsr.b #1,d4<br />
bcc.s loc_72C96<br />
add.b d3,d1<br />
<br />
loc_72C96:<br />
jsr sub_72722(pc)<br />
dbf d5,loc_72C8C<br />
move.b #$B4,d0<br />
move.b $A(a5),d1<br />
jsr sub_72722(pc)<br />
<br />
locret_72CAA:<br />
rts <br />
; End of function sub_72C4E<br />
<br />
; ===========================================================================<br />
byte_72CAC: dc.b 8, 8, 8, 8, $A, $E, $E, $F<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_72CB4: ; XREF: sub_72504; sub_7267C; loc_72BA4<br />
btst #2,(a5)<br />
bne.s locret_72D16<br />
moveq #0,d0<br />
move.b $B(a5),d0<br />
movea.l $18(a6),a1<br />
tst.b $E(a6)<br />
beq.s loc_72CD8<br />
movea.l $20(a6),a1<br />
tst.b $E(a6)<br />
bmi.s loc_72CD8<br />
movea.l $20(a6),a1<br />
<br />
loc_72CD8:<br />
subq.w #1,d0<br />
bmi.s loc_72CE6<br />
move.w #$19,d1<br />
<br />
loc_72CE0:<br />
adda.w d1,a1<br />
dbf d0,loc_72CE0<br />
<br />
loc_72CE6:<br />
adda.w #$15,a1<br />
lea byte_72D2C(pc),a2<br />
move.b $1F(a5),d0<br />
andi.w #7,d0<br />
move.b byte_72CAC(pc,d0.w),d4<br />
move.b 9(a5),d3<br />
bmi.s locret_72D16<br />
moveq #3,d5<br />
<br />
loc_72D02:<br />
move.b (a2)+,d0<br />
move.b (a1)+,d1<br />
lsr.b #1,d4<br />
bcc.s loc_72D12<br />
add.b d3,d1<br />
bcs.s loc_72D12<br />
jsr sub_72722(pc)<br />
<br />
loc_72D12:<br />
dbf d5,loc_72D02<br />
<br />
locret_72D16:<br />
rts <br />
; End of function sub_72CB4<br />
<br />
; ===========================================================================<br />
byte_72D18: dc.b $30, $38, $34, $3C, $50, $58, $54, $5C, $60, $68<br />
dc.b $64, $6C, $70, $78, $74, $7C, $80, $88, $84, $8C<br />
byte_72D2C: dc.b $40, $48, $44, $4C<br />
; ===========================================================================<br />
<br />
loc_72D30: ; XREF: loc_72A64<br />
bset #3,(a5)<br />
move.l a4,$14(a5)<br />
move.b (a4)+,$18(a5)<br />
move.b (a4)+,$19(a5)<br />
move.b (a4)+,$1A(a5)<br />
move.b (a4)+,d0<br />
lsr.b #1,d0<br />
move.b d0,$1B(a5)<br />
clr.w $1C(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72D52: ; XREF: loc_72A64<br />
bset #3,(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72D58: ; XREF: loc_72A64<br />
bclr #7,(a5)<br />
bclr #4,(a5)<br />
tst.b 1(a5)<br />
bmi.s loc_72D74<br />
tst.b 8(a6)<br />
bmi.w loc_72E02<br />
jsr sub_726FE(pc)<br />
bra.s loc_72D78<br />
; ===========================================================================<br />
<br />
loc_72D74:<br />
jsr sub_729A0(pc)<br />
<br />
loc_72D78:<br />
tst.b $E(a6)<br />
bpl.w loc_72E02<br />
clr.b 0(a6)<br />
moveq #0,d0<br />
move.b 1(a5),d0<br />
bmi.s loc_72DCC<br />
lea dword_722CC(pc),a0<br />
movea.l a5,a3<br />
cmpi.b #4,d0<br />
bne.s loc_72DA8<br />
tst.b $340(a6)<br />
bpl.s loc_72DA8<br />
lea $340(a6),a5<br />
movea.l $20(a6),a1<br />
bra.s loc_72DB8<br />
; ===========================================================================<br />
<br />
loc_72DA8:<br />
subq.b #2,d0<br />
lsl.b #2,d0<br />
movea.l (a0,d0.w),a5<br />
tst.b (a5)<br />
bpl.s loc_72DC8<br />
movea.l $18(a6),a1<br />
<br />
loc_72DB8:<br />
bclr #2,(a5)<br />
bset #1,(a5)<br />
move.b $B(a5),d0<br />
jsr sub_72C4E(pc)<br />
<br />
loc_72DC8:<br />
movea.l a3,a5<br />
bra.s loc_72E02<br />
; ===========================================================================<br />
<br />
loc_72DCC:<br />
lea $370(a6),a0<br />
tst.b (a0)<br />
bpl.s loc_72DE0<br />
cmpi.b #$E0,d0<br />
beq.s loc_72DEA<br />
cmpi.b #$C0,d0<br />
beq.s loc_72DEA<br />
<br />
loc_72DE0:<br />
lea dword_722CC(pc),a0<br />
lsr.b #3,d0<br />
movea.l (a0,d0.w),a0<br />
<br />
loc_72DEA:<br />
bclr #2,(a0)<br />
bset #1,(a0)<br />
cmpi.b #$E0,1(a0)<br />
bne.s loc_72E02<br />
move.b $1F(a0),($C00011).l<br />
<br />
loc_72E02:<br />
addq.w #8,sp<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72E06: ; XREF: loc_72A64<br />
move.b #$E0,1(a5)<br />
move.b (a4)+,$1F(a5)<br />
btst #2,(a5)<br />
bne.s locret_72E1E<br />
move.b -1(a4),($C00011).l<br />
<br />
locret_72E1E:<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72E20: ; XREF: loc_72A64<br />
bclr #3,(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72E26: ; XREF: loc_72A64<br />
move.b (a4)+,$B(a5)<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72E2C: ; XREF: loc_72A64<br />
move.b (a4)+,d0<br />
lsl.w #8,d0<br />
move.b (a4)+,d0<br />
adda.w d0,a4<br />
subq.w #1,a4<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72E38: ; XREF: loc_72A64<br />
moveq #0,d0<br />
move.b (a4)+,d0<br />
move.b (a4)+,d1<br />
tst.b $24(a5,d0.w)<br />
bne.s loc_72E48<br />
move.b d1,$24(a5,d0.w)<br />
<br />
loc_72E48:<br />
subq.b #1,$24(a5,d0.w)<br />
bne.s loc_72E2C<br />
addq.w #2,a4<br />
rts <br />
; ===========================================================================<br />
<br />
loc_72E52: ; XREF: loc_72A64<br />
moveq #0,d0<br />
move.b $D(a5),d0<br />
subq.b #4,d0<br />
move.l a4,(a5,d0.w)<br />
move.b d0,$D(a5)<br />
bra.s loc_72E2C<br />
; ===========================================================================<br />
<br />
loc_72E64: ; XREF: loc_72A64<br />
move.b #$88,d0<br />
move.b #$F,d1<br />
jsr sub_7272E(pc)<br />
move.b #$8C,d0<br />
move.b #$F,d1<br />
bra.w sub_7272E<br />
; ===========================================================================<br />
Kos_Z80: binclude sound\z80_1.bin<br />
dc.w ((SegaPCM&$FF)<<8)+((SegaPCM&$FF00)>>8)<br />
dc.b $21<br />
dc.w (((EndOfRom-SegaPCM)&$FF)<<8)+(((EndOfRom-SegaPCM)&$FF00)>>8)<br />
binclude sound\z80_2.bin<br />
align 2<br />
Music81: binclude sound\music81.bin<br />
align 2<br />
Music82: binclude sound\music82.bin<br />
align 2<br />
Music83: binclude sound\music83.bin<br />
align 2<br />
Music84: binclude sound\music84.bin<br />
align 2<br />
Music85: binclude sound\music85.bin<br />
align 2<br />
Music86: binclude sound\music86.bin<br />
align 2<br />
Music87: binclude sound\music87.bin<br />
align 2<br />
Music88: binclude sound\music88.bin<br />
align 2<br />
Music89: binclude sound\music89.bin<br />
align 2<br />
Music8A: binclude sound\music8A.bin<br />
align 2<br />
Music8B: binclude sound\music8B.bin<br />
align 2<br />
Music8C: binclude sound\music8C.bin<br />
align 2<br />
Music8D: binclude sound\music8D.bin<br />
align 2<br />
Music8E: binclude sound\music8E.bin<br />
align 2<br />
Music8F: binclude sound\music8F.bin<br />
align 2<br />
Music90: binclude sound\music90.bin<br />
align 2<br />
Music91: binclude sound\music91.bin<br />
align 2<br />
Music92: binclude sound\music92.bin<br />
align 2<br />
Music93: binclude sound\music93.bin<br />
align 2<br />
; ---------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ---------------------------------------------------------------------------<br />
SoundIndex: dc.l SoundA0, SoundA1, SoundA2<br />
dc.l SoundA3, SoundA4, SoundA5<br />
dc.l SoundA6, SoundA7, SoundA8<br />
dc.l SoundA9, SoundAA, SoundAB<br />
dc.l SoundAC, SoundAD, SoundAE<br />
dc.l SoundAF, SoundB0, SoundB1<br />
dc.l SoundB2, SoundB3, SoundB4<br />
dc.l SoundB5, SoundB6, SoundB7<br />
dc.l SoundB8, SoundB9, SoundBA<br />
dc.l SoundBB, SoundBC, SoundBD<br />
dc.l SoundBE, SoundBF, SoundC0<br />
dc.l SoundC1, SoundC2, SoundC3<br />
dc.l SoundC4, SoundC5, SoundC6<br />
dc.l SoundC7, SoundC8, SoundC9<br />
dc.l SoundCA, SoundCB, SoundCC<br />
dc.l SoundCD, SoundCE, SoundCF<br />
SoundD0Index: dc.l SoundD0<br />
SoundA0: binclude sound\soundA0.bin<br />
align 2<br />
SoundA1: binclude sound\soundA1.bin<br />
align 2<br />
SoundA2: binclude sound\soundA2.bin<br />
align 2<br />
SoundA3: binclude sound\soundA3.bin<br />
align 2<br />
SoundA4: binclude sound\soundA4.bin<br />
align 2<br />
SoundA5: binclude sound\soundA5.bin<br />
align 2<br />
SoundA6: binclude sound\soundA6.bin<br />
align 2<br />
SoundA7: binclude sound\soundA7.bin<br />
align 2<br />
SoundA8: binclude sound\soundA8.bin<br />
align 2<br />
SoundA9: binclude sound\soundA9.bin<br />
align 2<br />
SoundAA: binclude sound\soundAA.bin<br />
align 2<br />
SoundAB: binclude sound\soundAB.bin<br />
align 2<br />
SoundAC: binclude sound\soundAC.bin<br />
align 2<br />
SoundAD: binclude sound\soundAD.bin<br />
align 2<br />
SoundAE: binclude sound\soundAE.bin<br />
align 2<br />
SoundAF: binclude sound\soundAF.bin<br />
align 2<br />
SoundB0: binclude sound\soundB0.bin<br />
align 2<br />
SoundB1: binclude sound\soundB1.bin<br />
align 2<br />
SoundB2: binclude sound\soundB2.bin<br />
align 2<br />
SoundB3: binclude sound\soundB3.bin<br />
align 2<br />
SoundB4: binclude sound\soundB4.bin<br />
align 2<br />
SoundB5: binclude sound\soundB5.bin<br />
align 2<br />
SoundB6: binclude sound\soundB6.bin<br />
align 2<br />
SoundB7: binclude sound\soundB7.bin<br />
align 2<br />
SoundB8: binclude sound\soundB8.bin<br />
align 2<br />
SoundB9: binclude sound\soundB9.bin<br />
align 2<br />
SoundBA: binclude sound\soundBA.bin<br />
align 2<br />
SoundBB: binclude sound\soundBB.bin<br />
align 2<br />
SoundBC: binclude sound\soundBC.bin<br />
align 2<br />
SoundBD: binclude sound\soundBD.bin<br />
align 2<br />
SoundBE: binclude sound\soundBE.bin<br />
align 2<br />
SoundBF: binclude sound\soundBF.bin<br />
align 2<br />
SoundC0: binclude sound\soundC0.bin<br />
align 2<br />
SoundC1: binclude sound\soundC1.bin<br />
align 2<br />
SoundC2: binclude sound\soundC2.bin<br />
align 2<br />
SoundC3: binclude sound\soundC3.bin<br />
align 2<br />
SoundC4: binclude sound\soundC4.bin<br />
align 2<br />
SoundC5: binclude sound\soundC5.bin<br />
align 2<br />
SoundC6: binclude sound\soundC6.bin<br />
align 2<br />
SoundC7: binclude sound\soundC7.bin<br />
align 2<br />
SoundC8: binclude sound\soundC8.bin<br />
align 2<br />
SoundC9: binclude sound\soundC9.bin<br />
align 2<br />
SoundCA: binclude sound\soundCA.bin<br />
align 2<br />
SoundCB: binclude sound\soundCB.bin<br />
align 2<br />
SoundCC: binclude sound\soundCC.bin<br />
align 2<br />
SoundCD: binclude sound\soundCD.bin<br />
align 2<br />
SoundCE: binclude sound\soundCE.bin<br />
align 2<br />
SoundCF: binclude sound\soundCF.bin<br />
align 2<br />
SoundD0: binclude sound\soundD0.bin<br />
align 2<br />
SegaPCM: binclude sound\segapcm.bin<br />
align 2<br />
</asm><br />
and replace it completely with:<br />
<asm><br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MB_Ptr equ (Mini_Boss_Snd&$FFFF)|$8000 ; $C71A0<br />
FB_Ptr equ (Final_Boss_Snd&$FFFF)|$8000 ; $C7A61<br />
AIz1_Ptr equ (Angel_Island_1_Snd&$FFFF)|$8000 ; $C8000<br />
AIz2_Ptr equ (Angel_Island_2_Snd&$FFFF)|$8000 ; $C9B6D<br />
HCz1_Ptr equ (Hidrocity_1_Snd&$FFFF)|$8000 ; $CB0BC<br />
HCz2_Ptr equ (Hidrocity_2_Snd&$FFFF)|$8000 ; $CC0C6<br />
MGz1_Ptr equ (Marble_Garden_1_Snd&$FFFF)|$8000 ; $CD364<br />
MGz2_Ptr equ (Marble_Garden_2_Snd&$FFFF)|$8000 ; $CD97B<br />
CNz2_Ptr equ (Carnival_Night_2_Snd&$FFFF)|$8000 ; $CDDA9<br />
CNz1_Ptr equ (Carnival_Night_1_Snd&$FFFF)|$8000 ; $CE48F<br />
FBz1_Ptr equ (Flying_Battery_1_Snd&$FFFF)|$8000 ; $CEBF1<br />
FBz2_Ptr equ (Flying_Battery_2_Snd&$FFFF)|$8000 ; $CF189<br />
TDz_Ptr equ (The_Doomsday_Snd&$FFFF)|$8000 ; $CF6F0<br />
Iz2_Ptr equ (Icecap_2_Snd&$FFFF)|$8000 ; $D0000<br />
Iz1_Ptr equ (Icecap_1_Snd&$FFFF)|$8000 ; $D06AA<br />
LBz2_Ptr equ (Launch_Base_2_Snd&$FFFF)|$8000 ; $D0DC8<br />
LBz1_Ptr equ (Launch_Base_1_Snd&$FFFF)|$8000 ; $D1345<br />
MHz1_Ptr equ (Mushroom_Hill_1_Snd&$FFFF)|$8000 ; $D17A7<br />
MHz2_Ptr equ (Mushroom_Hill_2_Snd&$FFFF)|$8000 ; $D1DAF<br />
Sz1_Ptr equ (Sandopolis_1_Snd&$FFFF)|$8000 ; $D2331<br />
Sz2_Ptr equ (Sandopolis_2_Snd&$FFFF)|$8000 ; $D299B<br />
LRz1_Ptr equ (Lava_Reef_1_Snd&$FFFF)|$8000 ; $D2F8E<br />
LRz2_Ptr equ (Lava_Reef_2_Snd&$FFFF)|$8000 ; $D399C<br />
SCz_Ptr equ (Sky_Sanctuary_Snd&$FFFF)|$8000 ; $D4B29<br />
DEz1_Ptr equ (Death_Egg_1_Snd&$FFFF)|$8000 ; $D4F4F<br />
DEz2_Ptr equ (Death_Egg_2_Snd&$FFFF)|$8000 ; $D543A<br />
MB_SK_Ptr equ (Mini_Boss_SK_Snd&$FFFF)|$8000 ; $D584C<br />
Boss_Ptr equ (Boss_Snd&$FFFF)|$8000 ; $D5B7C<br />
GS_BS_Ptr equ (Glowing_Spheres_Bonus_Stage_snd&$FFFF)|$8000 ; $D6078<br />
SS_Ptr equ (Special_Stage_Snd&$FFFF)|$8000 ; $D65DB<br />
LR_Ptr equ (Level_Results_Snd&$FFFF)|$8000 ; $D6E73<br />
Menu_Ptr equ (Menu_Snd&$FFFF)|$8000 ; $D7027<br />
SM_BS_Ptr equ (Slot_Machine_Bonus_Stage_snd&$FFFF)|$8000 ; $D8000<br />
GBM_BS_Ptr equ (Gum_Ball_Machine_Bonus_Stage_snd&$FFFF)|$8000 ; $D8AE8<br />
KTE_Ptr equ (Knuckles_Theme_Snd&$FFFF)|$8000 ; $D97FD<br />
ALz_Ptr equ (Azure_Lake_Snd&$FFFF)|$8000 ; $D99F7<br />
BPz_Ptr equ (Balloon_Park_Snd&$FFFF)|$8000 ; $DA4FD<br />
DPz_Ptr equ (Desert_Palace_Snd&$FFFF)|$8000 ; $DB0EC<br />
CGz_Ptr equ (Chrome_Gadget_Snd&$FFFF)|$8000 ; $DC324<br />
EMz_Ptr equ (Endless_Mine_Snd&$FFFF)|$8000 ; $DDA47<br />
TS_Ptr equ (Title_Screen_Snd&$FFFF)|$8000 ; $DE18F<br />
Credits_Ptr equ (Credits_Snd&$FFFF)|$8000 ; $DE587<br />
TGOvr_Ptr equ (Time_Game_Over_Snd&$FFFF)|$8000 ; $DEA20<br />
Continue_Ptr equ (Continue_Snd&$FFFF)|$8000 ; $DEC7B<br />
_1_Up_Ptr equ (Extra_Life_Snd&$FFFF)|$8000 ; $DF095<br />
Emerald_Ptr equ (Emerald_Snd&$FFFF)|$8000 ; $DF298<br />
Invcblty_Ptr equ (Invencibility_Snd&$FFFF)|$8000 ; $DF364<br />
_2p_Menu_Ptr equ (Competition_Menu_Snd&$FFFF)|$8000 ; $DF5E4<br />
UT_Ptr equ (Underwater_Timming_Snd&$FFFF)|$8000 ; $DFABE<br />
PbS_Ptr equ (Presented_by_SEGA_Snd&$FFFF)|$8000 ; $DFBFE<br />
<br />
Sfx_34_Ptr equ (Sfx_34_Snd&$FFFF)|$8000 ; $FDE30<br />
Sfx_35_Ptr equ (Sfx_35_Snd&$FFFF)|$8000 ; $FDE5E<br />
Sfx_36_Ptr equ (Sfx_36_Snd&$FFFF)|$8000 ; $FDE6F<br />
Sfx_37_Ptr equ (Sfx_37_Snd&$FFFF)|$8000 ; $FDEA1<br />
Sfx_38_Ptr equ (Sfx_38_Snd&$FFFF)|$8000 ; $FDEC5<br />
Sfx_39_Ptr equ (Sfx_39_Snd&$FFFF)|$8000 ; $FDEF4<br />
Sfx_3A_Ptr equ (Sfx_3A_Snd&$FFFF)|$8000 ; $FDF2A<br />
Sfx_3B_Ptr equ (Sfx_3B_Snd&$FFFF)|$8000 ; $FDF6B<br />
Sfx_3C_Ptr equ (Sfx_3C_Snd&$FFFF)|$8000 ; $FDF96<br />
Sfx_3D_Ptr equ (Sfx_3D_Snd&$FFFF)|$8000 ; $FDFE5<br />
Sfx_3E_Ptr equ (Sfx_3E_Snd&$FFFF)|$8000 ; $FE023<br />
Sfx_3F_Ptr equ (Sfx_3F_Snd&$FFFF)|$8000 ; $FE05D<br />
Sfx_40_Ptr equ (Sfx_40_Snd&$FFFF)|$8000 ; $FE088<br />
Sfx_41_Ptr equ (Sfx_41_Snd&$FFFF)|$8000 ; $FE0AB<br />
Sfx_42_Ptr equ (Sfx_42_Snd&$FFFF)|$8000 ; $FE0CE<br />
Sfx_43_Ptr equ (Sfx_43_Snd&$FFFF)|$8000 ; $FE0F1<br />
Sfx_44_Ptr equ (Sfx_44_Snd&$FFFF)|$8000 ; $FE109<br />
Sfx_45_Ptr equ (Sfx_45_Snd&$FFFF)|$8000 ; $FE122<br />
Sfx_46_Ptr equ (Sfx_46_Snd&$FFFF)|$8000 ; $FE14F<br />
Sfx_47_Ptr equ (Sfx_47_Snd&$FFFF)|$8000 ; $FE177<br />
Sfx_48_Ptr equ (Sfx_48_Snd&$FFFF)|$8000 ; $FE1A4<br />
Sfx_49_Ptr equ (Sfx_49_Snd&$FFFF)|$8000 ; $FE1C4<br />
Sfx_4A_Ptr equ (Sfx_4A_Snd&$FFFF)|$8000 ; $FE1DE<br />
Sfx_4B_Ptr equ (Sfx_4B_Snd&$FFFF)|$8000 ; $FE206<br />
Sfx_4C_Ptr equ (Sfx_4C_Snd&$FFFF)|$8000 ; $FE22E<br />
Sfx_4D_Ptr equ (Sfx_4D_Snd&$FFFF)|$8000 ; $FE278<br />
Sfx_4E_Ptr equ (Sfx_4E_Snd&$FFFF)|$8000 ; $FE2A2<br />
Sfx_4F_Ptr equ (Sfx_4F_Snd&$FFFF)|$8000 ; $FE2CF<br />
Sfx_50_Ptr equ (Sfx_50_Snd&$FFFF)|$8000 ; $FE313<br />
Sfx_51_Ptr equ (Sfx_51_Snd&$FFFF)|$8000 ; $FE322<br />
Sfx_52_Ptr equ (Sfx_52_Snd&$FFFF)|$8000 ; $FE35A<br />
Sfx_53_Ptr equ (Sfx_53_Snd&$FFFF)|$8000 ; $FE38B<br />
Sfx_54_Ptr equ (Sfx_54_Snd&$FFFF)|$8000 ; $FE3A8<br />
Sfx_55_Ptr equ (Sfx_55_Snd&$FFFF)|$8000 ; $FE3E8<br />
Sfx_56_Ptr equ (Sfx_56_Snd&$FFFF)|$8000 ; $FE42B<br />
Sfx_57_Ptr equ (Sfx_57_Snd&$FFFF)|$8000 ; $FE453<br />
Sfx_58_Ptr equ (Sfx_58_Snd&$FFFF)|$8000 ; $FE463<br />
Sfx_59_Ptr equ (Sfx_59_Snd&$FFFF)|$8000 ; $FE481<br />
Sfx_5A_Ptr equ (Sfx_5A_Snd&$FFFF)|$8000 ; $FE49A<br />
Sfx_5B_Ptr equ (Sfx_5B_Snd&$FFFF)|$8000 ; $FE4F6<br />
Sfx_5C_Ptr equ (Sfx_5C_Snd&$FFFF)|$8000 ; $FE523<br />
Sfx_5D_Ptr equ (Sfx_5D_Snd&$FFFF)|$8000 ; $FE530<br />
Sfx_5E_Ptr equ (Sfx_5E_Snd&$FFFF)|$8000 ; $FE558<br />
Sfx_5F_Ptr equ (Sfx_5F_Snd&$FFFF)|$8000 ; $FE581<br />
Sfx_60_Ptr equ (Sfx_60_Snd&$FFFF)|$8000 ; $FE5B2<br />
Sfx_61_Ptr equ (Sfx_61_Snd&$FFFF)|$8000 ; $FE5DA<br />
Sfx_62_Ptr equ (Sfx_62_Snd&$FFFF)|$8000 ; $FE61B<br />
Sfx_63_Ptr equ (Sfx_63_Snd&$FFFF)|$8000 ; $FE64C<br />
Sfx_64_Ptr equ (Sfx_64_Snd&$FFFF)|$8000 ; $FE662<br />
Sfx_65_Ptr equ (Sfx_65_Snd&$FFFF)|$8000 ; $FE68C<br />
Sfx_66_Ptr equ (Sfx_66_Snd&$FFFF)|$8000 ; $FE6AB<br />
Sfx_67_Ptr equ (Sfx_67_Snd&$FFFF)|$8000 ; $FE6E1<br />
Sfx_68_Ptr equ (Sfx_68_Snd&$FFFF)|$8000 ; $FE730<br />
Sfx_69_Ptr equ (Sfx_69_Snd&$FFFF)|$8000 ; $FE75C<br />
Sfx_6A_Ptr equ (Sfx_6A_Snd&$FFFF)|$8000 ; $FE7B0<br />
Sfx_6B_Ptr equ (Sfx_6B_Snd&$FFFF)|$8000 ; $FE7DD<br />
Sfx_6C_Ptr equ (Sfx_6C_Snd&$FFFF)|$8000 ; $FE811<br />
Sfx_6D_Ptr equ (Sfx_6D_Snd&$FFFF)|$8000 ; $FE823<br />
Sfx_6E_Ptr equ (Sfx_6E_Snd&$FFFF)|$8000 ; $FE833<br />
Sfx_6F_Ptr equ (Sfx_6F_Snd&$FFFF)|$8000 ; $FE852<br />
Sfx_70_Ptr equ (Sfx_70_Snd&$FFFF)|$8000 ; $FE886<br />
Sfx_71_Ptr equ (Sfx_71_Snd&$FFFF)|$8000 ; $FE896<br />
Sfx_72_Ptr equ (Sfx_72_Snd&$FFFF)|$8000 ; $FE8E0<br />
Sfx_73_Ptr equ (Sfx_73_Snd&$FFFF)|$8000 ; $FE8EA<br />
Sfx_74_Ptr equ (Sfx_74_Snd&$FFFF)|$8000 ; $FE917<br />
Sfx_75_Ptr equ (Sfx_75_Snd&$FFFF)|$8000 ; $FE94B<br />
Sfx_76_Ptr equ (Sfx_76_Snd&$FFFF)|$8000 ; $FE978<br />
Sfx_77_Ptr equ (Sfx_77_Snd&$FFFF)|$8000 ; $FE9A7<br />
Sfx_78_Ptr equ (Sfx_78_Snd&$FFFF)|$8000 ; $FE9D1<br />
Sfx_79_Ptr equ (Sfx_79_Snd&$FFFF)|$8000 ; $FEA1B<br />
Sfx_7A_Ptr equ (Sfx_7A_Snd&$FFFF)|$8000 ; $FEA48<br />
Sfx_7B_Ptr equ (Sfx_7B_Snd&$FFFF)|$8000 ; $FEA93<br />
Sfx_7C_Ptr equ (Sfx_7C_Snd&$FFFF)|$8000 ; $FEAC7<br />
Sfx_7D_Ptr equ (Sfx_7D_Snd&$FFFF)|$8000 ; $FEAF7<br />
Sfx_7E_Ptr equ (Sfx_7E_Snd&$FFFF)|$8000 ; $FEB28<br />
Sfx_7F_Ptr equ (Sfx_7F_Snd&$FFFF)|$8000 ; $FEB55<br />
Sfx_80_Ptr equ (Sfx_80_Snd&$FFFF)|$8000 ; $FEB6D<br />
Sfx_81_Ptr equ (Sfx_81_Snd&$FFFF)|$8000 ; $FEB8B<br />
Sfx_82_Ptr equ (Sfx_82_Snd&$FFFF)|$8000 ; $FEBBA<br />
Sfx_83_Ptr equ (Sfx_83_Snd&$FFFF)|$8000 ; $FEC05<br />
Sfx_84_Ptr equ (Sfx_84_Snd&$FFFF)|$8000 ; $FEC32<br />
Sfx_85_Ptr equ (Sfx_85_Snd&$FFFF)|$8000 ; $FEC7E<br />
Sfx_86_Ptr equ (Sfx_86_Snd&$FFFF)|$8000 ; $FECAB<br />
Sfx_87_Ptr equ (Sfx_87_Snd&$FFFF)|$8000 ; $FECD8<br />
Sfx_88_Ptr equ (Sfx_88_Snd&$FFFF)|$8000 ; $FED05<br />
Sfx_89_Ptr equ (Sfx_89_Snd&$FFFF)|$8000 ; $FED3B<br />
Sfx_8A_Ptr equ (Sfx_8A_Snd&$FFFF)|$8000 ; $FED68<br />
Sfx_8B_Ptr equ (Sfx_8B_Snd&$FFFF)|$8000 ; $FED75<br />
Sfx_8C_Ptr equ (Sfx_8C_Snd&$FFFF)|$8000 ; $FEDA9<br />
Sfx_8D_Ptr equ (Sfx_8D_Snd&$FFFF)|$8000 ; $FEDDF<br />
Sfx_8E_Ptr equ (Sfx_8E_Snd&$FFFF)|$8000 ; $FEE10<br />
Sfx_8F_Ptr equ (Sfx_8F_Snd&$FFFF)|$8000 ; $FEE2A<br />
Sfx_90_Ptr equ (Sfx_90_Snd&$FFFF)|$8000 ; $FEE5B<br />
Sfx_91_Ptr equ (Sfx_91_Snd&$FFFF)|$8000 ; $FEE91<br />
Sfx_92_Ptr equ (Sfx_92_Snd&$FFFF)|$8000 ; $FEEC3<br />
Sfx_93_Ptr equ (Sfx_93_Snd&$FFFF)|$8000 ; $FEEF9<br />
Sfx_94_Ptr equ (Sfx_94_Snd&$FFFF)|$8000 ; $FEF2D<br />
Sfx_95_Ptr equ (Sfx_95_Snd&$FFFF)|$8000 ; $FEF77<br />
Sfx_96_Ptr equ (Sfx_96_Snd&$FFFF)|$8000 ; $FEFA6<br />
Sfx_97_Ptr equ (Sfx_97_Snd&$FFFF)|$8000 ; $FEFD5<br />
Sfx_98_Ptr equ (Sfx_98_Snd&$FFFF)|$8000 ; $FF009<br />
Sfx_99_Ptr equ (Sfx_99_Snd&$FFFF)|$8000 ; $FF01C<br />
Sfx_9A_Ptr equ (Sfx_9A_Snd&$FFFF)|$8000 ; $FF068<br />
Sfx_9B_Ptr equ (Sfx_9B_Snd&$FFFF)|$8000 ; $FF090<br />
Sfx_9C_Ptr equ (Sfx_9C_Snd&$FFFF)|$8000 ; $FF0AF<br />
Sfx_9D_Ptr equ (Sfx_9D_Snd&$FFFF)|$8000 ; $FF114<br />
Sfx_9E_Ptr equ (Sfx_9E_Snd&$FFFF)|$8000 ; $FF14B<br />
Sfx_9F_Ptr equ (Sfx_9F_Snd&$FFFF)|$8000 ; $FF17F<br />
Sfx_A0_Ptr equ (Sfx_A0_Snd&$FFFF)|$8000 ; $FF1C0<br />
Sfx_A1_Ptr equ (Sfx_A1_Snd&$FFFF)|$8000 ; $FF1FC<br />
Sfx_A2_Ptr equ (Sfx_A2_Snd&$FFFF)|$8000 ; $FF214<br />
Sfx_A3_Ptr equ (Sfx_A3_Snd&$FFFF)|$8000 ; $FF23C<br />
Sfx_A4_Ptr equ (Sfx_A4_Snd&$FFFF)|$8000 ; $FF274<br />
Sfx_A5_Ptr equ (Sfx_A5_Snd&$FFFF)|$8000 ; $FF2A1<br />
Sfx_A6_Ptr equ (Sfx_A6_Snd&$FFFF)|$8000 ; $FF2CE<br />
Sfx_A7_Ptr equ (Sfx_A7_Snd&$FFFF)|$8000 ; $FF2FB<br />
Sfx_A8_Ptr equ (Sfx_A8_Snd&$FFFF)|$8000 ; $FF313<br />
Sfx_A9_Ptr equ (Sfx_A9_Snd&$FFFF)|$8000 ; $FF33B<br />
Sfx_AA_Ptr equ (Sfx_AA_Snd&$FFFF)|$8000 ; $FF365<br />
Sfx_AB_Ptr equ (Sfx_AB_Snd&$FFFF)|$8000 ; $FF38F<br />
Sfx_AC_Ptr equ (Sfx_AC_Snd&$FFFF)|$8000 ; $FF3EA<br />
Sfx_AD_Ptr equ (Sfx_AD_Snd&$FFFF)|$8000 ; $FF42A<br />
Sfx_AE_Ptr equ (Sfx_AE_Snd&$FFFF)|$8000 ; $FF49C<br />
Sfx_AF_Ptr equ (Sfx_AF_Snd&$FFFF)|$8000 ; $FF4AB<br />
Sfx_B0_Ptr equ (Sfx_B0_Snd&$FFFF)|$8000 ; $FF4DA<br />
Sfx_B1_Ptr equ (Sfx_B1_Snd&$FFFF)|$8000 ; $FF507<br />
Sfx_B2_Ptr equ (Sfx_B2_Snd&$FFFF)|$8000 ; $FF582<br />
Sfx_B3_Ptr equ (Sfx_B3_Snd&$FFFF)|$8000 ; $FF5D7<br />
Sfx_B4_Ptr equ (Sfx_B4_Snd&$FFFF)|$8000 ; $FF603<br />
Sfx_B5_Ptr equ (Sfx_B5_Snd&$FFFF)|$8000 ; $FF67D<br />
Sfx_B6_Ptr equ (Sfx_B6_Snd&$FFFF)|$8000 ; $FF6AA<br />
Sfx_B7_Ptr equ (Sfx_B7_Snd&$FFFF)|$8000 ; $FF6D2<br />
Sfx_B8_Ptr equ (Sfx_B8_Snd&$FFFF)|$8000 ; $FF713<br />
Sfx_B9_Ptr equ (Sfx_B9_Snd&$FFFF)|$8000 ; $FF745<br />
Sfx_BA_Ptr equ (Sfx_BA_Snd&$FFFF)|$8000 ; $FF76C<br />
Sfx_BB_Ptr equ (Sfx_BB_Snd&$FFFF)|$8000 ; $FF794<br />
Sfx_BC_Ptr equ (Sfx_BC_Snd&$FFFF)|$8000 ; $FF7BE<br />
Sfx_BD_Ptr equ (Sfx_BD_Snd&$FFFF)|$8000 ; $FF7CE<br />
Sfx_BE_Ptr equ (Sfx_BE_Snd&$FFFF)|$8000 ; $FF7F9<br />
Sfx_BF_Ptr equ (Sfx_BF_Snd&$FFFF)|$8000 ; $FF837<br />
Sfx_C0_Ptr equ (Sfx_C0_Snd&$FFFF)|$8000 ; $FF86A<br />
Sfx_C1_Ptr equ (Sfx_C1_Snd&$FFFF)|$8000 ; $FF89C<br />
Sfx_C2_Ptr equ (Sfx_C2_Snd&$FFFF)|$8000 ; $FF8D1<br />
Sfx_C3_Ptr equ (Sfx_C3_Snd&$FFFF)|$8000 ; $FF907<br />
Sfx_C4_Ptr equ (Sfx_C4_Snd&$FFFF)|$8000 ; $FF91E<br />
Sfx_C5_Ptr equ (Sfx_C5_Snd&$FFFF)|$8000 ; $FF94E<br />
Sfx_C6_Ptr equ (Sfx_C6_Snd&$FFFF)|$8000 ; $FF97E<br />
Sfx_C7_Ptr equ (Sfx_C7_Snd&$FFFF)|$8000 ; $FF9B7<br />
Sfx_C8_Ptr equ (Sfx_C8_Snd&$FFFF)|$8000 ; $FF9F2<br />
Sfx_C9_Ptr equ (Sfx_C9_Snd&$FFFF)|$8000 ; $FFA21<br />
Sfx_CA_Ptr equ (Sfx_CA_Snd&$FFFF)|$8000 ; $FFA2B<br />
Sfx_CB_Ptr equ (Sfx_CB_Snd&$FFFF)|$8000 ; $FFA66<br />
Sfx_CC_Ptr equ (Sfx_CC_Snd&$FFFF)|$8000 ; $FFA9C<br />
Sfx_CD_Ptr equ (Sfx_CD_Snd&$FFFF)|$8000 ; $FFAD7<br />
Sfx_CE_Ptr equ (Sfx_CE_Snd&$FFFF)|$8000 ; $FFB12<br />
Sfx_CF_Ptr equ (Sfx_CF_Snd&$FFFF)|$8000 ; $FFB45<br />
Sfx_D0_Ptr equ (Sfx_D0_Snd&$FFFF)|$8000 ; $FFB60<br />
Sfx_D1_Ptr equ (Sfx_D1_Snd&$FFFF)|$8000 ; $FFB6A<br />
Sfx_D2_Ptr equ (Sfx_D2_Snd&$FFFF)|$8000 ; $FFBA1<br />
Sfx_D3_Ptr equ (Sfx_D3_Snd&$FFFF)|$8000 ; $FFBBE<br />
Sfx_D4_Ptr equ (Sfx_D4_Snd&$FFFF)|$8000 ; $FFBF4<br />
Sfx_D5_Ptr equ (Sfx_D5_Snd&$FFFF)|$8000 ; $FFC2D<br />
Sfx_D6_Ptr equ (Sfx_D6_Snd&$FFFF)|$8000 ; $FFC64<br />
Sfx_D7_Ptr equ (Sfx_D7_Snd&$FFFF)|$8000 ; $FFC9D<br />
Sfx_D8_Ptr equ (Sfx_D8_Snd&$FFFF)|$8000 ; $FFCCE<br />
Sfx_D9_Ptr equ (Sfx_D9_Snd&$FFFF)|$8000 ; $FFCFF<br />
Sfx_DA_Ptr equ (Sfx_DA_Snd&$FFFF)|$8000 ; $FFD32<br />
Sfx_DB_Ptr equ (Sfx_DB_Snd&$FFFF)|$8000 ; $FFD62<br />
Sfx_DC_Ptr equ (Sfx_DC_Snd&$FFFF)|$8000 ; $FFD94<br />
<br />
MusicPointers: <br />
dc.w ((AIz1_Ptr>>$08)|(AIz1_Ptr<<$08))&$FFFF<br />
dc.w ((AIz2_Ptr>>$08)|(AIz2_Ptr<<$08))&$FFFF<br />
dc.w ((HCz1_Ptr>>$08)|(HCz1_Ptr<<$08))&$FFFF<br />
dc.w ((HCz2_Ptr>>$08)|(HCz2_Ptr<<$08))&$FFFF<br />
dc.w ((MGz1_Ptr>>$08)|(MGz1_Ptr<<$08))&$FFFF<br />
dc.w ((MGz2_Ptr>>$08)|(MGz2_Ptr<<$08))&$FFFF<br />
dc.w ((CNz1_Ptr>>$08)|(CNz1_Ptr<<$08))&$FFFF<br />
dc.w ((CNz2_Ptr>>$08)|(CNz2_Ptr<<$08))&$FFFF<br />
dc.w ((FBz1_Ptr>>$08)|(FBz1_Ptr<<$08))&$FFFF<br />
dc.w ((FBz2_Ptr>>$08)|(FBz2_Ptr<<$08))&$FFFF<br />
dc.w ((Iz1_Ptr>>$08)|(Iz1_Ptr<<$08))&$FFFF<br />
dc.w ((Iz2_Ptr>>$08)|(Iz2_Ptr<<$08))&$FFFF<br />
dc.w ((LBz1_Ptr>>$08)|(LBz1_Ptr<<$08))&$FFFF<br />
dc.w ((LBz2_Ptr>>$08)|(LBz2_Ptr<<$08))&$FFFF<br />
dc.w ((MHz1_Ptr>>$08)|(MHz1_Ptr<<$08))&$FFFF<br />
dc.w ((MHz2_Ptr>>$08)|(MHz2_Ptr<<$08))&$FFFF<br />
dc.w ((Sz1_Ptr>>$08)|(Sz1_Ptr<<$08))&$FFFF<br />
dc.w ((Sz2_Ptr>>$08)|(Sz2_Ptr<<$08))&$FFFF<br />
dc.w ((LRz1_Ptr>>$08)|(LRz1_Ptr<<$08))&$FFFF<br />
dc.w ((LRz2_Ptr>>$08)|(LRz2_Ptr<<$08))&$FFFF<br />
dc.w ((SCz_Ptr>>$08)|(SCz_Ptr<<$08))&$FFFF<br />
dc.w ((DEz1_Ptr>>$08)|(DEz1_Ptr<<$08))&$FFFF<br />
dc.w ((DEz2_Ptr>>$08)|(DEz2_Ptr<<$08))&$FFFF<br />
dc.w ((MB_SK_Ptr>>$08)|(MB_SK_Ptr<<$08))&$FFFF<br />
dc.w ((Boss_Ptr>>$08)|(Boss_Ptr<<$08))&$FFFF<br />
dc.w ((TDz_Ptr>>$08)|(TDz_Ptr<<$08))&$FFFF<br />
dc.w ((GS_BS_Ptr>>$08)|(GS_BS_Ptr<<$08))&$FFFF<br />
dc.w ((SS_Ptr>>$08)|(SS_Ptr<<$08))&$FFFF<br />
dc.w ((SM_BS_Ptr>>$08)|(SM_BS_Ptr<<$08))&$FFFF<br />
dc.w ((GBM_BS_Ptr>>$08)|(GBM_BS_Ptr<<$08))&$FFFF<br />
dc.w ((KTE_Ptr>>$08)|(KTE_Ptr<<$08))&$FFFF<br />
dc.w ((ALz_Ptr>>$08)|(ALz_Ptr<<$08))&$FFFF<br />
dc.w ((BPz_Ptr>>$08)|(BPz_Ptr<<$08))&$FFFF<br />
dc.w ((DPz_Ptr>>$08)|(DPz_Ptr<<$08))&$FFFF<br />
dc.w ((CGz_Ptr>>$08)|(CGz_Ptr<<$08))&$FFFF<br />
dc.w ((EMz_Ptr>>$08)|(EMz_Ptr<<$08))&$FFFF<br />
dc.w ((TS_Ptr>>$08)|(TS_Ptr<<$08))&$FFFF<br />
dc.w ((Credits_Ptr>>$08)|(Credits_Ptr<<$08))&$FFFF<br />
dc.w ((TGOvr_Ptr>>$08)|(TGOvr_Ptr<<$08))&$FFFF<br />
dc.w ((Continue_Ptr>>$08)|(Continue_Ptr<<$08))&$FFFF<br />
dc.w ((LR_Ptr>>$08)|(LR_Ptr<<$08))&$FFFF<br />
dc.w ((_1_Up_Ptr>>$08)|(_1_Up_Ptr<<$08))&$FFFF<br />
dc.w ((Emerald_Ptr>>$08)|(Emerald_Ptr<<$08))&$FFFF<br />
dc.w ((Invcblty_Ptr>>$08)|(Invcblty_Ptr<<$08))&$FFFF<br />
dc.w ((_2p_Menu_Ptr>>$08)|(_2p_Menu_Ptr<<$08))&$FFFF<br />
dc.w ((MB_Ptr>>$08)|(MB_Ptr<<$08))&$FFFF<br />
dc.w ((Menu_Ptr>>$08)|(Menu_Ptr<<$08))&$FFFF<br />
dc.w ((FB_Ptr>>$08)|(FB_Ptr<<$08))&$FFFF<br />
dc.w ((UT_Ptr>>$08)|(UT_Ptr<<$08))&$FFFF<br />
dc.w ((PbS_Ptr>>$08)|(PbS_Ptr<<$08))&$FFFF<br />
<br />
SndPointers:<br />
dc.w ((Sfx_34_Ptr>>$08)|(Sfx_34_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_35_Ptr>>$08)|(Sfx_35_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_36_Ptr>>$08)|(Sfx_36_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_37_Ptr>>$08)|(Sfx_37_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_38_Ptr>>$08)|(Sfx_38_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_39_Ptr>>$08)|(Sfx_39_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_3A_Ptr>>$08)|(Sfx_3A_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_3B_Ptr>>$08)|(Sfx_3B_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_3C_Ptr>>$08)|(Sfx_3C_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_3D_Ptr>>$08)|(Sfx_3D_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_3E_Ptr>>$08)|(Sfx_3E_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_3F_Ptr>>$08)|(Sfx_3F_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_40_Ptr>>$08)|(Sfx_40_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_41_Ptr>>$08)|(Sfx_41_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_42_Ptr>>$08)|(Sfx_42_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_43_Ptr>>$08)|(Sfx_43_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_44_Ptr>>$08)|(Sfx_44_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_45_Ptr>>$08)|(Sfx_45_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_46_Ptr>>$08)|(Sfx_46_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_47_Ptr>>$08)|(Sfx_47_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_48_Ptr>>$08)|(Sfx_48_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_49_Ptr>>$08)|(Sfx_49_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_4A_Ptr>>$08)|(Sfx_4A_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_4B_Ptr>>$08)|(Sfx_4B_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_4C_Ptr>>$08)|(Sfx_4C_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_4D_Ptr>>$08)|(Sfx_4D_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_4E_Ptr>>$08)|(Sfx_4E_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_4F_Ptr>>$08)|(Sfx_4F_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_50_Ptr>>$08)|(Sfx_50_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_51_Ptr>>$08)|(Sfx_51_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_52_Ptr>>$08)|(Sfx_52_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_53_Ptr>>$08)|(Sfx_53_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_54_Ptr>>$08)|(Sfx_54_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_55_Ptr>>$08)|(Sfx_55_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_56_Ptr>>$08)|(Sfx_56_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_57_Ptr>>$08)|(Sfx_57_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_58_Ptr>>$08)|(Sfx_58_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_59_Ptr>>$08)|(Sfx_59_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_5A_Ptr>>$08)|(Sfx_5A_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_5B_Ptr>>$08)|(Sfx_5B_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_5C_Ptr>>$08)|(Sfx_5C_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_5D_Ptr>>$08)|(Sfx_5D_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_5E_Ptr>>$08)|(Sfx_5E_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_5F_Ptr>>$08)|(Sfx_5F_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_60_Ptr>>$08)|(Sfx_60_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_61_Ptr>>$08)|(Sfx_61_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_62_Ptr>>$08)|(Sfx_62_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_63_Ptr>>$08)|(Sfx_63_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_64_Ptr>>$08)|(Sfx_64_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_65_Ptr>>$08)|(Sfx_65_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_66_Ptr>>$08)|(Sfx_66_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_67_Ptr>>$08)|(Sfx_67_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_68_Ptr>>$08)|(Sfx_68_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_69_Ptr>>$08)|(Sfx_69_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_6A_Ptr>>$08)|(Sfx_6A_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_6B_Ptr>>$08)|(Sfx_6B_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_6C_Ptr>>$08)|(Sfx_6C_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_6D_Ptr>>$08)|(Sfx_6D_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_6E_Ptr>>$08)|(Sfx_6E_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_6F_Ptr>>$08)|(Sfx_6F_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_70_Ptr>>$08)|(Sfx_70_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_71_Ptr>>$08)|(Sfx_71_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_72_Ptr>>$08)|(Sfx_72_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_73_Ptr>>$08)|(Sfx_73_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_74_Ptr>>$08)|(Sfx_74_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_75_Ptr>>$08)|(Sfx_75_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_76_Ptr>>$08)|(Sfx_76_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_77_Ptr>>$08)|(Sfx_77_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_78_Ptr>>$08)|(Sfx_78_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_79_Ptr>>$08)|(Sfx_79_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_7A_Ptr>>$08)|(Sfx_7A_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_7B_Ptr>>$08)|(Sfx_7B_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_7C_Ptr>>$08)|(Sfx_7C_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_7D_Ptr>>$08)|(Sfx_7D_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_7E_Ptr>>$08)|(Sfx_7E_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_7F_Ptr>>$08)|(Sfx_7F_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_80_Ptr>>$08)|(Sfx_80_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_81_Ptr>>$08)|(Sfx_81_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_82_Ptr>>$08)|(Sfx_82_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_83_Ptr>>$08)|(Sfx_83_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_84_Ptr>>$08)|(Sfx_84_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_85_Ptr>>$08)|(Sfx_85_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_86_Ptr>>$08)|(Sfx_86_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_87_Ptr>>$08)|(Sfx_87_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_88_Ptr>>$08)|(Sfx_88_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_89_Ptr>>$08)|(Sfx_89_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_8A_Ptr>>$08)|(Sfx_8A_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_8B_Ptr>>$08)|(Sfx_8B_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_8C_Ptr>>$08)|(Sfx_8C_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_8D_Ptr>>$08)|(Sfx_8D_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_8E_Ptr>>$08)|(Sfx_8E_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_8F_Ptr>>$08)|(Sfx_8F_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_90_Ptr>>$08)|(Sfx_90_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_91_Ptr>>$08)|(Sfx_91_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_92_Ptr>>$08)|(Sfx_92_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_93_Ptr>>$08)|(Sfx_93_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_94_Ptr>>$08)|(Sfx_94_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_95_Ptr>>$08)|(Sfx_95_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_96_Ptr>>$08)|(Sfx_96_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_97_Ptr>>$08)|(Sfx_97_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_98_Ptr>>$08)|(Sfx_98_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_99_Ptr>>$08)|(Sfx_99_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_9A_Ptr>>$08)|(Sfx_9A_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_9B_Ptr>>$08)|(Sfx_9B_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_9C_Ptr>>$08)|(Sfx_9C_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_9D_Ptr>>$08)|(Sfx_9D_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_9E_Ptr>>$08)|(Sfx_9E_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_9F_Ptr>>$08)|(Sfx_9F_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A0_Ptr>>$08)|(Sfx_A0_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A1_Ptr>>$08)|(Sfx_A1_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A2_Ptr>>$08)|(Sfx_A2_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A3_Ptr>>$08)|(Sfx_A3_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A4_Ptr>>$08)|(Sfx_A4_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A5_Ptr>>$08)|(Sfx_A5_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A6_Ptr>>$08)|(Sfx_A6_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A7_Ptr>>$08)|(Sfx_A7_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A8_Ptr>>$08)|(Sfx_A8_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_A9_Ptr>>$08)|(Sfx_A9_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_AA_Ptr>>$08)|(Sfx_AA_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_AB_Ptr>>$08)|(Sfx_AB_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_AC_Ptr>>$08)|(Sfx_AC_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_AD_Ptr>>$08)|(Sfx_AD_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_AE_Ptr>>$08)|(Sfx_AE_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_AF_Ptr>>$08)|(Sfx_AF_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B0_Ptr>>$08)|(Sfx_B0_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B1_Ptr>>$08)|(Sfx_B1_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B2_Ptr>>$08)|(Sfx_B2_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B3_Ptr>>$08)|(Sfx_B3_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B4_Ptr>>$08)|(Sfx_B4_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B5_Ptr>>$08)|(Sfx_B5_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B6_Ptr>>$08)|(Sfx_B6_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B7_Ptr>>$08)|(Sfx_B7_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B8_Ptr>>$08)|(Sfx_B8_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_B9_Ptr>>$08)|(Sfx_B9_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_BA_Ptr>>$08)|(Sfx_BA_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_BB_Ptr>>$08)|(Sfx_BB_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_BC_Ptr>>$08)|(Sfx_BC_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_BD_Ptr>>$08)|(Sfx_BD_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_BE_Ptr>>$08)|(Sfx_BE_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_BF_Ptr>>$08)|(Sfx_BF_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C0_Ptr>>$08)|(Sfx_C0_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C1_Ptr>>$08)|(Sfx_C1_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C2_Ptr>>$08)|(Sfx_C2_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C3_Ptr>>$08)|(Sfx_C3_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C4_Ptr>>$08)|(Sfx_C4_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C5_Ptr>>$08)|(Sfx_C5_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C6_Ptr>>$08)|(Sfx_C6_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C7_Ptr>>$08)|(Sfx_C7_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C8_Ptr>>$08)|(Sfx_C8_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_C9_Ptr>>$08)|(Sfx_C9_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_CA_Ptr>>$08)|(Sfx_CA_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_CB_Ptr>>$08)|(Sfx_CB_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_CC_Ptr>>$08)|(Sfx_CC_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_CD_Ptr>>$08)|(Sfx_CD_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_CE_Ptr>>$08)|(Sfx_CE_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_CF_Ptr>>$08)|(Sfx_CF_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D0_Ptr>>$08)|(Sfx_D0_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D1_Ptr>>$08)|(Sfx_D1_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D2_Ptr>>$08)|(Sfx_D2_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D3_Ptr>>$08)|(Sfx_D3_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D4_Ptr>>$08)|(Sfx_D4_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D5_Ptr>>$08)|(Sfx_D5_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D6_Ptr>>$08)|(Sfx_D6_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D7_Ptr>>$08)|(Sfx_D7_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D8_Ptr>>$08)|(Sfx_D8_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_D9_Ptr>>$08)|(Sfx_D9_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_DA_Ptr>>$08)|(Sfx_DA_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_DB_Ptr>>$08)|(Sfx_DB_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_DC_Ptr>>$08)|(Sfx_DC_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_DC_Ptr>>$08)|(Sfx_DC_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_DC_Ptr>>$08)|(Sfx_DC_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_DC_Ptr>>$08)|(Sfx_DC_Ptr<<$08))&$FFFF<br />
dc.w ((Sfx_DC_Ptr>>$08)|(Sfx_DC_Ptr<<$08))&$FFFF<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
align $8000<br />
<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
<br />
align $8000<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
align $8000<br />
<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
align $8000<br />
<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
align $8000<br />
<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
align $8000<br />
<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
align $8000<br />
<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CC_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DC_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
</asm><br />
<br />
===Driver data files===<br />
then unpack this into the sound folder and optionally remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Enabling Sonic 2 / 3 Level Music Memory==<br />
Doing this is optional as it has little to do with the driver itself, but is a very useful and quick hack that makes life a lot easier for the more painful phase of using a massively different sound system than before, fixing the freaken sound. Sonic1 uses a second index for restoring music as opposed to actually memorizing it like later sonic games do.<br />
<br />
First we will locate:<br />
<asm><br />
Level_PlayBgm:<br />
lea (MusicList).l,a1 ; load music playlist<br />
move.b (a1,d0.w),d0 ; add d0 to a1<br />
bsr.w PlaySound ; play music<br />
move.b #$34,($FFFFD080).w ; load title card object<br />
</asm><br />
<br />
and insert a new line to make it read:<br />
<asm><br />
Level_PlayBgm:<br />
lea (MusicList).l,a1 ; load music playlist<br />
move.b (a1,d0.w),d0 ; add d0 to a1<br />
move.w d0,($FFFFFF90).w ; store level music<br />
bsr.w PlaySound ; play music<br />
move.b #$34,($FFFFD080).w ; load title card object<br />
</asm><br />
<br />
Now we will locate:<br />
<asm><br />
move.b ($FFFFFE10).w,d0<br />
cmpi.w #$103,($FFFFFE10).w ; check if level is SBZ3<br />
bne.s Obj01_PlayMusic<br />
moveq #5,d0 ; play SBZ music<br />
<br />
Obj01_PlayMusic:<br />
lea (MusicList2).l,a1<br />
move.b (a1,d0.w),d0<br />
jsr (PlaySound).l ; play normal music<br />
</asm><br />
<br />
seems the invincibility stars conflict with music memory, so we will just make it use music list 1, so the result is:<br />
<asm><br />
move.b ($FFFFFE10).w,d0<br />
cmpi.w #$103,($FFFFFE10).w ; check if level is SBZ3<br />
bne.s Obj01_PlayMusic<br />
moveq #5,d0 ; play SBZ music<br />
<br />
Obj01_PlayMusic:<br />
lea (MusicList).l,a1 ; load music playlist<br />
move.b (a1,d0.w),d0 ; add d0 to a1<br />
move.w d0,($FFFFFF90).w ; store level music<br />
jsr (PlaySound).l ; play normal music<br />
</asm><br />
<br />
then remove:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Music to play after invincibility wears off<br />
; ---------------------------------------------------------------------------<br />
MusicList2: binclude misc\muslist2.bin<br />
</asm><br />
now we want to fix the underwater counter music restore code, so locate:<br />
<asm><br />
ResumeMusic: ; XREF: Obj64_Wobble; Sonic_Water; Obj0A_ReduceAir<br />
cmpi.w #$C,($FFFFFE14).w<br />
bhi.s loc_140AC<br />
move.w #$82,d0 ; play LZ music<br />
cmpi.w #$103,($FFFFFE10).w ; check if level is 0103 (SBZ3)<br />
bne.s loc_140A6<br />
move.w #$86,d0 ; play SBZ music<br />
<br />
loc_140A6:<br />
jsr (PlaySound).l<br />
</asm><br />
and replace it with:<br />
<asm><br />
ResumeMusic: ; XREF: Obj64_Wobble; Sonic_Water; Obj0A_ReduceAir<br />
cmpi.w #$C,($FFFFFE14).w<br />
bhi.s loc_140AC<br />
move.w ($FFFFFF90).w,d0 ;resume music<br />
jsr (PlaySound).l<br />
</asm><br />
that sets up music memory for later.<br />
<br />
==Fixing the Music Playlist==<br />
Okay, so we now have a working sonic3 driver, but we have yet to fix the music playlist it is still pointing to sound effects.<br />
Open ''misc\muslist1.bin'' in your favorite hex editor.<p><br />
You will find that it reads:<br />
{| class="prettytable"<br />
! Hex Data<br />
|-<br />
| '''81 82 83 84 85 86 8D 00'''<br />
|}<br />
Pick some new music for your game.<br />
----<br />
<br />
I prefer to use:<br />
{| class="prettytable"<br />
! Hex Data<br />
|-<br />
| '''01 04 13 0D 07 16 30 00'''<br />
|}<br />
Once you rebuild your rom, you will have some music on the levels, but sound effects and some other musics unrelated to the playlist will need fixing. This part is much easier fixing if you applied the sonic2 memory fix to your hack, otherwise edit ''misc/muslist2.bin'' and make the exact same changes.<br />
<br />
==Fixing the Sneaker==<br />
We need to fix the sneaker in a different way than we normally do, because sonic3 uses a different means for speeding up or slowing down the music then its predecessors do.<br />
first we will locate:<br />
<asm><br />
Obj2E_ChkShoes:<br />
cmpi.b #3,d0 ; does monitor contain speed shoes?<br />
bne.s Obj2E_ChkShield<br />
move.b #1,($FFFFFE2E).w ; speed up the BG music<br />
move.w #$4B0,($FFFFD034).w ; time limit for the power-up<br />
move.w #$C00,($FFFFF760).w ; change Sonic"s top speed<br />
move.w #$18,($FFFFF762).w<br />
move.w #$80,($FFFFF764).w<br />
move.w #$E2,d0<br />
jmp (PlaySound).l ; Speed up the music<br />
</asm><br />
note that sonic1 plays a special sound to make the music speed up, our new driver does not do that, so we will change it to read:<br />
<asm><br />
Obj2E_ChkShoes:<br />
cmpi.b #3,d0 ; does monitor contain speed shoes?<br />
bne.s Obj2E_ChkShield<br />
move.b #1,($FFFFFE2E).w ; speed up the BG music<br />
move.w #$4B0,($FFFFD034).w ; time limit for the power-up<br />
move.w #$C00,($FFFFF760).w ; change Sonic"s top speed<br />
move.w #$18,($FFFFF762).w<br />
move.w #$80,($FFFFF764).w<br />
move.w #8,d0<br />
jmp (SetTempo).l ; Speed up the music<br />
</asm><br />
that speeds the music up properly, but we need to tell it how to slow the music back down. So we find:<br />
<asm><br />
Obj01_ChkShoes:<br />
tst.b ($FFFFFE2E).w ; does Sonic have speed shoes?<br />
beq.s Obj01_ExitChk ; if not, branch<br />
tst.w $34(a0) ; check time remaining<br />
beq.s Obj01_ExitChk<br />
subq.w #1,$34(a0) ; subtract 1 from time<br />
bne.s Obj01_ExitChk<br />
move.w #$600,($FFFFF760).w ; restore Sonic"s speed<br />
move.w #$C,($FFFFF762).w ; restore Sonic"s acceleration<br />
move.w #$80,($FFFFF764).w ; restore Sonic"s deceleration<br />
move.b #0,($FFFFFE2E).w ; cancel speed shoes<br />
move.w #$E3,d0<br />
jmp (PlaySound).l ; run music at normal speed<br />
</asm><br />
note that sonic1 also uses another sound to return the music to normal speed, sonic3 doesn't, so we will correct the sneaker wearing off effect, by changin it to:<br />
<asm><br />
Obj01_ChkShoes:<br />
tst.b ($FFFFFE2E).w ; does Sonic have speed shoes?<br />
beq.s Obj01_ExitChk ; if not, branch<br />
tst.w $34(a0) ; check time remaining<br />
beq.s Obj01_ExitChk<br />
subq.w #1,$34(a0) ; subtract 1 from time<br />
bne.s Obj01_ExitChk<br />
move.w #$600,($FFFFF760).w ; restore Sonic"s speed<br />
move.w #$C,($FFFFF762).w ; restore Sonic"s acceleration<br />
move.w #$80,($FFFFF764).w ; restore Sonic"s deceleration<br />
move.b #0,($FFFFFE2E).w ; cancel speed shoes<br />
move.w #$0,d0<br />
jmp (SetTempo).l ; run music at normal speed<br />
</asm><br />
<br />
==Fixing the screen transition sound effects==<br />
===Sega Screen Part 1===<br />
Don't we want music to fade out properly when changing screens? Well if that is true, then you are reading in the right place, first off, go and find:<br />
<asm><br />
SegaScreen: ; XREF: GameModeArray<br />
move.b #$E4,d0<br />
bsr.w PlaySound_Special ; stop music<br />
</asm><br />
<br />
we want it to change to:<br />
<asm><br />
SegaScreen: ; XREF: GameModeArray<br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; Sonic 3 prefers to fade out rather than stop the music.<br />
</asm><br />
<br />
===Title Screen playback fix===<br />
Good, the sega logo screen does with music what we want it to! now to fix the Title Screen, locate:<br />
<asm><br />
TitleScreen: ; XREF: GameModeArray<br />
move.b #$E4,d0<br />
bsr.w PlaySound_Special ; stop music<br />
</asm><br />
and change it to:<br />
<asm><br />
TitleScreen: ; XREF: GameModeArray<br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; Sonic 3 prefers to fade out rather than stop the music.<br />
</asm><br />
<br />
===Ending Sequence music fix===<br />
Good, the title screen transition effect should be fixed now, but we still have a ways to go, so now lets fix the ending sequence transitioning, locate:<br />
<asm><br />
EndingSequence: ; XREF: GameModeArray<br />
move.b #$E4,d0<br />
bsr.w PlaySound_Special ; stop music<br />
</asm><br />
and change it to:<br />
<asm><br />
EndingSequence: ; XREF: GameModeArray<br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; Sonic 3 prefers to fade out rather than stop the music.<br />
</asm><br />
<br />
===Fix the level select sound===<br />
Now that the screens fade music as they should, shouldn't we fix the rest of the fades throughout the game? I would think so, so lets do just that, locate:<br />
<asm><br />
move.b #$E0,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
rts <br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Level select - level pointers<br />
; ---------------------------------------------------------------------------<br />
</asm><br />
and change it to:<br />
<asm><br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
rts <br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Level select - level pointers<br />
; ---------------------------------------------------------------------------<br />
</asm><br />
<br />
===Music fade out on demo exit ala Sonic 3===<br />
that fixes a spot in the level select, which we will work on later. For now locate:<br />
<asm><br />
loc_33E4: ; XREF: Demo<br />
andi.b #$80,($FFFFF605).w ; is Start button pressed?<br />
bne.w Title_ChkLevSel ; if yes, branch<br />
tst.w ($FFFFF614).w<br />
bne.w loc_33B6<br />
move.b #$E0,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_33E4: ; XREF: Demo<br />
andi.b #$80,($FFFFF605).w ; is Start button pressed?<br />
bne.w Title_ChkLevSel ; if yes, branch<br />
tst.w ($FFFFF614).w<br />
bne.w loc_33B6<br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
</asm><br />
===Fade out music in prep of level===<br />
now find:<br />
<asm><br />
Level: ; XREF: GameModeArray<br />
bset #7,($FFFFF600).w ; add $80 to screen mode (for pre level sequence)<br />
tst.w ($FFFFFFF0).w<br />
bmi.s loc_37B6<br />
move.b #$E0,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
</asm><br />
and change it to:<br />
<asm><br />
Level: ; XREF: GameModeArray<br />
bset #7,($FFFFF600).w ; add $80 to screen mode (for pre level sequence)<br />
tst.w ($FFFFFFF0).w<br />
bmi.s loc_37B6<br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
</asm><br />
===Continue screen fade out===<br />
now find:<br />
<asm><br />
Obj81_GetUp: ; XREF: Obj81_Animate<br />
addq.b #2,$24(a0)<br />
move.l #Map_Sonic,4(a0)<br />
move.w #$780,2(a0)<br />
move.b #$1E,$1C(a0) ; use "getting up" animation<br />
clr.w $14(a0)<br />
subq.w #8,$C(a0)<br />
move.b #$E0,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj81_GetUp: ; XREF: Obj81_Animate<br />
addq.b #2,$24(a0)<br />
move.l #Map_Sonic,4(a0)<br />
move.w #$780,2(a0)<br />
move.b #$1E,$1C(a0) ; use "getting up" animation<br />
clr.w $14(a0)<br />
subq.w #8,$C(a0)<br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
</asm><br />
okay, that should fix all the music fades between screens, but still there are yet more fixes to be made.<br />
<br />
==Fixing the SEGA! sound==<br />
Want to hear the SEGA! pcm when you should? Well this section is for you then. Go find:<br />
<asm><br />
Sega_WaitPallet:<br />
move.b #2,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
bsr.w PalCycle_Sega<br />
bne.s Sega_WaitPallet<br />
<br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; play "SEGA" sound<br />
move.b #$14,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
move.w #$1E,($FFFFF614).w<br />
</asm><br />
and change it to:<br />
<asm><br />
Sega_WaitPallet:<br />
move.b #2,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
bsr.w PalCycle_Sega<br />
bne.s Sega_WaitPallet<br />
<br />
move.b #$FF,d0<br />
bsr.w PlaySound_Special ; play "SEGA" sound<br />
move.b #$14,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
move.w #$1E,($FFFFF614).w<br />
</asm><br />
That should fix the sega pcm sample on the sega logo screen.<br />
<br />
==Fixing the Title Screen music==<br />
Want to get rid of that weird sound effect on the title screen? Then we need to fix the music. Find:<br />
<asm><br />
move.b #$8A,d0 ; play title screen music<br />
bsr.w PlaySound_Special<br />
move.b #0,($FFFFFFFA).w ; disable debug mode<br />
move.w #$178,($FFFFF614).w ; run title screen for $178 frames<br />
lea ($FFFFD080).w,a1<br />
moveq #0,d0<br />
move.w #7,d1<br />
<br />
Title_ClrObjRam2:<br />
</asm><br />
<br />
and change it to:<br />
<asm><br />
move.b #$25,d0 ; play title screen music<br />
bsr.w PlaySound_Special<br />
move.b #0,($FFFFFFFA).w ; disable debug mode<br />
move.w #$178,($FFFFF614).w ; run title screen for $178 frames<br />
lea ($FFFFD080).w,a1<br />
moveq #0,d0<br />
move.w #7,d1<br />
<br />
Title_ClrObjRam2:<br />
</asm><br />
<br />
that fixes the title screen's music so that it plays sonic 3 title screen music, or you can pick another music if you so choose.<br />
<br />
==Fixing the Special Stage music==<br />
now that the title screen plays the right music, lets fix the special stage music. We simply want to locate:<br />
<asm><br />
SS_ClrNemRam:<br />
move.l d0,(a1)+<br />
dbf d1,SS_ClrNemRam ; clear Nemesis buffer<br />
<br />
clr.b ($FFFFF64E).w<br />
clr.w ($FFFFFE02).w<br />
moveq #$A,d0<br />
bsr.w PalLoad1 ; load special stage pallet<br />
jsr (SS_Load).l<br />
move.l #0,($FFFFF700).w<br />
move.l #0,($FFFFF704).w<br />
move.b #9,($FFFFD000).w ; load special stage Sonic object<br />
bsr.w PalCycle_SS<br />
clr.w ($FFFFF780).w ; set stage angle to "upright"<br />
move.w #$40,($FFFFF782).w ; set stage rotation speed<br />
move.w #$89,d0<br />
bsr.w PlaySound ; play special stage BG music<br />
move.w #0,($FFFFF790).w<br />
lea (Demo_Index).l,a1<br />
moveq #6,d0<br />
lsl.w #2,d0<br />
movea.l (a1,d0.w),a1<br />
move.b 1(a1),($FFFFF792).w<br />
subq.b #1,($FFFFF792).w<br />
clr.w ($FFFFFE20).w<br />
clr.b ($FFFFFE1B).w<br />
move.w #0,($FFFFFE08).w<br />
move.w #1800,($FFFFF614).w<br />
tst.b ($FFFFFFE2).w ; has debug cheat been entered?<br />
beq.s SS_NoDebug ; if not, branch<br />
btst #6,($FFFFF604).w ; is A button pressed?<br />
beq.s SS_NoDebug ; if not, branch<br />
move.b #1,($FFFFFFFA).w ; enable debug mode<br />
</asm><br />
and change it to:<br />
<asm><br />
SS_ClrNemRam:<br />
move.l d0,(a1)+<br />
dbf d1,SS_ClrNemRam ; clear Nemesis buffer<br />
<br />
clr.b ($FFFFF64E).w<br />
clr.w ($FFFFFE02).w<br />
moveq #$A,d0<br />
bsr.w PalLoad1 ; load special stage pallet<br />
jsr (SS_Load).l<br />
move.l #0,($FFFFF700).w<br />
move.l #0,($FFFFF704).w<br />
move.b #9,($FFFFD000).w ; load special stage Sonic object<br />
bsr.w PalCycle_SS<br />
clr.w ($FFFFF780).w ; set stage angle to "upright"<br />
move.w #$40,($FFFFF782).w ; set stage rotation speed<br />
move.w #$1C,d0<br />
bsr.w PlaySound ; play special stage BG music<br />
move.w #0,($FFFFF790).w<br />
lea (Demo_Index).l,a1<br />
moveq #6,d0<br />
lsl.w #2,d0<br />
movea.l (a1,d0.w),a1<br />
move.b 1(a1),($FFFFF792).w<br />
subq.b #1,($FFFFF792).w<br />
clr.w ($FFFFFE20).w<br />
clr.b ($FFFFFE1B).w<br />
move.w #0,($FFFFFE08).w<br />
move.w #1800,($FFFFF614).w<br />
tst.b ($FFFFFFE2).w ; has debug cheat been entered?<br />
beq.s SS_NoDebug ; if not, branch<br />
btst #6,($FFFFF604).w ; is A button pressed?<br />
beq.s SS_NoDebug ; if not, branch<br />
move.b #1,($FFFFFFFA).w ; enable debug mode<br />
</asm><br />
now we have sonic 3 special stage music on the sonic 1 special stage. Or you could choose a different song of your choice.<br />
<br />
==Fixing the Ending Sequence music==<br />
now time to fix the music for the ending sequence. Find:<br />
<asm><br />
End_LoadData:<br />
moveq #$1C,d0<br />
bsr.w RunPLC_ROM ; load ending sequence patterns<br />
jsr (Hud_Base).l<br />
bsr.w LevelSizeLoad<br />
bsr.w DeformBgLayer<br />
bset #2,($FFFFF754).w<br />
bsr.w MainLoadBlockLoad<br />
bsr.w LoadTilesFromStart<br />
move.l #Col_GHZ,($FFFFF796).w ; load collision index<br />
move #$2300,sr<br />
lea (Kos_EndFlowers).l,a0 ; load extra flower patterns<br />
lea ($FFFF9400).w,a1 ; RAM address to buffer the patterns<br />
bsr.w KosDec<br />
moveq #3,d0<br />
bsr.w PalLoad1 ; load Sonic"s pallet<br />
move.w #$8B,d0<br />
bsr.w PlaySound ; play ending sequence music<br />
btst #6,($FFFFF604).w ; is button A pressed?<br />
beq.s End_LoadSonic ; if not, branch<br />
move.b #1,($FFFFFFFA).w ; enable debug mode<br />
</asm><br />
and change it to:<br />
<asm><br />
End_LoadData:<br />
moveq #$1C,d0<br />
bsr.w RunPLC_ROM ; load ending sequence patterns<br />
jsr (Hud_Base).l<br />
bsr.w LevelSizeLoad<br />
bsr.w DeformBgLayer<br />
bset #2,($FFFFF754).w<br />
bsr.w MainLoadBlockLoad<br />
bsr.w LoadTilesFromStart<br />
move.l #Col_GHZ,($FFFFF796).w ; load collision index<br />
move #$2300,sr<br />
lea (Kos_EndFlowers).l,a0 ; load extra flower patterns<br />
lea ($FFFF9400).w,a1 ; RAM address to buffer the patterns<br />
bsr.w KosDec<br />
moveq #3,d0<br />
bsr.w PalLoad1 ; load Sonic"s pallet<br />
move.w #$32,d0<br />
bsr.w PlaySound ; play ending sequence music<br />
btst #6,($FFFFF604).w ; is button A pressed?<br />
beq.s End_LoadSonic ; if not, branch<br />
move.b #1,($FFFFFFFA).w ; enable debug mode<br />
</asm><br />
that makes it so that sonic 3 ending sequence music plays. Or you could choose a different music.<br />
<br />
==Fixing the Credits music==<br />
time to fix the credits music, this time it needs to be fixed in multiple places. First we find:<br />
<asm><br />
LevSel_Credits: ; XREF: LevelSelect<br />
move.b #$1C,($FFFFF600).w ; set screen mode to $1C (Credits)<br />
move.b #$91,d0<br />
bsr.w PlaySound_Special ; play credits music<br />
move.w #0,($FFFFFFF4).w<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
LevSel_Credits: ; XREF: LevelSelect<br />
move.b #$1C,($FFFFF600).w ; set screen mode to $1C (Credits)<br />
move.b #$26,d0<br />
bsr.w PlaySound_Special ; play credits music<br />
move.w #0,($FFFFFFF4).w<br />
rts <br />
</asm><br />
then we find:<br />
<asm><br />
End_MainLoop:<br />
bsr.w PauseGame<br />
move.b #$18,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
addq.w #1,($FFFFFE04).w<br />
bsr.w End_MoveSonic<br />
jsr (ObjectsLoad).l<br />
bsr.w DeformBgLayer<br />
jsr (BuildSprites).l<br />
jsr (ObjPosLoad).l<br />
bsr.w PalCycle_Load<br />
bsr.w OscillateNumDo<br />
bsr.w ChangeRingFrame<br />
cmpi.b #$18,($FFFFF600).w ; is scene number $18 (ending)?<br />
beq.s loc_52DA ; if yes, branch<br />
move.b #$1C,($FFFFF600).w ; set scene to $1C (credits)<br />
move.b #$91,d0<br />
bsr.w PlaySound_Special ; play credits music<br />
move.w #0,($FFFFFFF4).w ; set credits index number to 0<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
End_MainLoop:<br />
bsr.w PauseGame<br />
move.b #$18,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
addq.w #1,($FFFFFE04).w<br />
bsr.w End_MoveSonic<br />
jsr (ObjectsLoad).l<br />
bsr.w DeformBgLayer<br />
jsr (BuildSprites).l<br />
jsr (ObjPosLoad).l<br />
bsr.w PalCycle_Load<br />
bsr.w OscillateNumDo<br />
bsr.w ChangeRingFrame<br />
cmpi.b #$18,($FFFFF600).w ; is scene number $18 (ending)?<br />
beq.s loc_52DA ; if yes, branch<br />
move.b #$1C,($FFFFF600).w ; set scene to $1C (credits)<br />
move.b #$26,d0<br />
bsr.w PlaySound_Special ; play credits music<br />
move.w #0,($FFFFFFF4).w ; set credits index number to 0<br />
rts <br />
</asm><br />
<br />
That fixes the credits music with sonic 3 credits music, otherwise you could use a different song if you choose.<br />
<br />
==Fixing Special Event sound==<br />
===Chaos Emerald===<br />
time to fix sound for events that only happen in certain situations, i.e. end of level, game over / time over, extra life and such. first we will start with the chaos emerald collection sound, go and find:<br />
<asm><br />
Obj09_NoEmer:<br />
move.w #$93,d0<br />
jsr (PlaySound_Special).l ; play emerald music<br />
moveq #0,d4<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
Obj09_NoEmer:<br />
move.w #$2B,d0<br />
jsr (PlaySound_Special).l ; play emerald music<br />
moveq #0,d4<br />
rts <br />
</asm><br />
<br />
===Game Over / Time Over===<br />
next we will start with Game Over / Time Over, go and find:<br />
<asm><br />
loc_138C2:<br />
move.w #$8F,d0<br />
jsr (PlaySound).l ; play game over music<br />
moveq #3,d0<br />
jmp (LoadPLC).l ; load game over patterns<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_138C2:<br />
move.w #$27,d0<br />
jsr (PlaySound).l ; play game over music<br />
moveq #3,d0<br />
jmp (LoadPLC).l ; load game over patterns<br />
</asm><br />
===Sonic has passed Music===<br />
that causes the Game Over and Time Over screens to use its sonic 3 version or you could choose a different song if you wish. Now we will go on to End of level Results. Find:<br />
<asm><br />
move.w ($FFFFFE20).w,d0<br />
mulu.w #10,d0 ; multiply rings by 10<br />
move.w d0,($FFFFF7D4).w ; set rings bonus<br />
move.w #$8E,d0<br />
jsr (PlaySound_Special).l ; play end-of-level music<br />
lea ($FFFFD000).w,a1<br />
moveq #0,d0<br />
move.w #$7FF,d1<br />
<br />
SS_EndClrObjRam:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w ($FFFFFE20).w,d0<br />
mulu.w #10,d0 ; multiply rings by 10<br />
move.w d0,($FFFFF7D4).w ; set rings bonus<br />
move.w #$29,d0<br />
jsr (PlaySound_Special).l ; play end-of-level music<br />
lea ($FFFFD000).w,a1<br />
moveq #0,d0<br />
move.w #$7FF,d1<br />
<br />
SS_EndClrObjRam:<br />
</asm><br />
now find:<br />
<asm><br />
loc_ECD0:<br />
add.w d0,d0<br />
move.w TimeBonuses(pc,d0.w),($FFFFF7D2).w ; set time bonus<br />
move.w ($FFFFFE20).w,d0 ; load number of rings<br />
mulu.w #10,d0 ; multiply by 10<br />
move.w d0,($FFFFF7D4).w ; set ring bonus<br />
move.w #$8E,d0<br />
jsr (PlaySound_Special).l ; play "Sonic got through" music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_ECD0:<br />
add.w d0,d0<br />
move.w TimeBonuses(pc,d0.w),($FFFFF7D2).w ; set time bonus<br />
move.w ($FFFFFE20).w,d0 ; load number of rings<br />
mulu.w #10,d0 ; multiply by 10<br />
move.w d0,($FFFFF7D4).w ; set ring bonus<br />
move.w #$29,d0<br />
jsr (PlaySound_Special).l ; play "Sonic got through" music<br />
</asm><br />
===1up Sound===<br />
that fixes the end of level and end of special stage results music by using modern version, but you could use a different song if you wish. Next we will fix the extra life sound, so find:<br />
<asm><br />
loc_9CA4:<br />
addq.b #1,($FFFFFE12).w ; add 1 to the number of lives you have<br />
addq.b #1,($FFFFFE1C).w ; add 1 to the lives counter<br />
move.w #$88,d0 ; play extra life music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_9CA4:<br />
addq.b #1,($FFFFFE12).w ; add 1 to the number of lives you have<br />
addq.b #1,($FFFFFE1C).w ; add 1 to the lives counter<br />
move.w #$2A,d0 ; play extra life music<br />
</asm><br />
now find:<br />
<asm><br />
ExtraLife:<br />
addq.b #1,($FFFFFE12).w ; add 1 to the number of lives you have<br />
addq.b #1,($FFFFFE1C).w ; add 1 to the lives counter<br />
move.w #$88,d0<br />
jmp (PlaySound).l ; play extra life music<br />
</asm><br />
and change it to:<br />
<asm><br />
ExtraLife:<br />
addq.b #1,($FFFFFE12).w ; add 1 to the number of lives you have<br />
addq.b #1,($FFFFFE1C).w ; add 1 to the lives counter<br />
move.w #$2A,d0<br />
jmp (PlaySound).l ; play extra life music<br />
</asm><br />
now find:<br />
<asm><br />
Obj09_Get1Up:<br />
addq.b #1,($FFFFFE12).w ; add 1 to number of lives<br />
addq.b #1,($FFFFFE1C).w ; add 1 to lives counter<br />
move.w #$88,d0<br />
jsr (PlaySound).l ; play extra life music<br />
moveq #0,d4<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
Obj09_Get1Up:<br />
addq.b #1,($FFFFFE12).w ; add 1 to number of lives<br />
addq.b #1,($FFFFFE1C).w ; add 1 to lives counter<br />
move.w #$2A,d0<br />
jsr (PlaySound).l ; play extra life music<br />
moveq #0,d4<br />
rts <br />
</asm><br />
===Stars Monitor===<br />
That fixes the extra life sound with the sonic3 version, though I am sure you could use a different one in a different slot if such thing exists. Time to fix the invincibinity music, so find:<br />
<asm><br />
Obj2E_ChkInvinc:<br />
cmpi.b #5,d0 ; does monitor contain invincibility?<br />
bne.s Obj2E_ChkRings<br />
move.b #1,($FFFFFE2D).w ; make Sonic invincible<br />
move.w #$4B0,($FFFFD032).w ; time limit for the power-up<br />
move.b #$38,($FFFFD200).w ; load stars object ($3801)<br />
move.b #1,($FFFFD21C).w<br />
move.b #$38,($FFFFD240).w ; load stars object ($3802)<br />
move.b #2,($FFFFD25C).w<br />
move.b #$38,($FFFFD280).w ; load stars object ($3803)<br />
move.b #3,($FFFFD29C).w<br />
move.b #$38,($FFFFD2C0).w ; load stars object ($3804)<br />
move.b #4,($FFFFD2DC).w<br />
tst.b ($FFFFF7AA).w ; is boss mode on?<br />
bne.s Obj2E_NoMusic ; if yes, branch<br />
move.w #$87,d0<br />
jmp (PlaySound).l ; play invincibility music<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj2E_ChkInvinc:<br />
cmpi.b #5,d0 ; does monitor contain invincibility?<br />
bne.s Obj2E_ChkRings<br />
move.b #1,($FFFFFE2D).w ; make Sonic invincible<br />
move.w #$4B0,($FFFFD032).w ; time limit for the power-up<br />
move.b #$38,($FFFFD200).w ; load stars object ($3801)<br />
move.b #1,($FFFFD21C).w<br />
move.b #$38,($FFFFD240).w ; load stars object ($3802)<br />
move.b #2,($FFFFD25C).w<br />
move.b #$38,($FFFFD280).w ; load stars object ($3803)<br />
move.b #3,($FFFFD29C).w<br />
move.b #$38,($FFFFD2C0).w ; load stars object ($3804)<br />
move.b #4,($FFFFD2DC).w<br />
tst.b ($FFFFF7AA).w ; is boss mode on?<br />
bne.s Obj2E_NoMusic ; if yes, branch<br />
move.w #$2C,d0<br />
jmp (PlaySound).l ; play invincibility music<br />
</asm><br />
===Extra Continue sound===<br />
that fixes the invincibility sound with the sonic3 version, but you could choose a different one if you wish. Next we will fix the get a continue sound, so find:<br />
<asm><br />
Obj7E_Continue: ; XREF: Obj7E_Index<br />
move.b #4,($FFFFD6DA).w<br />
move.b #$14,($FFFFD6E4).w<br />
move.w #$BF,d0<br />
jsr (PlaySound_Special).l ; play continues music<br />
addq.b #2,$24(a0)<br />
move.w #360,$1E(a0) ; set time delay to 6 seconds<br />
bra.w DisplaySprite<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj7E_Continue: ; XREF: Obj7E_Index<br />
move.b #4,($FFFFD6DA).w<br />
move.b #$14,($FFFFD6E4).w<br />
move.w #$AC,d0<br />
jsr (PlaySound_Special).l ; play continues music<br />
addq.b #2,$24(a0)<br />
move.w #360,$1E(a0) ; set time delay to 6 seconds<br />
bra.w DisplaySprite<br />
</asm><br />
then find:<br />
<asm><br />
Obj09_GetCont:<br />
jsr (CollectRing).l<br />
cmpi.w #50,($FFFFFE20).w ; check if you have 50 rings<br />
bcs.s Obj09_NoCont<br />
bset #0,($FFFFFE1B).w<br />
bne.s Obj09_NoCont<br />
addq.b #1,($FFFFFE18).w ; add 1 to number of continues<br />
move.w #$BF,d0<br />
jsr (PlaySound).l ; play extra continue sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj09_GetCont:<br />
jsr (CollectRing).l<br />
cmpi.w #50,($FFFFFE20).w ; check if you have 50 rings<br />
bcs.s Obj09_NoCont<br />
bset #0,($FFFFFE1B).w<br />
bne.s Obj09_NoCont<br />
addq.b #1,($FFFFFE18).w ; add 1 to number of continues<br />
move.w #$AC,d0<br />
jsr (PlaySound).l ; play extra continue sound<br />
</asm><br />
===Continue screen music===<br />
that fixes the extra continue sound that plays on both the end result screen and in the special stage. How about fixing the music for the continue screen itself? That is what we are doing next, so find:<br />
<asm><br />
jsr (ContScrCounter).l ; run countdown (start from 10)<br />
moveq #$12,d0<br />
bsr.w PalLoad1 ; load continue screen pallet<br />
move.b #$90,d0<br />
bsr.w PlaySound ; play continue music<br />
</asm><br />
and change it to:<br />
<asm><br />
jsr (ContScrCounter).l ; run countdown (start from 10)<br />
moveq #$12,d0<br />
bsr.w PalLoad1 ; load continue screen pallet<br />
move.b #$28,d0<br />
bsr.w PlaySound ; play continue music<br />
</asm><br />
===Special Stage entrance/exit===<br />
that fixes the continue screen music. Though you could choose a different song if you wish. Time to fix the special stage entry sound, so find:<br />
<asm><br />
SpecialStage: ; XREF: GameModeArray<br />
move.w #$CA,d0<br />
bsr.w PlaySound_Special ; play special stage entry sound<br />
</asm><br />
and change it to:<br />
<asm><br />
SpecialStage: ; XREF: GameModeArray<br />
move.w #$AF,d0<br />
bsr.w PlaySound_Special ; play special stage entry sound<br />
</asm><br />
then find:<br />
<asm><br />
SS_NormalExit:<br />
bsr.w PauseGame<br />
move.b #$C,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
jsr (ObjectsLoad).l<br />
jsr (BuildSprites).l<br />
bsr.w RunPLC_RAM<br />
tst.w ($FFFFFE02).w<br />
beq.s SS_NormalExit<br />
tst.l ($FFFFF680).w<br />
bne.s SS_NormalExit<br />
move.w #$CA,d0<br />
bsr.w PlaySound_Special ; play special stage exit sound<br />
bsr.w Pal_MakeFlash<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
SS_NormalExit:<br />
bsr.w PauseGame<br />
move.b #$C,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
jsr (ObjectsLoad).l<br />
jsr (BuildSprites).l<br />
bsr.w RunPLC_RAM<br />
tst.w ($FFFFFE02).w<br />
beq.s SS_NormalExit<br />
tst.l ($FFFFF680).w<br />
bne.s SS_NormalExit<br />
move.w #$AF,d0<br />
bsr.w PlaySound_Special ; play special stage exit sound<br />
bsr.w Pal_MakeFlash<br />
rts <br />
</asm><br />
===Boss music===<br />
on entry and exit, the special stage should now play the correct sound. Time to fix the boss music, so find:<br />
<asm><br />
loc_6ED0:<br />
move.w #$8C,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_6ED0:<br />
move.w #$19,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
then find:<br />
<asm><br />
loc_6F4A:<br />
move.w #$8C,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_6F4A:<br />
move.w #$19,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
then find:<br />
<asm><br />
loc_70D0:<br />
move.w #$8C,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_70D0:<br />
move.w #$19,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
then find:<br />
<asm><br />
loc_7144:<br />
move.w #$8C,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_7144:<br />
move.w #$19,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
then find:<br />
<asm><br />
loc_71EC:<br />
move.w #$8C,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_71EC:<br />
move.w #$19,d0<br />
bsr.w PlaySound ; play boss music<br />
</asm><br />
<br />
===GHZ3 music restore, the modern way===<br />
I not that long ago remembered that since sonic1 does not have music memory support, the game's way of playing the previous song is hard coded, so we need to fix that since we added memory support earlier, so find:<br />
<asm><br />
loc_179E0:<br />
clr.w $12(a0)<br />
move.w #$81,d0<br />
jsr (PlaySound).l ; play GHZ music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_179E0:<br />
clr.w $12(a0)<br />
move.w ($FFFFFF90).w,d0<br />
jsr (PlaySound).l ; play GHZ music<br />
</asm><br />
<br />
===LZ3 music restore, the modern way===<br />
now find:<br />
<asm><br />
loc_18112:<br />
move.w #$82,d0<br />
jsr (PlaySound).l ; play LZ music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_18112:<br />
move.w ($FFFFFF90).w,d0<br />
jsr (PlaySound).l ; play LZ music<br />
</asm><br />
<br />
===MZ3 music restore, the modern way===<br />
now find:<br />
<asm><br />
loc_1856C:<br />
clr.w $12(a0)<br />
move.w #$83,d0<br />
jsr (PlaySound).l ; play MZ music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_1856C:<br />
clr.w $12(a0)<br />
move.w ($FFFFFF90).w,d0<br />
jsr (PlaySound).l ; play MZ music<br />
</asm><br />
<br />
===SLZ3 music restore, the modern way===<br />
now find:<br />
<asm><br />
loc_18BB4:<br />
clr.w $12(a0)<br />
move.w #$84,d0<br />
jsr (PlaySound).l ; play SLZ music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_18BB4:<br />
clr.w $12(a0)<br />
move.w ($FFFFFF90).w,d0<br />
jsr (PlaySound).l ; play SLZ music<br />
</asm><br />
<br />
===SYZ3 music restore, the modern way===<br />
find:<br />
<asm><br />
loc_194E0:<br />
clr.w $12(a0)<br />
move.w #$85,d0<br />
jsr (PlaySound).l ; play SYZ music<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_194E0:<br />
clr.w $12(a0)<br />
move.w ($FFFFFF90).w,d0<br />
jsr (PlaySound).l ; play SYZ music<br />
</asm><br />
<br />
===SBZ2 Cut scene, Sonic & Knuckles style===<br />
that fixes the boss music, though you could choose different music per-level if you wish within this part of the how-to. Next we will fix the cut scene just before SBZ3, and I would choose to have that music be SBZ music, to have an effect like the cut scenes in s&k. So find:<br />
<asm><br />
Obj3A_SBZ2: ; XREF: Obj3A_ChkPos2<br />
cmpi.b #4,$1A(a0)<br />
bne.w DeleteObject<br />
addq.b #2,$24(a0)<br />
clr.b ($FFFFF7CC).w ; unlock controls<br />
move.w #$8D,d0<br />
jmp (PlaySound).l ; play FZ music<br />
</asm><br />
and change it to<br />
<asm><br />
Obj3A_SBZ2: ; XREF: Obj3A_ChkPos2<br />
cmpi.b #4,$1A(a0)<br />
bne.w DeleteObject<br />
addq.b #2,$24(a0)<br />
clr.b ($FFFFF7CC).w ; unlock controls<br />
move.w ($FFFFFF90).w,d0<br />
jmp (PlaySound).l ; play level music<br />
</asm><br />
<br />
===Air countdown music===<br />
that causes the game to use whatever music the level started with, but now we need to fix the air counter music, so find:<br />
<asm><br />
move.w #$92,d0<br />
jsr (PlaySound).l ; play countdown music<br />
<br />
loc_13F02:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$31,d0<br />
jsr (PlaySound).l ; play countdown music<br />
<br />
loc_13F02:<br />
</asm><br />
this uses the sonic 3 version of the underwater counter music, or you can use a custom one in a location of your own choice. Now lets fix the sound effects.<br />
<br />
==Fixing the sound effects so that they sound right, or at least close to right==<br />
So now we have all the music and a few sounds fixed, but what about the general sound effects (A0 - CF in sonic 1). Sound effects in sonic 3 start at 33 and end at DC, so lets fix them in sonic 1 order.<br />
===Quick Reference===<br />
If your disassembly has variables/constants defined for the sound effects, all you will have to do is compare this chart. If not, follow the steps underneath to change each and every reference.<br />
<br />
{| class="prettytable"<br />
!Sound Effect||Sonic 1||Sonic 3<br />
|-<br />
|Jump<br />
|$A0<br />
|$62<br />
|-<br />
|Lamppost<br />
|$A1<br />
|$63<br />
|-<br />
|Death<br />
|$A3<br />
|$35<br />
|-<br />
|Skid<br />
|$A4<br />
|$36<br />
|-<br />
|Hit Spikes<br />
|$A6<br />
|$37<br />
|-<br />
|Push<br />
|$A7<br />
|$69<br />
|-<br />
|Special Stage Goal<br />
|$A8<br />
|$6A<br />
|-<br />
|Special Stage Item<br />
|$A9<br />
|$6B<br />
|-<br />
|Splash<br />
|$AA<br />
|$6C<br />
|-<br />
|Hit Boss<br />
|$AC<br />
|$6E<br />
|-<br />
|Bubble<br />
|$AD<br />
|$38<br />
|-<br />
|Fireball<br />
|$AE<br />
|$70<br />
|-<br />
|Shield<br />
|$AF<br />
|$71<br />
|-<br />
|Saw<br />
|$B0<br />
|$D8<br />
|-<br />
|Electric<br />
|$B1<br />
|$79<br />
|-<br />
|Drown<br />
|$B2<br />
|$3B<br />
|-<br />
|Flamethrower<br />
|$B3<br />
|$48<br />
|-<br />
|Bumper<br />
|$B4<br />
|$AA<br />
|-<br />
|Ring<br />
|$B5<br />
|$33<br />
|-<br />
|Spikes Move<br />
|$B6<br />
|$52<br />
|-<br />
|Rumbling<br />
|$B7<br />
|$6F<br />
|-<br />
|Collapse<br />
|$B9<br />
|$59<br />
|-<br />
|Special Stage Glass<br />
|$BA<br />
|$B5<br />
|-<br />
|Door Opening<br />
|$BB<br />
|$58<br />
|-<br />
|Teleport<br />
|$BC<br />
|$73<br />
|-<br />
|Chain Stomp (MZ)<br />
|$BD<br />
|$5F<br />
|-<br />
|Roll<br />
|$BE<br />
|$3C<br />
|-<br />
|Continue<br />
|$BF<br />
|$AC<br />
|-<br />
|Basaran<br />
|$C0<br />
|$47<br />
|-<br />
|Break Item<br />
|$C1<br />
|$3D<br />
|-<br />
|Warning<br />
|$C2<br />
|$A9<br />
|-<br />
|Giant Ring<br />
|$C3<br />
|$B3<br />
|-<br />
|Bomb<br />
|$C4<br />
|$B4 (or $3D)<br />
|-<br />
|"Ca-ching"<br />
|$C5<br />
|$B0<br />
|-<br />
|Lose Rings<br />
|$C6<br />
|$B9<br />
|-<br />
|Chain Rise (MZ)<br />
|$C7<br />
|$D2<br />
|-<br />
|Burning<br />
|$C8<br />
|$D5<br />
|-<br />
|Bonus<br />
|$C9<br />
|$8C<br />
|-<br />
|Special Stage Start<br />
|$CA<br />
|$AF<br />
|-<br />
|Wall Smash<br />
|$CB<br />
|$59<br />
|-<br />
|Spring<br />
|$CC<br />
|$B1<br />
|-<br />
|Switch<br />
|$CD<br />
|$8C<br />
|-<br />
|Ring (Left Speaker)<br />
|$CE<br />
|$33<br />
|-<br />
|Signpost<br />
|$CF<br />
|Doesn't exist, $5E is close<br />
|-<br />
|Waterfall<br />
|$D0<br />
|$DB, sounds wonky<br />
|}<br />
<br />
Detailed instructions for replacing hard-coded sounds, starting with the jump sound, find:<br />
===Sound $A0===<br />
<asm><br />
move.w #$A0,d0<br />
jsr (PlaySound_Special).l ; play jumping sound<br />
move.b #$13,$16(a0)<br />
move.b #9,$17(a0)<br />
btst #2,$22(a0)<br />
bne.s loc_13490<br />
move.b #$E,$16(a0)<br />
move.b #7,$17(a0)<br />
move.b #2,$1C(a0) ; use "jumping" animation<br />
bset #2,$22(a0)<br />
addq.w #5,$C(a0)<br />
<br />
locret_1348E:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$62,d0<br />
jsr (PlaySound_Special).l ; play jumping sound<br />
move.b #$13,$16(a0)<br />
move.b #9,$17(a0)<br />
btst #2,$22(a0)<br />
bne.s loc_13490<br />
move.b #$E,$16(a0)<br />
move.b #7,$17(a0)<br />
move.b #2,$1C(a0) ; use "jumping" animation<br />
bset #2,$22(a0)<br />
addq.w #5,$C(a0)<br />
<br />
locret_1348E:<br />
</asm><br />
then find:<br />
<asm><br />
move.w #$A0,d0<br />
jsr (PlaySound_Special).l ; play jumping sound<br />
<br />
Obj09_NoJump:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$62,d0<br />
jsr (PlaySound_Special).l ; play jumping sound<br />
<br />
Obj09_NoJump:<br />
</asm><br />
===Sound $A1===<br />
the jump sound should now be what it is supposed to be, so we fix the lamp post next, so find:<br />
<asm><br />
Obj79_HitLamp:<br />
move.w ($FFFFD008).w,d0<br />
sub.w 8(a0),d0<br />
addq.w #8,d0<br />
cmpi.w #$10,d0<br />
bcc.w locret_16F90<br />
move.w ($FFFFD00C).w,d0<br />
sub.w $C(a0),d0<br />
addi.w #$40,d0<br />
cmpi.w #$68,d0<br />
bcc.s locret_16F90<br />
move.w #$A1,d0<br />
jsr (PlaySound_Special).l ; play lamppost sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj79_HitLamp:<br />
move.w ($FFFFD008).w,d0<br />
sub.w 8(a0),d0<br />
addq.w #8,d0<br />
cmpi.w #$10,d0<br />
bcc.w locret_16F90<br />
move.w ($FFFFD00C).w,d0<br />
sub.w $C(a0),d0<br />
addi.w #$40,d0<br />
cmpi.w #$68,d0<br />
bcc.s locret_16F90<br />
move.w #$63,d0<br />
jsr (PlaySound_Special).l ; play lamppost sound<br />
</asm><br />
===Sound $A2===<br />
Sound $A2 is not used in sonic 1, so it will be skipped.<br />
===Sound $A3===<br />
that makes the lamp post sound correct, so lets fix the normal damage sound. Find:<br />
<asm><br />
Hurt_ChkSpikes:<br />
move.w #0,$14(a0)<br />
move.b #$1A,$1C(a0)<br />
move.w #$78,$30(a0)<br />
move.w #$A3,d0 ; load normal damage sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Hurt_ChkSpikes:<br />
move.w #0,$14(a0)<br />
move.b #$1A,$1C(a0)<br />
move.w #$78,$30(a0)<br />
move.w #$35,d0 ; load normal damage sound<br />
</asm><br />
then find:<br />
<asm><br />
move.w #$A3,d0 ; play normal death sound<br />
cmpi.b #$36,(a2) ; check if you were killed by spikes<br />
bne.s Kill_Sound<br />
move.w #$A6,d0 ; play spikes death sound<br />
<br />
Kill_Sound:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$35,d0 ; play normal death sound<br />
cmpi.b #$36,(a2) ; check if you were killed by spikes<br />
bne.s Kill_Sound<br />
move.w #$A6,d0 ; play spikes death sound<br />
<br />
Kill_Sound:<br />
</asm><br />
<br />
===Sound $A4===<br />
seems we have the hurt sound working, but now we fix the skid and stop sound, so find:<br />
<asm><br />
move.w #$A4,d0<br />
jsr (PlaySound_Special).l ; play stopping sound<br />
<br />
locret_130E8:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$36,d0<br />
jsr (PlaySound_Special).l ; play stopping sound<br />
<br />
locret_130E8:<br />
</asm><br />
then find:<br />
<asm><br />
move.w #$A4,d0<br />
jsr (PlaySound_Special).l ; play stopping sound<br />
<br />
locret_1314E:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$36,d0<br />
jsr (PlaySound_Special).l ; play stopping sound<br />
<br />
locret_1314E:<br />
</asm><br />
===Sound $A5===<br />
now sonic skids right, but we need to fix another sound. Find:<br />
<asm><br />
move.w #$A5,d0<br />
jsr (PlaySound_Special).l ; play explosion sound<br />
<br />
Obj24_Animate: ; XREF: Obj24_Index<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$67,d0<br />
jsr (PlaySound_Special).l ; play explosion sound<br />
<br />
Obj24_Animate: ; XREF: Obj24_Index<br />
</asm><br />
===Sound $A6===<br />
now find:<br />
<asm><br />
move.w #$A6,d0 ; load spikes damage sound<br />
<br />
Hurt_Sound:<br />
jsr (PlaySound_Special).l<br />
moveq #-1,d0<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$37,d0 ; load spikes damage sound<br />
<br />
Hurt_Sound:<br />
jsr (PlaySound_Special).l<br />
moveq #-1,d0<br />
rts <br />
</asm><br />
now find:<br />
<asm><br />
move.w #$A3,d0 ; play normal death sound<br />
cmpi.b #$36,(a2) ; check if you were killed by spikes<br />
bne.s Kill_Sound<br />
move.w #$A6,d0 ; play spikes death sound<br />
<br />
Kill_Sound:<br />
jsr (PlaySound_Special).l<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$35,d0 ; play normal death sound<br />
cmpi.b #$36,(a2) ; check if you were killed by spikes<br />
bne.s Kill_Sound<br />
move.w #$37,d0 ; play spikes death sound<br />
<br />
Kill_Sound:<br />
jsr (PlaySound_Special).l<br />
</asm><br />
===Sound $A7===<br />
now find:<br />
<asm><br />
loc_C294:<br />
lea ($FFFFD000).w,a1<br />
add.w d0,8(a1)<br />
move.w d1,$14(a1)<br />
move.w #0,$10(a1)<br />
move.w d0,-(sp)<br />
move.w #$A7,d0<br />
jsr (PlaySound_Special).l ; play pushing sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_C294:<br />
lea ($FFFFD000).w,a1<br />
add.w d0,8(a1)<br />
move.w d1,$14(a1)<br />
move.w #0,$10(a1)<br />
move.w d0,-(sp)<br />
move.w #$69,d0<br />
jsr (PlaySound_Special).l ; play pushing sound<br />
</asm><br />
===Sound $A8===<br />
now find:<br />
<asm><br />
move.w #$A8,d0<br />
jsr (PlaySound_Special).l ; play Special Stage "GOAL" sound<br />
<br />
Obj4A_Display:<br />
jmp (DisplaySprite).l<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$6A,d0<br />
jsr (PlaySound_Special).l ; play Special Stage "GOAL" sound<br />
<br />
Obj4A_Display:<br />
jmp (DisplaySprite).l<br />
</asm><br />
now find:<br />
<asm><br />
move.w #$A8,d0<br />
jsr (PlaySound_Special).l ; play special stage GOAL sound<br />
<br />
locret_1B60C:<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$6A,d0<br />
jsr (PlaySound_Special).l ; play special stage GOAL sound<br />
<br />
locret_1B60C:<br />
rts <br />
</asm><br />
now find:<br />
<asm><br />
Obj09_GOAL:<br />
cmpi.b #$27,d0 ; is the item a "GOAL"?<br />
bne.s Obj09_UPblock<br />
addq.b #2,$24(a0) ; run routine "Obj09_ExitStage"<br />
move.w #$A8,d0 ; change item<br />
jsr (PlaySound_Special).l ; play "GOAL" sound<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
Obj09_GOAL:<br />
cmpi.b #$27,d0 ; is the item a "GOAL"?<br />
bne.s Obj09_UPblock<br />
addq.b #2,$24(a0) ; run routine "Obj09_ExitStage"<br />
move.w #$6A,d0 ; change item<br />
jsr (PlaySound_Special).l ; play "GOAL" sound<br />
rts <br />
</asm><br />
===Sound $A9===<br />
now find:<br />
<asm><br />
Obj09_UPsnd:<br />
move.w #$A9,d0<br />
jmp (PlaySound_Special).l ; play up/down sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj09_UPsnd:<br />
move.w #$6B,d0<br />
jmp (PlaySound_Special).l ; play up/down sound<br />
</asm><br />
then find:<br />
<asm><br />
Obj09_DOWNsnd:<br />
move.w #$A9,d0<br />
jmp (PlaySound_Special).l ; play up/down sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj09_DOWNsnd:<br />
move.w #$6B,d0<br />
jmp (PlaySound_Special).l ; play up/down sound<br />
</asm><br />
then find:<br />
<asm><br />
Obj09_RevStage:<br />
neg.w ($FFFFF782).w ; reverse stage rotation<br />
move.w #$A9,d0<br />
jmp (PlaySound_Special).l ; play sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj09_RevStage:<br />
neg.w ($FFFFF782).w ; reverse stage rotation<br />
move.w #$6B,d0<br />
jmp (PlaySound_Special).l ; play sound<br />
</asm><br />
===Sound $AA===<br />
now find:<br />
<asm><br />
move.w #$AA,d0<br />
jmp (PlaySound_Special).l ; play splash sound<br />
; ===========================================================================<br />
<br />
Obj01_OutWater:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$6C,d0<br />
jmp (PlaySound_Special).l ; play splash sound<br />
; ===========================================================================<br />
<br />
Obj01_OutWater:<br />
</asm><br />
then find:<br />
<asm><br />
loc_12E0E:<br />
move.w #$AA,d0<br />
jmp (PlaySound_Special).l ; play splash sound<br />
; End of function Sonic_Water<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_12E0E:<br />
move.w #$57,d0<br />
jmp (PlaySound_Special).l ; play splash sound<br />
; End of function Sonic_Water<br />
</asm><br />
===Sound $AB===<br />
Sound $AB is not used in Sonic 1, so we will skip it.<br />
<br />
===Sound $AC===<br />
now we will find:<br />
<asm><br />
bne.s locret_1784A<br />
tst.b $3E(a0)<br />
bne.s Obj3D_ShipFlash<br />
move.b #$20,$3E(a0) ; set number of times for ship to flash<br />
move.w #$AC,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
<br />
Obj3D_ShipFlash:<br />
</asm><br />
and change it to:<br />
<asm><br />
bne.s locret_1784A<br />
tst.b $3E(a0)<br />
bne.s Obj3D_ShipFlash<br />
move.b #$20,$3E(a0) ; set number of times for ship to flash<br />
move.w #$6E,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
<br />
Obj3D_ShipFlash:<br />
</asm><br />
then we will find:<br />
<asm><br />
loc_17F48:<br />
tst.b $3D(a0)<br />
bne.s loc_17F8E<br />
tst.b $22(a0)<br />
bmi.s loc_17F92<br />
tst.b $20(a0)<br />
bne.s locret_17F8C<br />
tst.b $3E(a0)<br />
bne.s loc_17F70<br />
move.b #$20,$3E(a0)<br />
move.w #$AC,d0<br />
jsr (PlaySound_Special).l<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_17F48:<br />
tst.b $3D(a0)<br />
bne.s loc_17F8E<br />
tst.b $22(a0)<br />
bmi.s loc_17F92<br />
tst.b $20(a0)<br />
bne.s locret_17F8C<br />
tst.b $3E(a0)<br />
bne.s loc_17F70<br />
move.b #$20,$3E(a0)<br />
move.w #$6E,d0<br />
jsr (PlaySound_Special).l<br />
</asm><br />
then find:<br />
<asm><br />
loc_1833E:<br />
move.w $38(a0),$C(a0)<br />
move.w $30(a0),8(a0)<br />
cmpi.b #4,$25(a0)<br />
bcc.s locret_18390<br />
tst.b $22(a0)<br />
bmi.s loc_18392<br />
tst.b $20(a0)<br />
bne.s locret_18390<br />
tst.b $3E(a0)<br />
bne.s loc_18374<br />
move.b #$28,$3E(a0)<br />
move.w #$AC,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_1833E:<br />
move.w $38(a0),$C(a0)<br />
move.w $30(a0),8(a0)<br />
cmpi.b #4,$25(a0)<br />
bcc.s locret_18390<br />
tst.b $22(a0)<br />
bmi.s loc_18392<br />
tst.b $20(a0)<br />
bne.s locret_18390<br />
tst.b $3E(a0)<br />
bne.s loc_18374<br />
move.b #$28,$3E(a0)<br />
move.w #$6E,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
<br />
then find:<br />
<asm><br />
loc_189FE:<br />
cmpi.b #6,$25(a0)<br />
bcc.s locret_18A44<br />
tst.b $22(a0)<br />
bmi.s loc_18A46<br />
tst.b $20(a0)<br />
bne.s locret_18A44<br />
tst.b $3E(a0)<br />
bne.s loc_18A28<br />
move.b #$20,$3E(a0)<br />
move.w #$AC,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_189FE:<br />
cmpi.b #6,$25(a0)<br />
bcc.s locret_18A44<br />
tst.b $22(a0)<br />
bmi.s loc_18A46<br />
tst.b $20(a0)<br />
bne.s locret_18A44<br />
tst.b $3E(a0)<br />
bne.s loc_18A28<br />
move.b #$20,$3E(a0)<br />
move.w #$6E,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
then find:<br />
<asm><br />
loc_19202:<br />
move.w 8(a0),d0<br />
subi.w #$2C00,d0<br />
lsr.w #5,d0<br />
move.b d0,$34(a0)<br />
cmpi.b #6,$25(a0)<br />
bcc.s locret_19256<br />
tst.b $22(a0)<br />
bmi.s loc_19258<br />
tst.b $20(a0)<br />
bne.s locret_19256<br />
tst.b $3E(a0)<br />
bne.s loc_1923A<br />
move.b #$20,$3E(a0)<br />
move.w #$AC,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_19202:<br />
move.w 8(a0),d0<br />
subi.w #$2C00,d0<br />
lsr.w #5,d0<br />
move.b d0,$34(a0)<br />
cmpi.b #6,$25(a0)<br />
bcc.s locret_19256<br />
tst.b $22(a0)<br />
bmi.s loc_19258<br />
tst.b $20(a0)<br />
bne.s locret_19256<br />
tst.b $3E(a0)<br />
bne.s loc_1923A<br />
move.b #$20,$3E(a0)<br />
move.w #$6E,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
then find:<br />
<asm><br />
loc_19F6A:<br />
move.w d0,($FFFFD010).w<br />
tst.b $35(a0)<br />
bne.s loc_19F88<br />
subq.b #1,$21(a0)<br />
move.b #$64,$35(a0)<br />
move.w #$AC,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_19F6A:<br />
move.w d0,($FFFFD010).w<br />
tst.b $35(a0)<br />
bne.s loc_19F88<br />
subq.b #1,$21(a0)<br />
move.b #$64,$35(a0)<br />
move.w #$6E,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
now find:<br />
<asm><br />
loc_1A1D4: ; XREF: off_19E80<br />
bset #0,$22(a0)<br />
jsr (SpeedToPos).l<br />
tst.w $30(a0)<br />
bne.s loc_1A1FC<br />
tst.b $20(a0)<br />
bne.s loc_1A216<br />
move.w #$1E,$30(a0)<br />
move.w #$AC,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_1A1D4: ; XREF: off_19E80<br />
bset #0,$22(a0)<br />
jsr (SpeedToPos).l<br />
tst.w $30(a0)<br />
bne.s loc_1A1FC<br />
tst.b $20(a0)<br />
bne.s loc_1A216<br />
move.w #$1E,$30(a0)<br />
move.w #$6E,d0<br />
jsr (PlaySound_Special).l ; play boss damage sound<br />
</asm><br />
<br />
===Sound $AD===<br />
lets fix the air bubble sound, so locate:<br />
<asm><br />
bsr.w ResumeMusic ; cancel countdown music<br />
move.w #$AD,d0<br />
jsr (PlaySound_Special).l ; play collecting bubble sound<br />
lea ($FFFFD000).w,a1<br />
</asm><br />
should not be very hard to do, it is part of object 64's wobble routine, and there is a single line it int to change so that it is like this:<br />
<asm><br />
bsr.w ResumeMusic ; cancel countdown music<br />
move.w #$38,d0<br />
jsr (PlaySound_Special).l ; play collecting bubble sound<br />
lea ($FFFFD000).w,a1<br />
</asm><br />
I used that same sound in a monitor that is in a hack that will enter the 2011 hacking contest this year thanks to the early notice.<br />
<br />
===Sound $AE===<br />
now find:<br />
<asm><br />
Obj14_PlaySnd:<br />
move.w #$AE,d0<br />
jsr (PlaySound_Special).l ; play lava ball sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj14_PlaySnd:<br />
move.w #$70,d0<br />
jsr (PlaySound_Special).l ; play lava ball sound<br />
</asm><br />
then find:<br />
<asm><br />
Obj62_Sound:<br />
move.w #$AE,d0<br />
jsr (PlaySound_Special).l ; play lava ball sound<br />
</asm><br />
then change it to:<br />
<asm><br />
Obj62_Sound:<br />
move.w #$70,d0<br />
jsr (PlaySound_Special).l ; play lava ball sound<br />
</asm><br />
then find:<br />
<asm><br />
loc_1870A:<br />
move.b #$1E,$29(a0)<br />
move.w #$AE,d0<br />
jsr (PlaySound_Special).l ; play lava sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_1870A:<br />
move.b #$1E,$29(a0)<br />
move.w #$70,d0<br />
jsr (PlaySound_Special).l ; play lava sound<br />
</asm><br />
===Sound $AF===<br />
now find:<br />
<asm><br />
Obj2E_ChkShield:<br />
cmpi.b #4,d0 ; does monitor contain a shield?<br />
bne.s Obj2E_ChkInvinc<br />
move.b #1,($FFFFFE2C).w ; give Sonic a shield<br />
move.b #$38,($FFFFD180).w ; load shield object ($38)<br />
move.w #$AF,d0<br />
jmp (PlaySound).l ; play shield sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj2E_ChkShield:<br />
cmpi.b #4,d0 ; does monitor contain a shield?<br />
bne.s Obj2E_ChkInvinc<br />
move.b #1,($FFFFFE2C).w ; give Sonic a shield<br />
move.b #$38,($FFFFD180).w ; load shield object ($38)<br />
move.w #$71,d0<br />
jmp (PlaySound).l ; play shield sound<br />
</asm><br />
===Sound $B0===<br />
now find:<br />
<asm><br />
loc_15A46:<br />
tst.b 1(a0)<br />
bpl.s locret_15A60<br />
move.w ($FFFFFE04).w,d0<br />
andi.w #$F,d0<br />
bne.s locret_15A60<br />
move.w #$B0,d0<br />
jsr (PlaySound_Special).l ; play saw sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_15A46:<br />
tst.b 1(a0)<br />
bpl.s locret_15A60<br />
move.w ($FFFFFE04).w,d0<br />
andi.w #$F,d0<br />
bne.s locret_15A60<br />
move.w #$D8,d0<br />
jsr (PlaySound_Special).l ; play saw sound<br />
</asm><br />
now find:<br />
<asm><br />
loc_15A96:<br />
tst.b 1(a0)<br />
bpl.s locret_15AB0<br />
move.b ($FFFFFE64).w,d0<br />
cmpi.b #$18,d0<br />
bne.s locret_15AB0<br />
move.w #$B0,d0<br />
jsr (PlaySound_Special).l ; play saw sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_15A96:<br />
tst.b 1(a0)<br />
bpl.s locret_15AB0<br />
move.b ($FFFFFE64).w,d0<br />
cmpi.b #$18,d0<br />
bne.s locret_15AB0<br />
move.w #$D8,d0<br />
jsr (PlaySound_Special).l ; play saw sound<br />
</asm><br />
now find:<br />
<asm><br />
move.w #$B0,d0<br />
jsr (PlaySound_Special).l ; play saw sound<br />
<br />
loc_15B02:<br />
addq.l #4,sp<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$D8,d0<br />
jsr (PlaySound_Special).l ; play saw sound<br />
<br />
loc_15B02:<br />
addq.l #4,sp<br />
</asm><br />
now find:<br />
<asm><br />
move.w #$B0,d0<br />
jsr (PlaySound_Special).l ; play saw sound<br />
<br />
loc_15B74:<br />
addq.l #4,sp<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$D8,d0<br />
jsr (PlaySound_Special).l ; play saw sound<br />
<br />
loc_15B74:<br />
addq.l #4,sp<br />
</asm><br />
===Sound $B1===<br />
the next sound is a little different. Sonic1 uses the same sound effect for both the shocker orb thingies and the balls of lightning in the final boss, but the sonic3 driver has a couple of sound effects that I see fitting better. shocker orbs will use the sound used for a certain badnik in carnival night zone because it sounds better in my opinion, while the balls of lightning from final boss will use the sound used for knux being shocked in hidden palace zone. This is how sonic 3d blast / flickies island used similar sound effects, so we will find:<br />
<asm><br />
Obj6E_Shock: ; XREF: Obj6E_Index<br />
move.w ($FFFFFE04).w,d0<br />
and.w $34(a0),d0<br />
bne.s Obj6E_Animate<br />
move.b #1,$1C(a0) ; run "shocking" animation<br />
tst.b 1(a0)<br />
bpl.s Obj6E_Animate<br />
move.w #$B1,d0<br />
jsr (PlaySound_Special).l ; play electricity sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj6E_Shock: ; XREF: Obj6E_Index<br />
move.w ($FFFFFE04).w,d0<br />
and.w $34(a0),d0<br />
bne.s Obj6E_Animate<br />
move.b #1,$1C(a0) ; run "shocking" animation<br />
tst.b 1(a0)<br />
bpl.s Obj6E_Animate<br />
move.w #$79,d0<br />
jsr (PlaySound_Special).l ; play cnz shock and teleport sound<br />
</asm><br />
then find:<br />
<asm><br />
loc_1A020:<br />
move.w #$B1,d0<br />
jmp (PlaySound_Special).l ; play electricity sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_1A020:<br />
move.w #$78,d0<br />
jmp (PlaySound_Special).l ; play shock knux sound<br />
</asm><br />
===Sound $B2===<br />
the next sound is a lot more like the others, it is the drowning sound. We will locate:<br />
<asm><br />
Obj0A_ReduceAir:<br />
subq.w #1,($FFFFFE14).w ; subtract 1 from air remaining<br />
bcc.w Obj0A_GoMakeItem ; if air is above 0, branch<br />
bsr.w ResumeMusic<br />
move.b #$81,($FFFFF7C8).w ; lock controls<br />
move.w #$B2,d0<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj0A_ReduceAir:<br />
subq.w #1,($FFFFFE14).w ; subtract 1 from air remaining<br />
bcc.w Obj0A_GoMakeItem ; if air is above 0, branch<br />
bsr.w ResumeMusic<br />
move.b #$81,($FFFFF7C8).w ; lock controls<br />
move.w #$3B,d0<br />
</asm><br />
<br />
===Sound $B3===<br />
now find:<br />
<asm><br />
move.w #$B3,d0<br />
jsr (PlaySound_Special).l ; play flame sound<br />
<br />
loc_E57A:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$48,d0<br />
jsr (PlaySound_Special).l ; play flame sound<br />
<br />
loc_E57A:<br />
</asm><br />
===Sound $B4===<br />
now find:<br />
<asm><br />
move.w #$B4,d0<br />
jsr (PlaySound_Special).l ; play bumper sound<br />
lea ($FFFFFC00).w,a2<br />
moveq #0,d0<br />
move.b $23(a0),d0<br />
beq.s Obj47_Score<br />
cmpi.b #$8A,2(a2,d0.w) ; has bumper been hit $8A times?<br />
bcc.s Obj47_Display ; if yes, Sonic gets no points<br />
addq.b #1,2(a2,d0.w)<br />
<br />
Obj47_Score:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$AA,d0<br />
jsr (PlaySound_Special).l ; play bumper sound<br />
lea ($FFFFFC00).w,a2<br />
moveq #0,d0<br />
move.b $23(a0),d0<br />
beq.s Obj47_Score<br />
cmpi.b #$8A,2(a2,d0.w) ; has bumper been hit $8A times?<br />
bcc.s Obj47_Display ; if yes, Sonic gets no points<br />
addq.b #1,2(a2,d0.w)<br />
<br />
Obj47_Score:<br />
</asm><br />
and find:<br />
<asm><br />
Obj09_BumpSnd:<br />
move.w #$B4,d0<br />
jmp (PlaySound_Special).l ; play bumper sound<br />
; ===========================================================================<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj09_BumpSnd:<br />
move.w #$AA,d0<br />
jmp (PlaySound_Special).l ; play bumper sound<br />
; ===========================================================================<br />
</asm><br />
===Sound $B5===<br />
now find:<br />
<asm><br />
Title_PlayRing:<br />
move.b #1,(a0,d1.w) ; activate cheat<br />
move.b #$B5,d0 ; play ring sound when code is entered<br />
bsr.w PlaySound_Special<br />
</asm><br />
and change it to:<br />
<asm><br />
Title_PlayRing:<br />
move.b #1,(a0,d1.w) ; activate cheat<br />
move.b #$33,d0 ; play ring sound when code is entered<br />
bsr.w PlaySound_Special<br />
</asm><br />
then find:<br />
<asm><br />
CollectRing: ; XREF: Obj25_Collect<br />
addq.w #1,($FFFFFE20).w ; add 1 to rings<br />
ori.b #1,($FFFFFE1D).w ; update the rings counter<br />
move.w #$B5,d0 ; play ring sound<br />
</asm><br />
and change it to:<br />
<asm><br />
CollectRing: ; XREF: Obj25_Collect<br />
addq.w #1,($FFFFFE20).w ; add 1 to rings<br />
ori.b #1,($FFFFFE1D).w ; update the rings counter<br />
move.w #$33,d0 ; play ring sound<br />
</asm><br />
then find:<br />
<asm><br />
Obj2E_RingSound:<br />
move.w #$B5,d0<br />
jmp (PlaySound).l ; play ring sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj2E_RingSound:<br />
move.w #$33,d0<br />
jmp (PlaySound).l ; play ring sound<br />
</asm><br />
===Sound $B6===<br />
now find:<br />
<asm><br />
move.w #$B6,d0<br />
jsr (PlaySound_Special).l ; play "spikes moving" sound<br />
bra.s locret_CFE6<br />
; ===========================================================================<br />
<br />
loc_CFA4:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$52,d0<br />
jsr (PlaySound_Special).l ; play "spikes moving" sound<br />
bra.s locret_CFE6<br />
; ===========================================================================<br />
<br />
loc_CFA4:<br />
</asm><br />
===Sound $B7===<br />
now find:<br />
<asm><br />
move.w #$B7,d0<br />
bsr.w PlaySound_Special ; play sound $B7 (rumbling)<br />
<br />
loc_3D54:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$6F,d0<br />
bsr.w PlaySound_Special ; play sound $6F (rumbling)<br />
<br />
loc_3D54:<br />
</asm><br />
now find:<br />
<asm><br />
move.w #$B7,d0<br />
bsr.w PlaySound_Special ; play rumbling sound<br />
<br />
loc_6F28:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$6F,d0<br />
bsr.w PlaySound_Special ; play rumbling sound<br />
<br />
loc_6F28:<br />
</asm><br />
now find:<br />
<asm><br />
move.w #$B7,d0<br />
jsr (PlaySound_Special).l ; play rumbling sound<br />
<br />
loc_19F10:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$6F,d0<br />
jsr (PlaySound_Special).l ; play rumbling sound<br />
<br />
loc_19F10:<br />
</asm><br />
===Sound $B8===<br />
sound $B8 is not used in sonic1, so we will skip it.<br />
<br />
===Sound $B9===<br />
now find:<br />
<asm><br />
loc_84F2:<br />
bsr.w DisplaySprite<br />
move.w #$B9,d0<br />
jmp (PlaySound_Special).l ; play collapsing sound<br />
</asm><br />
and we change it to:<br />
<asm><br />
loc_84F2:<br />
bsr.w DisplaySprite<br />
move.w #$59,d0<br />
jmp (PlaySound_Special).l ; play collapsing sound<br />
</asm><br />
===Sound $BA===<br />
'''note: the breaking and collapsing sounds in sonic3 are the same.'''<br><br />
now we will find:<br />
<asm><br />
Obj09_GlassSnd:<br />
move.w #$BA,d0<br />
jmp (PlaySound_Special).l ; play glass block sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj09_GlassSnd:<br />
move.w #$B5,d0<br />
jmp (PlaySound_Special).l ; play glass block sound<br />
</asm><br />
<br />
===Sound $BB===<br />
now find:<br />
<asm><br />
move.w #$BB,d0<br />
jsr (PlaySound_Special).l ; play door sound<br />
<br />
Obj0C_Solid:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$58,d0<br />
jsr (PlaySound_Special).l ; play door sound<br />
<br />
Obj0C_Solid:<br />
</asm><br />
<br />
now find:<br />
<asm><br />
move.w #$BB,d0<br />
jsr (PlaySound_Special).l ; play door sound<br />
<br />
Obj69_Animate:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$58,d0<br />
jsr (PlaySound_Special).l ; play door sound<br />
<br />
Obj69_Animate:<br />
</asm><br />
===Sound $BC===<br />
'''note: this sound effect is used differently in sonic3 but is the closest to what we have here'''<br><br />
now we find:<br />
<asm><br />
move.w #$BC,d0<br />
jsr (PlaySound_Special).l ; play teleport sound<br />
<br />
locret_16796:<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$73,d0<br />
jsr (PlaySound_Special).l ; play teleport sound<br />
<br />
locret_16796:<br />
rts <br />
</asm><br />
<br />
===Sound $BD===<br />
now find:<br />
<asm><br />
move.w #$BD,d0<br />
jsr (PlaySound_Special).l ; play stomping sound<br />
<br />
Obj31_Restart:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$5F,d0<br />
jsr (PlaySound_Special).l ; play stomping sound<br />
<br />
Obj31_Restart:<br />
</asm><br />
now find:<br />
<asm><br />
move.w #$BD,d0<br />
jsr (PlaySound_Special).l ; play stomping sound<br />
<br />
loc_B97C:<br />
bra.w Obj31_Restart<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$5F,d0<br />
jsr (PlaySound_Special).l ; play stomping sound<br />
<br />
loc_B97C:<br />
bra.w Obj31_Restart<br />
</asm><br />
===Sound $BE===<br />
'''note: this stomp sound is very different, though it is a stomping sound, the one from MGZ to be exact'''<br><br />
now find:<br />
<asm><br />
move.w #$BE,d0<br />
jsr (PlaySound_Special).l ; play rolling sound<br />
tst.w $14(a0)<br />
bne.s locret_133E8<br />
move.w #$200,$14(a0)<br />
<br />
locret_133E8:<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$3C,d0<br />
jsr (PlaySound_Special).l ; play rolling sound<br />
tst.w $14(a0)<br />
bne.s locret_133E8<br />
move.w #$200,$14(a0)<br />
<br />
locret_133E8:<br />
rts <br />
</asm><br />
now find:<br />
<asm><br />
move.w #$BE,d0<br />
jsr (PlaySound_Special).l ; play Sonic rolling sound<br />
<br />
locret_1675C:<br />
rts <br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$53,d0<br />
jsr (PlaySound_Special).l ; sonic & knuckles begin teleportation<br />
<br />
locret_1675C:<br />
rts <br />
</asm><br />
<br />
===Sound $BF===<br />
This sound should already be fixed if you were following the guide, please refer to special event sounds if it isn't by now.<br />
<br />
===Sound $C0===<br />
Seems the sonic 3 driver does not have a sound for this, since the bat robot in CNZ (sonic 3) does not sound anywhere close to the MZ (sonic 1) variant, we will use a similar but close sound.<br><br />
lets look at the code:<br />
<asm><br />
Obj55_PlaySnd: ; XREF: Obj55_Index2<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$F,d0<br />
bne.s loc_101A0<br />
move.w #$C0,d0<br />
jsr (PlaySound_Special).l ; play flapping sound<br />
</asm><br />
And we will do as we have always been doing (I hope you were not just simply copy/pasting in the sound corrections, but changing the sound number in the line above '''jsr (PlaySound_Special).l''' or similar to the value suggested in the "change it to:" part of the tutorial at each step so that you can actually learn something and '''not simply break your hack'''. I have seen a lot of people complaining about their hack being broken with this driver, I assume that the hacker did not check to see if what they did effected their work. i.e. if you have code added to the sonic 1 driver for your hack, it is either obsolete and will be removed, of it it is unrelated to sound, either use another guide, or update your code so that you don't lose it.<br />
<br />
I use the hivebrain 2005 disassembly with asw, so you may need to apply fixes to make it work with a different disassembly. Expect later, a svn sonic1 version of this tutorial later on. Now that what was said is out of the way, lets change it:<br />
<asm><br />
Obj55_PlaySnd: ; XREF: Obj55_Index2<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$F,d0<br />
bne.s loc_101A0<br />
move.w #$47,d0<br />
jsr (PlaySound_Special).l ; play flapping sound<br />
</asm><br />
<br />
===Sound $C1===<br />
now we will find:<br />
<asm><br />
Obj27_Main: ; XREF: Obj27_Index<br />
addq.b #2,$24(a0)<br />
move.l #Map_obj27,4(a0)<br />
move.w #$5A0,2(a0)<br />
move.b #4,1(a0)<br />
move.b #1,$18(a0)<br />
move.b #0,$20(a0)<br />
move.b #$C,$19(a0)<br />
move.b #7,$1E(a0) ; set frame duration to 7 frames<br />
move.b #0,$1A(a0)<br />
move.w #$C1,d0<br />
jsr (PlaySound_Special).l ; play breaking enemy sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj27_Main: ; XREF: Obj27_Index<br />
addq.b #2,$24(a0)<br />
move.l #Map_obj27,4(a0)<br />
move.w #$5A0,2(a0)<br />
move.b #4,1(a0)<br />
move.b #1,$18(a0)<br />
move.b #0,$20(a0)<br />
move.b #$C,$19(a0)<br />
move.b #7,$1E(a0) ; set frame duration to 7 frames<br />
move.b #0,$1A(a0)<br />
move.w #$3D,d0<br />
jsr (PlaySound_Special).l ; play breaking enemy sound<br />
</asm><br />
<br />
===Sound $C2===<br />
the warning sound that you hear every so often under water "ding, ding" will be fixed by finding:<br />
<asm><br />
Obj0A_WarnSound: ; XREF: Obj0A_Countdown<br />
move.w #$C2,d0<br />
jsr (PlaySound_Special).l ; play "ding-ding" warning sound<br />
</asm><br />
and changing it to:<br />
<asm><br />
Obj0A_WarnSound: ; XREF: Obj0A_Countdown<br />
move.w #$A9,d0<br />
jsr (PlaySound_Special).l ; play "ding-ding" warning sound<br />
</asm><br />
<br />
===Sound $C3===<br />
now we fix the giant special stage ring sound, what sound to use should be a no brainer if you listen to the sound test in sonic 3, since a new version of the giant rings return in sonic 3, so lets fix it by finding:<br />
<asm><br />
Obj4B_PlaySnd:<br />
move.w #$C3,d0<br />
jsr (PlaySound_Special).l ; play giant ring sound<br />
bra.s Obj4B_Animate<br />
</asm><br />
and changing it to:<br />
<asm><br />
Obj4B_PlaySnd:<br />
move.w #$B3,d0<br />
jsr (PlaySound_Special).l ; play giant ring sound<br />
bra.s Obj4B_Animate<br />
</asm><br />
<br />
===Sound $C4===<br />
for this one, you can use a sonic 3/s&k/sonic3k exploding sound (monitor/badnik pop), or use the classic, with is $B4, both work in a sonic game and either one could be useful in the hack, it is up to you. For that reason, I will provide two different versions of this step.<br />
====Classic version====<br />
still want the old school sound with the sonic 3 driver?<br><br />
find:<br />
<asm><br />
Obj3F_Main: ; XREF: Obj3F_Index<br />
addq.b #2,$24(a0)<br />
move.l #Map_obj3F,4(a0)<br />
move.w #$5A0,2(a0)<br />
move.b #4,1(a0)<br />
move.b #1,$18(a0)<br />
move.b #0,$20(a0)<br />
move.b #$C,$19(a0)<br />
move.b #7,$1E(a0)<br />
move.b #0,$1A(a0)<br />
move.w #$C4,d0<br />
jmp (PlaySound_Special).l ; play exploding bomb sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj3F_Main: ; XREF: Obj3F_Index<br />
addq.b #2,$24(a0)<br />
move.l #Map_obj3F,4(a0)<br />
move.w #$5A0,2(a0)<br />
move.b #4,1(a0)<br />
move.b #1,$18(a0)<br />
move.b #0,$20(a0)<br />
move.b #$C,$19(a0)<br />
move.b #7,$1E(a0)<br />
move.b #0,$1A(a0)<br />
move.w #$B4,d0<br />
jmp (PlaySound_Special).l ; play exploding bomb sound<br />
</asm><br />
<br />
====Sonic3/k version (my favorite)====<br />
want the new sound?<br><br />
find:<br />
<asm><br />
Obj3F_Main: ; XREF: Obj3F_Index<br />
addq.b #2,$24(a0)<br />
move.l #Map_obj3F,4(a0)<br />
move.w #$5A0,2(a0)<br />
move.b #4,1(a0)<br />
move.b #1,$18(a0)<br />
move.b #0,$20(a0)<br />
move.b #$C,$19(a0)<br />
move.b #7,$1E(a0)<br />
move.b #0,$1A(a0)<br />
move.w #$C4,d0<br />
jmp (PlaySound_Special).l ; play exploding bomb sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj3F_Main: ; XREF: Obj3F_Index<br />
addq.b #2,$24(a0)<br />
move.l #Map_obj3F,4(a0)<br />
move.w #$5A0,2(a0)<br />
move.b #4,1(a0)<br />
move.b #1,$18(a0)<br />
move.b #0,$20(a0)<br />
move.b #$C,$19(a0)<br />
move.b #7,$1E(a0)<br />
move.b #0,$1A(a0)<br />
move.w #$3D,d0<br />
jmp (PlaySound_Special).l ; play monitor destruction sound like sonic3/k<br />
</asm><br />
you are probably wondering, why use this sound here? the LRZ (s&k) exploding rock uses it and astareon (sonic2, MtZ) uese it, and besides it is used in the eggman defeat routine and the egg prison destruction routine. the result, the eggman defeat sounds as it does in sonic 3, time to update the eggmobile artwork now if you so choose so that it fits better with this sound improvement.<br />
<br />
===Sound $C5===<br />
this sound really needs to be fixed badly if the sonic 3 driver is in, it is the same in every single sonic game excluding 8-bit and portable games, even the next-gen games (though it is an enhanced version) and sonic adventure has an improved version even. please fix this one in your hack or it will be way off from normal sonic games.<br><br />
find:<br />
<asm><br />
Obj3A_ChkBonus:<br />
tst.w d0 ; is there any bonus?<br />
bne.s Obj3A_AddBonus ; if yes, branch<br />
move.w #$C5,d0<br />
jsr (PlaySound_Special).l ; play "ker-ching" sound<br />
addq.b #2,$24(a0)<br />
cmpi.w #$501,($FFFFFE10).w<br />
bne.s Obj3A_SetDelay<br />
addq.b #4,$24(a0)<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj3A_ChkBonus:<br />
tst.w d0 ; is there any bonus?<br />
bne.s Obj3A_AddBonus ; if yes, branch<br />
move.w #$B0,d0<br />
jsr (PlaySound_Special).l ; play "ker-ching" sound<br />
addq.b #2,$24(a0)<br />
cmpi.w #$501,($FFFFFE10).w<br />
bne.s Obj3A_SetDelay<br />
addq.b #4,$24(a0)<br />
</asm><br />
<br />
then find:<br />
<asm><br />
loc_C8C4: ; XREF: Obj7E_RingBonus<br />
move.w #$C5,d0<br />
jsr (PlaySound_Special).l ; play "ker-ching" sound<br />
addq.b #2,$24(a0)<br />
move.w #180,$1E(a0) ; set time delay to 3 seconds<br />
cmpi.w #50,($FFFFFE20).w ; do you have at least 50 rings?<br />
bcs.s locret_C8EA ; if not, branch<br />
move.w #60,$1E(a0) ; set time delay to 1 second<br />
addq.b #4,$24(a0) ; goto "Obj7E_Continue" routine<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_C8C4: ; XREF: Obj7E_RingBonus<br />
move.w #$B0,d0<br />
jsr (PlaySound_Special).l ; play "ker-ching" sound<br />
addq.b #2,$24(a0)<br />
move.w #180,$1E(a0) ; set time delay to 3 seconds<br />
cmpi.w #50,($FFFFFE20).w ; do you have at least 50 rings?<br />
bcs.s locret_C8EA ; if not, branch<br />
move.w #60,$1E(a0) ; set time delay to 1 second<br />
addq.b #4,$24(a0) ; goto "Obj7E_Continue" routine<br />
</asm><br />
===Sound $C6===<br />
fixing this sound will make sonic's ring loss sound right, so locate:<br />
<asm><br />
Obj37_ResetCounter: ; XREF: Obj37_Loop<br />
move.w #0,($FFFFFE20).w ; reset number of rings to zero<br />
move.b #$80,($FFFFFE1D).w ; update ring counter<br />
move.b #0,($FFFFFE1B).w<br />
move.w #$C6,d0<br />
jsr (PlaySound_Special).l ; play ring loss sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj37_ResetCounter: ; XREF: Obj37_Loop<br />
move.w #0,($FFFFFE20).w ; reset number of rings to zero<br />
move.b #$80,($FFFFFE1D).w ; update ring counter<br />
move.b #0,($FFFFFE1B).w<br />
move.w #$B9,d0<br />
jsr (PlaySound_Special).l ; play ring loss sound<br />
</asm><br />
<br />
===Sound $C7===<br />
remember the giant weight with spikes under it that goes up and crashes down in MZ? we are going to fix the sound now.<br><br />
find:<br />
<asm><br />
loc_B872:<br />
tst.w $32(a0)<br />
beq.s loc_B8A0<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$F,d0<br />
bne.s loc_B892<br />
tst.b 1(a0)<br />
bpl.s loc_B892<br />
move.w #$C7,d0<br />
jsr (PlaySound_Special).l ; play rising chain sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_B872:<br />
tst.w $32(a0)<br />
beq.s loc_B8A0<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$F,d0<br />
bne.s loc_B892<br />
tst.b 1(a0)<br />
bpl.s loc_B892<br />
move.w #$D2,d0<br />
jsr (PlaySound_Special).l ; play rising chain sound<br />
</asm><br />
and then find:<br />
<asm><br />
loc_B902:<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$F,d0<br />
bne.s loc_B91C<br />
tst.b 1(a0)<br />
bpl.s loc_B91C<br />
move.w #$C7,d0<br />
jsr (PlaySound_Special).l ; play rising chain sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_B902:<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$F,d0<br />
bne.s loc_B91C<br />
tst.b 1(a0)<br />
bpl.s loc_B91C<br />
move.w #$D2,d0<br />
jsr (PlaySound_Special).l ; play rising chain sound<br />
</asm><br />
<br />
===Sound $C8===<br />
Once again sonic3 has 2 sounds for this one (one used in the spiked weight in LRZ, the other from the lava waterfalls also in LRZ) we will put them both where they belong)<br><br />
first we will make the MZ lava spouts use the lava waterfall sound (yes, that one):<br />
<asm><br />
Obj4D_PlaySnd:<br />
move.w #$C8,d0<br />
jsr (PlaySound_Special).l ; play flame sound<br />
</asm><br />
and yes change the code to:<br />
<asm><br />
Obj4D_PlaySnd:<br />
move.w #$D5,d0<br />
jsr (PlaySound_Special).l ; play flame sound<br />
</asm><br />
now for the other sound:<br />
<asm><br />
Obj35_Main: ; XREF: Obj35_Index<br />
addq.b #2,$24(a0)<br />
move.l #Map_obj14,4(a0)<br />
move.w #$345,2(a0)<br />
move.w 8(a0),$2A(a0)<br />
move.b #4,1(a0)<br />
move.b #1,$18(a0)<br />
move.b #$8B,$20(a0)<br />
move.b #8,$19(a0)<br />
move.w #$C8,d0<br />
jsr (PlaySound_Special).l ; play flame sound<br />
tst.b $28(a0)<br />
beq.s loc_B238<br />
addq.b #2,$24(a0)<br />
bra.w Obj35_Move<br />
</asm><br />
and it should be changed to:<br />
<asm><br />
Obj35_Main: ; XREF: Obj35_Index<br />
addq.b #2,$24(a0)<br />
move.l #Map_obj14,4(a0)<br />
move.w #$345,2(a0)<br />
move.w 8(a0),$2A(a0)<br />
move.b #4,1(a0)<br />
move.b #1,$18(a0)<br />
move.b #$8B,$20(a0)<br />
move.b #8,$19(a0)<br />
move.w #$7F,d0<br />
jsr (PlaySound_Special).l ; play flame sound<br />
tst.b $28(a0)<br />
beq.s loc_B238<br />
addq.b #2,$24(a0)<br />
bra.w Obj35_Move<br />
</asm><br />
<br />
===Sound $C9===<br />
the hidden points sound is no longer in sonic 3, but the egg logger mini boss from MHZ has a similar sound that is used, so it probably will have to work until you replace a sound effect.<br><br />
find:<br />
<asm><br />
move.w #$C9,d0<br />
jsr (PlaySound_Special).l ; play bonus sound<br />
moveq #0,d0<br />
move.b $28(a0),d0<br />
add.w d0,d0<br />
move.w Obj7D_Points(pc,d0.w),d0 ; load bonus points array<br />
jsr (AddPoints).l<br />
<br />
Obj7D_ChkDel:<br />
</asm><br />
and change it to:<br />
<asm><br />
move.w #$8C,d0<br />
jsr (PlaySound_Special).l ; play bonus sound<br />
moveq #0,d0<br />
move.b $28(a0),d0<br />
add.w d0,d0<br />
move.w Obj7D_Points(pc,d0.w),d0 ; load bonus points array<br />
jsr (AddPoints).l<br />
<br />
Obj7D_ChkDel:<br />
</asm><br />
<br />
===Sound $CA===<br />
This Sound should already be fixed by now (it was fixed with special event sounds)<br />
<br />
===Sound $CB===<br />
remember that I said sonic3 has only 1 version of this sound above?<br><br />
the crumbling sound from above and smashing sound in sonic3 are identical, so find:<br />
<asm><br />
loc_197D4:<br />
move.w #$CB,d0<br />
jmp (PlaySound_Special).l ; play smashing sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_197D4:<br />
move.w #$59,d0<br />
jmp (PlaySound_Special).l ; play smashing sound<br />
</asm><br />
then find:<br />
<asm><br />
Obj83_BreakSnd:<br />
move.w #$CB,d0<br />
jsr (PlaySound_Special).l ; play smashing sound<br />
jmp (DisplaySprite).l<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj83_BreakSnd:<br />
move.w #$59,d0<br />
jsr (PlaySound_Special).l ; play smashing sound<br />
jmp (DisplaySprite).l<br />
</asm><br />
now find:<br />
<asm><br />
Smash_PlaySnd:<br />
move.w #$CB,d0<br />
jmp (PlaySound_Special).l ; play smashing sound<br />
; End of function SmashObject<br />
</asm><br />
and change it to:<br />
<asm><br />
Smash_PlaySnd:<br />
move.w #$59,d0<br />
jmp (PlaySound_Special).l ; play smashing sound<br />
; End of function SmashObject<br />
</asm><br />
<br />
===Sound $CC===<br />
the spring sound now, find:<br />
<asm><br />
Obj41_BounceUp: ; XREF: Obj41_Up<br />
addq.b #2,$24(a0)<br />
addq.w #8,$C(a1)<br />
move.w $30(a0),$12(a1) ; move Sonic upwards<br />
bset #1,$22(a1)<br />
bclr #3,$22(a1)<br />
move.b #$10,$1C(a1) ; use "bouncing" animation<br />
move.b #2,$24(a1)<br />
bclr #3,$22(a0)<br />
clr.b $25(a0)<br />
move.w #$CC,d0<br />
jsr (PlaySound_Special).l ; play spring sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj41_BounceUp: ; XREF: Obj41_Up<br />
addq.b #2,$24(a0)<br />
addq.w #8,$C(a1)<br />
move.w $30(a0),$12(a1) ; move Sonic upwards<br />
bset #1,$22(a1)<br />
bclr #3,$22(a1)<br />
move.b #$10,$1C(a1) ; use "bouncing" animation<br />
move.b #2,$24(a1)<br />
bclr #3,$22(a0)<br />
clr.b $25(a0)<br />
move.w #$B1,d0<br />
jsr (PlaySound_Special).l ; play spring sound<br />
</asm><br />
then find:<br />
<asm><br />
loc_DC56:<br />
bclr #5,$22(a0)<br />
bclr #5,$22(a1)<br />
move.w #$CC,d0<br />
jsr (PlaySound_Special).l ; play spring sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_DC56:<br />
bclr #5,$22(a0)<br />
bclr #5,$22(a1)<br />
move.w #$B1,d0<br />
jsr (PlaySound_Special).l ; play spring sound<br />
</asm><br />
then find:<br />
<asm><br />
Obj41_BounceDwn: ; XREF: Obj41_Dwn<br />
addq.b #2,$24(a0)<br />
subq.w #8,$C(a1)<br />
move.w $30(a0),$12(a1)<br />
neg.w $12(a1) ; move Sonic downwards<br />
bset #1,$22(a1)<br />
bclr #3,$22(a1)<br />
move.b #2,$24(a1)<br />
bclr #3,$22(a0)<br />
clr.b $25(a0)<br />
move.w #$CC,d0<br />
jsr (PlaySound_Special).l ; play spring sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj41_BounceDwn: ; XREF: Obj41_Dwn<br />
addq.b #2,$24(a0)<br />
subq.w #8,$C(a1)<br />
move.w $30(a0),$12(a1)<br />
neg.w $12(a1) ; move Sonic downwards<br />
bset #1,$22(a1)<br />
bclr #3,$22(a1)<br />
move.b #2,$24(a1)<br />
bclr #3,$22(a0)<br />
clr.b $25(a0)<br />
move.w #$B1,d0<br />
jsr (PlaySound_Special).l ; play spring sound<br />
</asm><br />
then we will use the MHZ version of this one because it makes sense:<br />
<asm><br />
Obj5E_Spring:<br />
move.b d1,$3A(a1)<br />
move.b d1,$3A(a0)<br />
cmp.b $1A(a1),d1<br />
beq.s loc_1192C<br />
bclr #3,$22(a1)<br />
beq.s loc_1192C<br />
clr.b $25(a1)<br />
move.b #2,$24(a1)<br />
lea ($FFFFD000).w,a2<br />
move.w $12(a0),$12(a2)<br />
neg.w $12(a2)<br />
bset #1,$22(a2)<br />
bclr #3,$22(a2)<br />
clr.b $3C(a2)<br />
move.b #$10,$1C(a2) ; change Sonic"s animation to "spring" ($10)<br />
move.b #2,$24(a2)<br />
move.w #$CC,d0<br />
jsr (PlaySound_Special).l ; play spring sound<br />
</asm><br />
which gets changed to:<br />
<asm><br />
Obj5E_Spring:<br />
move.b d1,$3A(a1)<br />
move.b d1,$3A(a0)<br />
cmp.b $1A(a1),d1<br />
beq.s loc_1192C<br />
bclr #3,$22(a1)<br />
beq.s loc_1192C<br />
clr.b $25(a1)<br />
move.b #2,$24(a1)<br />
lea ($FFFFD000).w,a2<br />
move.w $12(a0),$12(a2)<br />
neg.w $12(a2)<br />
bset #1,$22(a2)<br />
bclr #3,$22(a2)<br />
clr.b $3C(a2)<br />
move.b #$10,$1C(a2) ; change Sonic"s animation to "spring" ($10)<br />
move.b #2,$24(a2)<br />
move.w #$AE,d0<br />
jsr (PlaySound_Special).l ; play spring sound<br />
</asm><br />
<br />
===Sound $CD===<br />
find:<br />
<asm><br />
loc_BDC8:<br />
tst.b (a3)<br />
bne.s loc_BDD6<br />
move.w #$CD,d0<br />
jsr (PlaySound_Special).l ; play switch sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_BDC8:<br />
tst.b (a3)<br />
bne.s loc_BDD6<br />
move.w #$5B,d0<br />
jsr (PlaySound_Special).l ; play switch sound<br />
</asm><br />
then find:<br />
<asm><br />
Obj3A_AddBonus: ; XREF: Obj3A_ChkBonus<br />
jsr (AddPoints).l<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #3,d0<br />
bne.s locret_C692<br />
move.w #$CD,d0<br />
jmp (PlaySound_Special).l ; play "blip" sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj3A_AddBonus: ; XREF: Obj3A_ChkBonus<br />
jsr (AddPoints).l<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #3,d0<br />
bne.s locret_C692<br />
move.w #$5B,d0<br />
jmp (PlaySound_Special).l ; play "blip" sound<br />
</asm><br />
then find:<br />
<asm><br />
Obj7E_RingBonus: ; XREF: Obj7E_Index<br />
bsr.w DisplaySprite<br />
move.b #1,($FFFFF7D6).w ; set ring bonus update flag<br />
tst.w ($FFFFF7D4).w ; is ring bonus = zero?<br />
beq.s loc_C8C4 ; if yes, branch<br />
subi.w #10,($FFFFF7D4).w ; subtract 10 from ring bonus<br />
moveq #10,d0 ; add 10 to score<br />
jsr (AddPoints).l<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #3,d0<br />
bne.s locret_C8EA<br />
move.w #$CD,d0<br />
jmp (PlaySound_Special).l ; play "blip" sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj7E_RingBonus: ; XREF: Obj7E_Index<br />
bsr.w DisplaySprite<br />
move.b #1,($FFFFF7D6).w ; set ring bonus update flag<br />
tst.w ($FFFFF7D4).w ; is ring bonus = zero?<br />
beq.s loc_C8C4 ; if yes, branch<br />
subi.w #10,($FFFFF7D4).w ; subtract 10 from ring bonus<br />
moveq #10,d0 ; add 10 to score<br />
jsr (AddPoints).l<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #3,d0<br />
bne.s locret_C8EA<br />
move.w #$5B,d0<br />
jmp (PlaySound_Special).l ; play "blip" sound<br />
</asm><br />
<br />
===Sound $CE===<br />
this sound's usage was defined in the old 68k driver and fixes itself.<br />
<br />
===Sound $CF===<br />
the old sound for the end sign is no longer in sonic 3, but a similar (unused) sound does exist, so find:<br />
<asm><br />
Obj0D_Touch: ; XREF: Obj0D_Index<br />
move.w ($FFFFD008).w,d0<br />
sub.w 8(a0),d0<br />
bcs.s locret_EBBA<br />
cmpi.w #$20,d0 ; is Sonic within $20 pixels of the signpost?<br />
bcc.s locret_EBBA ; if not, branch<br />
move.w #$CF,d0<br />
jsr (PlaySound).l ; play signpost sound<br />
clr.b ($FFFFFE1E).w ; stop time counter<br />
move.w ($FFFFF72A).w,($FFFFF728).w ; lock screen position<br />
addq.b #2,$24(a0)<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj0D_Touch: ; XREF: Obj0D_Index<br />
move.w ($FFFFD008).w,d0<br />
sub.w 8(a0),d0<br />
bcs.s locret_EBBA<br />
cmpi.w #$20,d0 ; is Sonic within $20 pixels of the signpost?<br />
bcc.s locret_EBBA ; if not, branch<br />
move.w #$5E,d0<br />
jsr (PlaySound).l ; play signpost sound<br />
clr.b ($FFFFFE1E).w ; stop time counter<br />
move.w ($FFFFF72A).w,($FFFFF728).w ; lock screen position<br />
addq.b #2,$24(a0)<br />
</asm><br />
<br />
===Sound $D0===<br />
this one is the hard one, sonic1's timing of the waterfalls is not right, so the water sound will have pauses in it. I will look into it and update the code when I get it working right.<br><br />
for now find:<br />
<asm><br />
loc_3F9A:<br />
clr.b $15(a1)<br />
move.b #$1B,$1C(a1) ; use Sonic"s "sliding" animation<br />
move.b #1,($FFFFF7CA).w ; lock controls (except jumping)<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$1F,d0<br />
bne.s locret_3FBE<br />
move.w #$D0,d0<br />
jsr (PlaySound_Special).l ; play water sound<br />
</asm><br />
and change it to:<br />
<asm><br />
loc_3F9A:<br />
clr.b $15(a1)<br />
move.b #$1B,$1C(a1) ; use Sonic"s "sliding" animation<br />
move.b #1,($FFFFF7CA).w ; lock controls (except jumping)<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$1F,d0<br />
bne.s locret_3FBE<br />
move.w #$DB,d0<br />
jsr (PlaySound_Special).l ; play water sound<br />
</asm><br />
then find:<br />
<asm><br />
Obj49_PlaySnd: ; XREF: Obj49_Index<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$3F,d0<br />
bne.s Obj49_ChkDel<br />
move.w #$D0,d0<br />
jsr (PlaySound_Special).l ; play waterfall sound<br />
</asm><br />
and change it to:<br />
<asm><br />
Obj49_PlaySnd: ; XREF: Obj49_Index<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$3F,d0<br />
bne.s Obj49_ChkDel<br />
move.w #$DB,d0<br />
jsr (PlaySound_Special).l ; play waterfall sound<br />
</asm><br />
then find:<br />
<asm><br />
LZWind_Loop:<br />
move.w 8(a1),d0<br />
cmp.w (a2),d0<br />
bcs.w loc_3EF4<br />
cmp.w 4(a2),d0<br />
bcc.w loc_3EF4<br />
move.w $C(a1),d2<br />
cmp.w 2(a2),d2<br />
bcs.s loc_3EF4<br />
cmp.w 6(a2),d2<br />
bcc.s loc_3EF4<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$3F,d0<br />
bne.s loc_3E90<br />
move.w #$D0,d0<br />
jsr (PlaySound_Special).l ; play rushing water sound<br />
</asm><br />
and change it to:<br />
<asm><br />
LZWind_Loop:<br />
move.w 8(a1),d0<br />
cmp.w (a2),d0<br />
bcs.w loc_3EF4<br />
cmp.w 4(a2),d0<br />
bcc.w loc_3EF4<br />
move.w $C(a1),d2<br />
cmp.w 2(a2),d2<br />
bcs.s loc_3EF4<br />
cmp.w 6(a2),d2<br />
bcc.s loc_3EF4<br />
move.b ($FFFFFE0F).w,d0<br />
andi.b #$3F,d0<br />
bne.s loc_3E90<br />
move.w #$DB,d0<br />
jsr (PlaySound_Special).l ; play rushing water sound<br />
</asm><br />
<br />
Now all that is left, is fixing the level select so that it plays the data select music upon entry and allows selection of sounds $00 - $FF.<br />
<br />
==Utilizing new sounds in existing badniks==<br />
here, we delve a little into object editing and how to effectively use the sonic 3 sound system, because you have already decided to use it, right? Well, if you hadn't, then why are you here?<br><br />
Using sounds in sonic 3 is very similar to older games, just the sound numbers are changed thus why the strange stuff you may have encountered earlier and why you will have to fix the level select later. here is how the sounds line up:<br />
{|class="prettytable"<br />
!Type||Numbers in Sonic 1/Sonic 2||Numbers in Sonic 3+<br />
|-<br />
|Broken/Error<br />
|$00 - $7F<br />
|N/A<br />
|-<br />
|Emty/Null<br />
|$80<br />
|$00<br />
|-<br />
|Music<br />
|$81 - $9F<br />
|$01 - $32<br />
|-<br />
|Sound Effects/Control<br />
|$A0 - $FF<br />
|$33 - $FF<br />
|}<br />
As you probably had noticed if you actually had a brain, the sound effects are in a larger range that encompassed the entire old range of sounds, music included, which would explain why the game would have sounded drunk when you first got the driver working and chose to test it before continuing this tutorial.<br />
<br />
===Buzz Bomber===<br />
The buzz bomber fires at sonic, and most enemies in sonic 3 tend to make a certain sound when they fire at sonic, so lets add that one to the buzz bomber, so why don't we locate the firing routine:<br />
<asm><br />
loc_98AA:<br />
add.w d0,8(a1)<br />
move.b $22(a0),$22(a1)<br />
move.w #$E,$32(a1)<br />
move.l a0,$3C(a1)<br />
move.b #1,$34(a0) ; set to "already fired" to pralign 2t refiring<br />
move.w #$3B,$32(a0)<br />
move.b #2,$1C(a0) ; use "firing" animation<br />
</asm><br />
and add these lines right under it:<br />
<asm><br />
move.w #$4D,d0<br />
jmp PlaySound ; play firing sound<br />
</asm><br />
<br />
now our buzz bomber has sound!<br />
===Crabmeat===<br />
the Crabmeat badnik can have a sound too, if we add it in a similar manner, so lets do it! Crabmeat throws something with both claws, but so does that monkey in AIZ throw something, so lets use that sound. lets find the Crabmeat throwing routine:<br />
<asm><br />
Obj1F_MakeFire: ; XREF: Obj1F_WaitFire<br />
move.w #$3B,$30(a0)<br />
move.b #6,$1C(a0) ; use firing animation<br />
bsr.w SingleObjLoad<br />
bne.s Obj1F_MakeFire2<br />
_move.b #$1F,0(a1) ; load left fireball<br />
move.b #6,$24(a1)<br />
move.w 8(a0),8(a1)<br />
subi.w #$10,8(a1)<br />
move.w $C(a0),$C(a1)<br />
move.w #-$100,$10(a1)<br />
<br />
Obj1F_MakeFire2:<br />
bsr.w SingleObjLoad<br />
bne.s locret_9618<br />
_move.b #$1F,0(a1) ; load right fireball<br />
move.b #6,$24(a1)<br />
move.w 8(a0),8(a1)<br />
addi.w #$10,8(a1)<br />
move.w $C(a0),$C(a1)<br />
move.w #$100,$10(a1)<br />
</asm><br />
Two throwing routines? Of course, one for each claw, so we will have to update them both:<br />
<asm><br />
Obj1F_MakeFire: ; XREF: Obj1F_WaitFire<br />
move.w #$3B,$30(a0)<br />
move.b #6,$1C(a0) ; use firing animation<br />
bsr.w SingleObjLoad<br />
bne.s Obj1F_MakeFire2<br />
_move.b #$1F,0(a1) ; load left fireball<br />
move.b #6,$24(a1)<br />
move.w 8(a0),8(a1)<br />
subi.w #$10,8(a1)<br />
move.w $C(a0),$C(a1)<br />
move.w #-$100,$10(a1)<br />
move.b #$51,d0<br />
jsr PlaySound ;play throwing sound<br />
<br />
Obj1F_MakeFire2:<br />
bsr.w SingleObjLoad<br />
bne.s locret_9618<br />
_move.b #$1F,0(a1) ; load right fireball<br />
move.b #6,$24(a1)<br />
move.w 8(a0),8(a1)<br />
addi.w #$10,8(a1)<br />
move.w $C(a0),$C(a1)<br />
move.w #$100,$10(a1)<br />
move.b #$51,d0<br />
jsr PlaySound ;play throwing sound<br />
</asm><br />
finally an audiable Crabmeat.<br />
<br />
===Orbinaught===<br />
Looks like this one can have sound too, it also throws something at sonic, so lets locate the firing/throwing routine:<br />
<asm><br />
Obj60_FireOrb:<br />
move.w #-$200,$10(a0) ; move orb to the left (quickly)<br />
btst #0,$22(a1)<br />
beq.s Obj60_Display2<br />
neg.w $10(a0)<br />
</asm><br />
What? There is only one, when the last had two? Yes, that is right, the same routine is used four times, so just simply add these lines after what is above:<br />
<asm><br />
move.b #$51,d0<br />
jsr PlaySound ;play throwing sound<br />
</asm><br />
<br />
===Ball Hog===<br />
Ball Hog also can have sound added, so lets find the throwing routine:<br />
<asm><br />
loc_8C0A:<br />
add.w d0,8(a1)<br />
addi.w #$C,$C(a1)<br />
move.b $28(a0),$28(a1) ; copy object type from Ball Hog<br />
</asm><br />
and add after it:<br />
<asm><br />
move.b #$51,d0<br />
jsr PlaySound ;play throwing sound<br />
</asm><br />
<br />
==Fixing the sound test on the level select==<br />
Now we finally get to correcting the level select. First off, we do a sort of addition to the sonic 1 level select that has been added to the simon wai prototype, but not yet to the sonic 1 level select, music.<br />
===music upon entry of level select===<br />
locate:<br />
<asm><br />
LevelSelect:<br />
move.b #4,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
bsr.w LevSelControls<br />
bsr.w RunPLC_RAM<br />
tst.l ($FFFFF680).w<br />
bne.s LevelSelect<br />
andi.b #$F0,($FFFFF605).w ; is A, B, C, or Start pressed?<br />
beq.s LevelSelect ; if not, branch<br />
move.w ($FFFFFF82).w,d0<br />
cmpi.w #$14,d0 ; have you selected item $14 (sound test)?<br />
bne.s LevSel_Level_SS ; if not, go to Level/SS subroutine<br />
move.w ($FFFFFF84).w,d0<br />
addi.w #$80,d0<br />
tst.b ($FFFFFFE3).w ; is Japanese Credits cheat on?<br />
beq.s LevSel_NoCheat ; if not, branch<br />
cmpi.w #$9F,d0 ; is sound $9F being played?<br />
beq.s LevSel_Ending ; if yes, branch<br />
cmpi.w #$9E,d0 ; is sound $9E being played?<br />
beq.s LevSel_Credits ; if yes, branch<br />
</asm><br />
and add before the label:<br />
<asm><br />
move.w #$2F,d0<br />
jsr PlaySound<br />
</asm><br />
<br />
the result should look like this:<br />
<asm><br />
bsr.w LevSelTextLoad<br />
move.w #$2F,d0<br />
jsr PlaySound<br />
; ---------------------------------------------------------------------------<br />
; Level Select<br />
; ---------------------------------------------------------------------------<br />
<br />
LevelSelect:<br />
move.b #4,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
bsr.w LevSelControls<br />
bsr.w RunPLC_RAM<br />
tst.l ($FFFFF680).w<br />
bne.s LevelSelect<br />
andi.b #$F0,($FFFFF605).w ; is A, B, C, or Start pressed?<br />
beq.s LevelSelect ; if not, branch<br />
move.w ($FFFFFF82).w,d0<br />
cmpi.w #$14,d0 ; have you selected item $14 (sound test)?<br />
bne.s LevSel_Level_SS ; if not, go to Level/SS subroutine<br />
move.w ($FFFFFF84).w,d0<br />
addi.w #$80,d0<br />
tst.b ($FFFFFFE3).w ; is Japanese Credits cheat on?<br />
beq.s LevSel_NoCheat ; if not, branch<br />
cmpi.w #$9F,d0 ; is sound $9F being played?<br />
beq.s LevSel_Ending ; if yes, branch<br />
cmpi.w #$9E,d0 ; is sound $9E being played?<br />
beq.s LevSel_Credits ; if yes, branch<br />
</asm><br />
<br />
===fixing the sound test===<br />
Okay, there is a lot that needs fixing here, the sonic 1 sound test seems to be set up for the old driver not the new one, first off lets look at par 1 of the level select code:<br />
<asm><br />
LevelSelect:<br />
move.b #4,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
bsr.w LevSelControls<br />
bsr.w RunPLC_RAM<br />
tst.l ($FFFFF680).w<br />
bne.s LevelSelect<br />
andi.b #$F0,($FFFFF605).w ; is A, B, C, or Start pressed?<br />
beq.s LevelSelect ; if not, branch<br />
move.w ($FFFFFF82).w,d0<br />
cmpi.w #$14,d0 ; have you selected item $14 (sound test)?<br />
bne.s LevSel_Level_SS ; if not, go to Level/SS subroutine<br />
move.w ($FFFFFF84).w,d0<br />
addi.w #$80,d0<br />
tst.b ($FFFFFFE3).w ; is Japanese Credits cheat on?<br />
beq.s LevSel_NoCheat ; if not, branch<br />
cmpi.w #$9F,d0 ; is sound $9F being played?<br />
beq.s LevSel_Ending ; if yes, branch<br />
cmpi.w #$9E,d0 ; is sound $9E being played?<br />
beq.s LevSel_Credits ; if yes, branch<br />
<br />
LevSel_NoCheat:<br />
cmpi.w #$94,d0 ; is sound $80-$94 being played?<br />
bcs.s LevSel_PlaySnd ; if yes, branch<br />
cmpi.w #$A0,d0 ; is sound $95-$A0 being played?<br />
bcs.s LevelSelect ; if yes, branch<br />
<br />
LevSel_PlaySnd:<br />
bsr.w PlaySound_Special<br />
bra.s LevelSelect<br />
; ===========================================================================<br />
<br />
LevSel_Ending: ; XREF: LevelSelect<br />
move.b #$18,($FFFFF600).w ; set screen mode to $18 (Ending)<br />
move.w #$600,($FFFFFE10).w ; set level to 0600 (Ending)<br />
rts <br />
; ===========================================================================<br />
<br />
LevSel_Credits: ; XREF: LevelSelect<br />
move.b #$1C,($FFFFF600).w ; set screen mode to $1C (Credits)<br />
move.b #$26,d0<br />
bsr.w PlaySound_Special ; play credits music<br />
move.w #0,($FFFFFFF4).w<br />
rts <br />
; ===========================================================================<br />
<br />
LevSel_Level_SS: ; XREF: LevelSelect<br />
add.w d0,d0<br />
move.w LSelectPointers(pc,d0.w),d0 ; load level number<br />
bmi.w LevelSelect<br />
cmpi.w #$700,d0 ; check if level is 0700 (Special Stage)<br />
bne.s LevSel_Level ; if not, branch<br />
move.b #$10,($FFFFF600).w ; set screen mode to $10 (Special Stage)<br />
clr.w ($FFFFFE10).w ; clear level<br />
move.b #3,($FFFFFE12).w ; set lives to 3<br />
moveq #0,d0<br />
move.w d0,($FFFFFE20).w ; clear rings<br />
move.l d0,($FFFFFE22).w ; clear time<br />
move.l d0,($FFFFFE26).w ; clear score<br />
rts <br />
; ===========================================================================<br />
<br />
LevSel_Level: ; XREF: LevSel_Level_SS<br />
andi.w #$3FFF,d0<br />
move.w d0,($FFFFFE10).w ; set level number<br />
<br />
PlayLevel: ; XREF: ROM:00003246�j ...<br />
move.b #$C,($FFFFF600).w ; set screen mode to $0C (level)<br />
move.b #3,($FFFFFE12).w ; set lives to 3<br />
moveq #0,d0<br />
move.w d0,($FFFFFE20).w ; clear rings<br />
move.l d0,($FFFFFE22).w ; clear time<br />
move.l d0,($FFFFFE26).w ; clear score<br />
move.b d0,($FFFFFE16).w ; clear special stage number<br />
move.b d0,($FFFFFE57).w ; clear emeralds<br />
move.l d0,($FFFFFE58).w ; clear emeralds<br />
move.l d0,($FFFFFE5C).w ; clear emeralds<br />
move.b d0,($FFFFFE18).w ; clear continues<br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
rts <br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Level select - level pointers<br />
; ---------------------------------------------------------------------------<br />
LSelectPointers:<br />
binclude misc/ls_point.bin<br />
align 2<br />
</asm><br />
my, oh my... first off we do not need all that japanese cheat junk, and second we do not need any gaps in the sound test, so lets remove that junk:<br />
<asm><br />
LevelSelect:<br />
move.b #4,($FFFFF62A).w<br />
bsr.w DelayProgram<br />
bsr.w LevSelControls<br />
bsr.w RunPLC_RAM<br />
tst.l ($FFFFF680).w<br />
bne.s LevelSelect<br />
andi.b #$F0,($FFFFF605).w ; is A, B, C, or Start pressed?<br />
beq.s LevelSelect ; if not, branch<br />
move.w ($FFFFFF82).w,d0<br />
cmpi.w #$14,d0 ; have you selected item $14 (sound test)?<br />
bne.s LevSel_Level_SS ; if not, go to Level/SS subroutine<br />
move.w ($FFFFFF84).w,d0<br />
bsr.w PlaySound_Special<br />
bra.s LevelSelect<br />
; ===========================================================================<br />
<br />
LevSel_Level_SS: ; XREF: LevelSelect<br />
add.w d0,d0<br />
move.w LSelectPointers(pc,d0.w),d0 ; load level number<br />
bmi.w LevelSelect<br />
cmpi.w #$700,d0 ; check if level is 0700 (Special Stage)<br />
bne.s LevSel_Level ; if not, branch<br />
move.b #$10,($FFFFF600).w ; set screen mode to $10 (Special Stage)<br />
clr.w ($FFFFFE10).w ; clear level<br />
move.b #3,($FFFFFE12).w ; set lives to 3<br />
moveq #0,d0<br />
move.w d0,($FFFFFE20).w ; clear rings<br />
move.l d0,($FFFFFE22).w ; clear time<br />
move.l d0,($FFFFFE26).w ; clear score<br />
rts <br />
; ===========================================================================<br />
<br />
LevSel_Level: ; XREF: LevSel_Level_SS<br />
andi.w #$3FFF,d0<br />
move.w d0,($FFFFFE10).w ; set level number<br />
<br />
PlayLevel: ; XREF: ROM:00003246�j ...<br />
move.b #$C,($FFFFF600).w ; set screen mode to $0C (level)<br />
move.b #3,($FFFFFE12).w ; set lives to 3<br />
moveq #0,d0<br />
move.w d0,($FFFFFE20).w ; clear rings<br />
move.l d0,($FFFFFE22).w ; clear time<br />
move.l d0,($FFFFFE26).w ; clear score<br />
move.b d0,($FFFFFE16).w ; clear special stage number<br />
move.b d0,($FFFFFE57).w ; clear emeralds<br />
move.l d0,($FFFFFE58).w ; clear emeralds<br />
move.l d0,($FFFFFE5C).w ; clear emeralds<br />
move.b d0,($FFFFFE18).w ; clear continues<br />
move.b #$E1,d0<br />
bsr.w PlaySound_Special ; fade out music<br />
rts <br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; Level select - level pointers<br />
; ---------------------------------------------------------------------------<br />
LSelectPointers:<br />
binclude misc/ls_point.bin<br />
align 2<br />
</asm><br />
now lets look at the next part of the level select:<br />
<asm><br />
LevSelControls: ; XREF: LevelSelect<br />
move.b ($FFFFF605).w,d1<br />
andi.b #3,d1 ; is up/down pressed and held?<br />
bne.s LevSel_UpDown ; if yes, branch<br />
subq.w #1,($FFFFFF80).w ; subtract 1 from time to next move<br />
bpl.s LevSel_SndTest ; if time remains, branch<br />
<br />
LevSel_UpDown:<br />
move.w #$B,($FFFFFF80).w ; reset time delay<br />
move.b ($FFFFF604).w,d1<br />
andi.b #3,d1 ; is up/down pressed?<br />
beq.s LevSel_SndTest ; if not, branch<br />
move.w ($FFFFFF82).w,d0<br />
btst #0,d1 ; is up pressed?<br />
beq.s LevSel_Down ; if not, branch<br />
subq.w #1,d0 ; move up 1 selection<br />
bcc.s LevSel_Down<br />
moveq #$14,d0 ; if selection moves below 0, jump to selection $14<br />
<br />
LevSel_Down:<br />
btst #1,d1 ; is down pressed?<br />
beq.s LevSel_Refresh ; if not, branch<br />
addq.w #1,d0 ; move down 1 selection<br />
cmpi.w #$15,d0<br />
bcs.s LevSel_Refresh<br />
moveq #0,d0 ; if selection moves above $14, jump to selection 0<br />
<br />
LevSel_Refresh:<br />
move.w d0,($FFFFFF82).w ; set new selection<br />
bsr.w LevSelTextLoad ; refresh text<br />
rts <br />
; ===========================================================================<br />
<br />
LevSel_SndTest: ; XREF: LevSelControls<br />
cmpi.w #$14,($FFFFFF82).w ; is item $14 selected?<br />
bne.s LevSel_NoMove ; if not, branch<br />
move.b ($FFFFF605).w,d1<br />
andi.b #$C,d1 ; is left/right pressed?<br />
beq.s LevSel_NoMove ; if not, branch<br />
move.w ($FFFFFF84).w,d0<br />
btst #2,d1 ; is left pressed?<br />
beq.s LevSel_Right ; if not, branch<br />
subq.w #1,d0 ; subtract 1 from sound test<br />
bcc.s LevSel_Right<br />
moveq #$4F,d0 ; if sound test moves below 0, set to $4F<br />
<br />
LevSel_Right:<br />
btst #3,d1 ; is right pressed?<br />
beq.s LevSel_Refresh2 ; if not, branch<br />
addq.w #1,d0 ; add 1 to sound test<br />
cmpi.w #$50,d0<br />
bcs.s LevSel_Refresh2<br />
moveq #0,d0 ; if sound test moves above $4F, set to 0<br />
<br />
LevSel_Refresh2:<br />
move.w d0,($FFFFFF84).w ; set sound test number<br />
bsr.w LevSelTextLoad ; refresh text<br />
<br />
LevSel_NoMove:<br />
rts <br />
</asm><br />
seems that we have now located the code that limits the level select to $80 - $CF, so we fix it:<br />
<asm><br />
LevSelControls: ; XREF: LevelSelect<br />
move.b ($FFFFF605).w,d1<br />
andi.b #3,d1 ; is up/down pressed and held?<br />
bne.s LevSel_UpDown ; if yes, branch<br />
subq.w #1,($FFFFFF80).w ; subtract 1 from time to next move<br />
bpl.s LevSel_SndTest ; if time remains, branch<br />
<br />
LevSel_UpDown:<br />
move.w #$B,($FFFFFF80).w ; reset time delay<br />
move.b ($FFFFF604).w,d1<br />
andi.b #3,d1 ; is up/down pressed?<br />
beq.s LevSel_SndTest ; if not, branch<br />
move.w ($FFFFFF82).w,d0<br />
btst #0,d1 ; is up pressed?<br />
beq.s LevSel_Down ; if not, branch<br />
subq.w #1,d0 ; move up 1 selection<br />
bcc.s LevSel_Down<br />
moveq #$14,d0 ; if selection moves below 0, jump to selection $14<br />
<br />
LevSel_Down:<br />
btst #1,d1 ; is down pressed?<br />
beq.s LevSel_Refresh ; if not, branch<br />
addq.w #1,d0 ; move down 1 selection<br />
cmpi.w #$15,d0<br />
bcs.s LevSel_Refresh<br />
moveq #0,d0 ; if selection moves above $14, jump to selection 0<br />
<br />
LevSel_Refresh:<br />
move.w d0,($FFFFFF82).w ; set new selection<br />
bsr.w LevSelTextLoad ; refresh text<br />
rts <br />
; ===========================================================================<br />
<br />
LevSel_SndTest: ; XREF: LevSelControls<br />
cmpi.w #$14,($FFFFFF82).w ; is item $14 selected?<br />
bne.s LevSel_NoMove ; if not, branch<br />
move.b ($FFFFF605).w,d1<br />
andi.b #$C,d1 ; is left/right pressed?<br />
beq.s LevSel_NoMove ; if not, branch<br />
move.w ($FFFFFF84).w,d0<br />
btst #2,d1 ; is left pressed?<br />
beq.s LevSel_Right ; if not, branch<br />
subq.w #1,d0 ; subtract 1 from sound test<br />
bcc.s LevSel_Right<br />
moveq #$FF,d0 ; if sound test moves below 0, set to $4F<br />
<br />
LevSel_Right:<br />
btst #3,d1 ; is right pressed?<br />
beq.s LevSel_Refresh2 ; if not, branch<br />
addq.w #1,d0 ; add 1 to sound test<br />
cmpi.w #$100,d0<br />
bcs.s LevSel_Refresh2<br />
moveq #0,d0 ; if sound test moves above $4F, set to 0<br />
<br />
LevSel_Refresh2:<br />
move.w d0,($FFFFFF84).w ; set sound test number<br />
bsr.w LevSelTextLoad ; refresh text<br />
<br />
LevSel_NoMove:<br />
rts <br />
</asm><br />
Thought it was fixed already? well even though it works right, the display is still wrong, so we need to fix it.<br />
so lets go to:<br />
<asm><br />
loc_3550:<br />
move.l #$6C300003,($C00004).l ; screen position (sound test)<br />
move.w ($FFFFFF84).w,d0<br />
addi.w #$80,d0<br />
move.b d0,d2<br />
lsr.b #4,d0<br />
bsr.w LevSel_ChgSnd<br />
move.b d2,d0<br />
bsr.w LevSel_ChgSnd<br />
rts <br />
</asm><br />
and remove this line:<br />
<asm><br />
addi.w #$80,d0<br />
</asm><br />
I hope you make good use of this driver and make many great hacks.<br />
==Credits==<br />
I give credit where it is due:<br />
* '''Esrael''' for the original port of the Sonic 3 Driver, which I fixed up.<br />
* '''Tornado''' for the original hackish guide on SSRG<br />
* '''Selbi''' for posting info on most of, but not all the sound test values which I had to finish<br />
<br />
{{S1Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=Template:S2Howtos&diff=208754
Template:S2Howtos
2014-05-25T04:40:28Z
<p>Kram1024: </p>
<hr />
<div>{| class="bottomtemplate" align="center"<br />
|-<br />
! class="bottomtemphead" | [[SCHG How-To:Guide|SCHG How-To Guide]]: ''Sonic the Hedgehog 2'' (16-bit)<br />
|-<br />
! class="bottomtemphead" | Fixing Bugs<br />
|-<br />
|class="bottomtemptext" align="center" | [[SCHG How-to:Fix demo playback|Fix Demo Playback]] | [[SCHG How-to:Fix a race condition with Pattern Load Cues|Fix a Race Condition with Pattern Load Cues]] | [[SCHG How-to:Fix bugs relating to Super Sonic|Fix Super Sonic Bugs]] | [[SCHG How-to:Use correct height when roll jumping|Use Correct Height When Roll Jumping]] | [[SCHG How-to:Fix jump height bug when exiting water|Fix Jump Height Bug When Exiting Water]] | [[SCHG How-to:Fix Sonic 2's buggy spindash code and add spindash speeds|Fix Spin Dash Code and Add Spin Dash Speeds]] | [[SCHG How-to:Fix screen boundary spindash bug|Fix Screen Boundary Spin Dash Bug]] | [[SCHG How-to:Correct Drowning Bugs in Sonic 2|Correct Drowning Bugs]] | [[SCHG How-to:Fix camera y position for Tails|Fix Camera Y Position for Tails]] | [[SCHG How-to:Fix Tails subanimation error|Fix Tails Subanimation Error]] | [[SCHG How-to:Fix Tails' respawn speeds|Fix Tails' Respawn Speeds]] | [[SCHG How-to:Fix Accidental Deletion of Scattered Rings|Fix Accidental Deletion of Scattered Rings]] | [[SCHG How-to:Fix Ring Timers|Fix Ring Timers]] | [[SCHG How-to:Fix Rexon crash|Fix Rexon Crash]] | [[SCHG How-to:Fix monitor collision bug|Fix Monitor Collision Bug]] | [[SCHG How-to:Fix the EHZ Deformation bug|Fix EHZ Deformation Bug]] | [[SCHG How-to:Correct CPZ boss attack behavior|Correct CPZ Boss Attack Behavior]] | [[SCHG How-to:Fix bug in ARZ Boss arrow's platform behavior|Fix Bug in ARZ Boss Arrow's Platform Behavior]] | [[SCHG How-to:Fix ARZ Boss Walking on Air Glitch|Fix ARZ Boss Walking on Air Glitch]] | [[SCHG How-to:Fix ARZ boss sprite behavior|Fix ARZ Boss Sprite Behavior]] | [[SCHG How-to:Fix multiple CNZ boss bugs|Fix Multiple CNZ Boss Bugs]] | [[SCHG How-to:Fix Hill Top's background scrolling mountains|Fix HTZ Background Scrolling Mountains]] | [[SCHG How-to:Fix the OOZ launcher speed up glitch|Fix OOZ Launcher Speed Up Glitch]] | [[SCHG How-to:Fix DEZ Eggrobo boss collision glitch|Fix DEZ Giant Mech Collision Glitch]] | [[SCHG How-to:Fix Boss Deconstruction Behavior|Fix Boss Deconstruction Behavior]] | [[SCHG How-to:Fix Speed Bugs in Sonic 2|Fix Speed Bugs]]<br />
|-<br />
! class="bottomtemphead" | Design Choices and Features<br />
|-<br />
|class="bottomtemptext" align="center" | [[SCHG How-to:Remove the Air Speed Cap|Remove the Air Speed Cap]] | [[SCHG How-to:Disable floor collision while dying|Disable Floor Collision While Dying]] | [[SCHG How-to:Modify Transformation Behavior in Sonic 2|Modify Super Sonic Transformation Methods & Behavior]] | [[SCHG How-to:Enable/Disable Tails in certain levels|Enable/Disable Tails in Certain Levels]] | [[SCHG How-to:Collide with water after being hurt|Collide with Water After Being Hurt]] | [[SCHG How-to:Retain Rings when returning at a Star Post|Retain Rings When Returning at a Star Post]] | [[SCHG How-to:Create Insta-kill and High Jump Monitors|Create Insta-kill and High Jump Monitors]] | [[SCHG How-to:Create Clone and Special Stage Monitors|Create Clone and Special Stage Monitors]] | [[SCHG How-to:Improve the fade in\fade out progression routines in Sonic 2|Improve the Fade In\Fade Out Progression Routines]] | [[SCHG How-to:Fix Scattered Rings Underwater Physics|Fix Scattered Rings' Underwater Physics]] | [[SCHG_How-to:Insert Labyrinth Zone water ripple effect in Sonic 2|Insert LZ Water Ripple Effect]] | [[SCHG How-to:Restore lost CPZ boss feature|Restore Lost CPZ Boss Feature]] | [[SCHG How-to:Prevent SCZ Tornado spin dash death|Prevent SCZ Tornado Spin Dash Death]] | [[SCHG How-to:Improve ObjectMove subroutines|Improve ObjectMove Subroutines]] | [[SCHG How-to:Port Knuckles into Sonic 2|Port Knuckles]] | [[SCHG How-to:Port Sonic 3k's rings manager to Sonic 2|Port S3K Rings Manager]] | [[SCHG_How-to:Port S3K Object Manager into Sonic 2|Port S3K Object Manager]] | [[SCHG How-to:Port S3K Priority Manager into Sonic 2|Port S3K Priority Manager]] | [[SCHG How-to:Edit the Level Order in Sonic 2 with ASM‎|Edit Level Order with ASM‎]] | [[SCHG How-to:Alter the Ring Requirements in the Special Stages|Alter Ring Requirements in Special Stages]] | [[SCHG How-to:Change the Special Stage characters to use normal DPLCs|Make Special Stage Characters Use Normal DPLCs]] | [[SCHG How-to:Speed Up Ring Loss Process (With Underwater)|Speed Up Ring Loss Process]]<br />
|-<br />
! class="bottomtemphead" | Sound Features<br />
|-<br />
|class="bottomtemptext" align="center" | [[SCHG How-to:Port Sonic 1's Sound Driver to Sonic 2|Port Sonic 1 Sound Driver]] | [[SCHG_How-to:Port_the_Sonic_2_Clone_Sound_Driver_to_the_HG_version_of_Sonic_2|Port Sonic 2 Clone Driver]] | [[SCHG How-to:Expand the music index to start at $00 instead of $80 (Sonic 2 Clone Driver version)|Expand the Music Index to Start at $00 (Sonic 2 Clone Driver Version)]]|[[SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2]]<br />
|-<br />
! class="bottomtemphead" | Extending the Game<br />
|-<br />
|class="bottomtemptext" align="center" | [[SCHG How-to:Extend the level index past $10 in Sonic 2|Extend the Level Index Past $10]] | [[SCHG_How-to:Extend_the_Level_Select_in_Sonic_2|Extend the Level Select]] | [[SCHG How-to:Extend the water tables in Sonic 2|Extend Water Tables]] | [[SCHG How-to:Add Extra Characters To Sonic 2|Add Extra Characters]] | [[SCHG_How-to:Free up 2 universal SSTs|Free Up 2 Universal SSTs]]<br />
|}<br />
<noinclude>[[Category:Navigational Templates (Miscellaneous)|{{PAGENAME}}]]</noinclude></div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208753
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-25T04:34:58Z
<p>Kram1024: /* sound effects */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==<br />
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><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
move sr,-(sp)<br />
movem.l d0-a6,-(sp)<br />
move #$2700,sr<br />
lea (Z80_Bus_Request).l,a3<br />
lea (Z80_Reset).l,a2<br />
moveq #0,d2<br />
move.w #$100,d1<br />
move.w d1,(a3) ; get Z80 bus<br />
move.w d1,(a2) ; release Z80 reset (was held high by console on startup)<br />
- btst d2,(a3)<br />
bne.s - ; wait until the 68000 has the bus<br />
jsr DecompressSoundDriver(pc)<br />
btst #0,(VDP_control_port+1).l ; check video mode<br />
sne (Z80_RAM+zPalModeByte).l ; set if PAL<br />
move.w d2,(a2) ; hold Z80 reset<br />
move.w d2,(a3) ; release Z80 bus<br />
moveq #$E6,d0<br />
- dbf d0,- ; wait for 2,314 cycles<br />
move.w d1,(a2) ; release Z80 reset<br />
movem.l (sp)+,d0-a6<br />
move (sp)+,sr<br />
rts<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; slightly modified Saxman decompression of the sound driver<br />
; a4 == $A00000 (start of Z80 RAM)<br />
; a5 == current position in Z80 RAM?<br />
; a6 == current position in compressed sound driver?<br />
; d0 == data to decompress? (byte)<br />
; d4 == ???<br />
; d5 == ???<br />
; d6 == ???<br />
; d7 == bytes left to decompress<br />
; loc_EC04A:<br />
DecompressSoundDriver:<br />
lea Snd_Driver(pc),a6<br />
; WARNING: the build script needs editing if you rename this label<br />
movewZ80CompSize: move.w #Snd_Driver_End-Snd_Driver,d7 ; patched (by fixpointer.exe) after compression since the exact size can't be known beforehand<br />
moveq #0,d6<br />
lea (Z80_RAM).l,a5<br />
moveq #0,d5<br />
lea (Z80_RAM).l,a4<br />
<br />
loc_EC062:<br />
lsr.w #1,d6<br />
btst #8,d6<br />
bne.s +<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d6<br />
ori.w #$FF00,d6<br />
+<br />
btst #0,d6<br />
beq.s loc_EC086<br />
jsr sub_EC0DE(pc)<br />
move.b d0,(a5)+<br />
addq.w #1,d5<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC086:<br />
jsr sub_EC0DE(pc)<br />
moveq #0,d4<br />
move.b d0,d4<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d3<br />
andi.w #$F,d3<br />
addq.w #2,d3<br />
andi.w #$F0,d0<br />
lsl.w #4,d0<br />
add.w d0,d4<br />
addi.w #$12,d4<br />
andi.w #$FFF,d4<br />
move.w d5,d0<br />
andi.w #$F000,d0<br />
add.w d0,d4<br />
cmp.w d4,d5<br />
bhs.s loc_EC0CC<br />
subi.w #$1000,d4<br />
bcc.s loc_EC0CC<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b #0,(a5)+<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC0CC:<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b (a4,d4.w),(a5)+<br />
addq.w #1,d4<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; End of function DecompressSoundDriver<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_EC0DE:<br />
move.b (a6)+,d0<br />
subq.w #1,d7<br />
bne.s +<br />
addq.w #4,sp<br />
+<br />
rts<br />
; End of function sub_EC0DE<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; S2 sound driver (Sound driver compression (slightly modified Saxman))<br />
; ---------------------------------------------------------------------------<br />
; loc_EC0E8:<br />
Snd_Driver:<br />
save<br />
include "s2.sounddriver.asm" ; CPU Z80<br />
restore<br />
padding off<br />
!org (Snd_Driver+Size_of_Snd_driver_guess) ; don't worry; I know what I'm doing<br />
<br />
<br />
; loc_ED04C:<br />
Snd_Driver_End:<br />
<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ---------------------------------------------------------------------------<br />
; the DAC data has to line up with the end of the bank.<br />
<br />
; actually it only has to fit within one bank, but we'll line it up to the end anyway<br />
; because the padding gives the sound driver some room to grow<br />
cnop -Size_of_DAC_samples, $8000<br />
<br />
; ---------------------------------------------------------------------------<br />
; DAC samples<br />
; ---------------------------------------------------------------------------<br />
; loc_ED100:<br />
SndDAC_Start:<br />
<br />
SndDAC_Sample1:<br />
BINCLUDE "sound/DAC/Sample 1.bin"<br />
SndDAC_Sample1_End<br />
<br />
SndDAC_Sample2:<br />
BINCLUDE "sound/DAC/Sample 2.bin"<br />
SndDAC_Sample2_End<br />
<br />
SndDAC_Sample5:<br />
BINCLUDE "sound/DAC/Sample 5.bin"<br />
SndDAC_Sample5_End<br />
<br />
SndDAC_Sample6:<br />
BINCLUDE "sound/DAC/Sample 6.bin"<br />
SndDAC_Sample6_End<br />
<br />
SndDAC_Sample3:<br />
BINCLUDE "sound/DAC/Sample 3.bin"<br />
SndDAC_Sample3_End<br />
<br />
SndDAC_Sample4:<br />
BINCLUDE "sound/DAC/Sample 4.bin"<br />
SndDAC_Sample4_End<br />
<br />
SndDAC_Sample7:<br />
BINCLUDE "sound/DAC/Sample 7.bin"<br />
SndDAC_Sample7_End<br />
<br />
SndDAC_End<br />
<br />
if SndDAC_End - SndDAC_Start > $8000<br />
fatal "DAC samples must fit within $8000 bytes, but you have $\{SndDAC_End-SndDAC_Start } bytes of DAC samples."<br />
endif<br />
if SndDAC_End - SndDAC_Start > Size_of_DAC_samples<br />
fatal "Size_of_DAC_samples = $\{Size_of_DAC_samples}, but you have $\{SndDAC_End-SndDAC_Start} bytes of DAC samples."<br />
endif<br />
<br />
; ---------------------------------------------------------------------------<br />
; Music pointers<br />
; ---------------------------------------------------------------------------<br />
align $8000<br />
<br />
; loc_F0000:<br />
MusicPoint1:<br />
MusPtr_Continue: rom_ptr_z80 Mus_Continue-MusicPoint2<br />
<br />
<br />
Mus_Continue: BINCLUDE "sound/music/Continue.bin"<br />
<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ----------------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ----------------------------------------------------------------------------------<br />
; the PCM data has to line up with the end of the bank.<br />
cnop -Size_of_SEGA_sound, $8000<br />
<br />
; -------------------------------------------------------------------------------<br />
; Sega Intro Sound<br />
; 8-bit unsigned raw audio at 16Khz<br />
; -------------------------------------------------------------------------------<br />
; loc_F1E8C:<br />
Snd_Sega: BINCLUDE "sound/PCM/SEGA.bin"<br />
Snd_Sega_End:<br />
<br />
if Snd_Sega_End - Snd_Sega > $8000<br />
fatal "Sega sound must fit within $8000 bytes, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
if Snd_Sega_End - Snd_Sega > Size_of_SEGA_sound<br />
fatal "Size_of_SEGA_sound = $\{Size_of_SEGA_sound}, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
<br />
; ------------------------------------------------------------------------------<br />
; Music pointers<br />
; ------------------------------------------------------------------------------<br />
align $8000<br />
soundBankStart := *<br />
<br />
; loc_F8000:<br />
MusicPoint2:<br />
MusPtr_CNZ_2P: rom_ptr_z80 Mus_CNZ_2P<br />
MusPtr_EHZ: rom_ptr_z80 Mus_EHZ<br />
MusPtr_MTZ: rom_ptr_z80 Mus_MTZ<br />
MusPtr_CNZ: rom_ptr_z80 Mus_CNZ<br />
MusPtr_MCZ: rom_ptr_z80 Mus_MCZ<br />
MusPtr_MCZ_2P: rom_ptr_z80 Mus_MCZ_2P<br />
MusPtr_ARZ: rom_ptr_z80 Mus_ARZ<br />
MusPtr_DEZ: rom_ptr_z80 Mus_DEZ<br />
MusPtr_SpecStage: rom_ptr_z80 Mus_SpecStage<br />
MusPtr_Options: rom_ptr_z80 Mus_Options<br />
MusPtr_Ending: rom_ptr_z80 Mus_Ending<br />
MusPtr_EndBoss: rom_ptr_z80 Mus_EndBoss<br />
MusPtr_CPZ: rom_ptr_z80 Mus_CPZ<br />
MusPtr_Boss: rom_ptr_z80 Mus_Boss<br />
MusPtr_SCZ: rom_ptr_z80 Mus_SCZ<br />
MusPtr_OOZ: rom_ptr_z80 Mus_OOZ<br />
MusPtr_WFZ: rom_ptr_z80 Mus_WFZ<br />
MusPtr_EHZ_2P: rom_ptr_z80 Mus_EHZ_2P<br />
MusPtr_2PResult: rom_ptr_z80 Mus_2PResult<br />
MusPtr_SuperSonic: rom_ptr_z80 Mus_SuperSonic<br />
MusPtr_HTZ: rom_ptr_z80 Mus_HTZ<br />
MusPtr_ExtraLife: rom_ptr_z80 Mus_ExtraLife<br />
MusPtr_Title: rom_ptr_z80 Mus_Title<br />
MusPtr_EndLevel: rom_ptr_z80 Mus_EndLevel<br />
MusPtr_GameOver: rom_ptr_z80 Mus_GameOver<br />
MusPtr_Invincible: rom_ptr_z80 Mus_Invincible<br />
MusPtr_Emerald: rom_ptr_z80 Mus_Emerald<br />
MusPtr_HPZ: rom_ptr_z80 Mus_HPZ<br />
MusPtr_Drowning: rom_ptr_z80 Mus_Drowning<br />
MusPtr_Credits: rom_ptr_z80 Mus_Credits<br />
<br />
; loc_F803C:<br />
Mus_HPZ: BINCLUDE "sound/music/HPZ.bin"<br />
Mus_Drowning: BINCLUDE "sound/music/Drowning.bin"<br />
Mus_Invincible: BINCLUDE "sound/music/Invincible.bin"<br />
Mus_CNZ_2P: BINCLUDE "sound/music/CNZ_2p.bin"<br />
Mus_EHZ: BINCLUDE "sound/music/EHZ.bin"<br />
Mus_MTZ: BINCLUDE "sound/music/MTZ.bin"<br />
Mus_CNZ: BINCLUDE "sound/music/CNZ.bin"<br />
Mus_MCZ: BINCLUDE "sound/music/MCZ.bin"<br />
Mus_MCZ_2P: BINCLUDE "sound/music/MCZ_2p.bin"<br />
Mus_ARZ: BINCLUDE "sound/music/ARZ.bin"<br />
Mus_DEZ: BINCLUDE "sound/music/DEZ.bin"<br />
Mus_SpecStage: BINCLUDE "sound/music/SpecStg.bin"<br />
Mus_Options: BINCLUDE "sound/music/Options.bin"<br />
Mus_Ending: BINCLUDE "sound/music/Ending.bin"<br />
Mus_EndBoss: BINCLUDE "sound/music/End_Boss.bin"<br />
Mus_CPZ: BINCLUDE "sound/music/CPZ.bin"<br />
Mus_Boss: BINCLUDE "sound/music/Boss.bin"<br />
Mus_SCZ: BINCLUDE "sound/music/SCZ.bin"<br />
Mus_OOZ: BINCLUDE "sound/music/OOZ.bin"<br />
Mus_WFZ: BINCLUDE "sound/music/WFZ.bin"<br />
Mus_EHZ_2P: BINCLUDE "sound/music/EHZ_2p.bin"<br />
Mus_2PResult: BINCLUDE "sound/music/2player results screen.bin"<br />
Mus_SuperSonic: BINCLUDE "sound/music/Supersonic.bin"<br />
Mus_HTZ: BINCLUDE "sound/music/HTZ.bin"<br />
Mus_Title: BINCLUDE "sound/music/Title screen.bin"<br />
Mus_EndLevel: BINCLUDE "sound/music/End of level.bin"<br />
<br />
; The following act mostly like sound effects<br />
; despite being listed with the music.<br />
; This means they're uncompressed format with absolute pointers<br />
; instead of compressed with relative pointers.<br />
; Because they have absolute pointers,<br />
; they have to be assembled rather than BINCLUDE'd.<br />
; See below (right before Sound20) for other notes<br />
; about the sound format that apply to these too.<br />
<br />
;Mus_ExtraLife: BINCLUDE "sound/music/Extra life.bin"<br />
Mus_ExtraLife: dc.w z80_ptr(Mus_EL_Voices),$0603,$02CD<br />
dc.w z80_ptr(Mus_EL_DAC),$0000<br />
dc.w z80_ptr(Mus_EL_FM1),$E810<br />
dc.w z80_ptr(Mus_EL_FM2),$E810<br />
dc.w z80_ptr(Mus_EL_FM3),$E810<br />
dc.w z80_ptr(Mus_EL_FM4),$E810<br />
dc.w z80_ptr(Mus_EL_FM5),$E810<br />
dc.w z80_ptr(Mus_EL_PSG1),$D008,$0005<br />
dc.w z80_ptr(Mus_EL_PSG2),$DC08,$0005<br />
dc.w z80_ptr(Mus_EL_PSG3),$DC00,$0004<br />
Mus_EL_FM4: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM1: dc.b $E0,$80<br />
+ dc.b $EF,$00,$E8,$06,$D9,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$DB,$09,$D7,$D6,$06,$D9,$18,$F2<br />
Mus_EL_FM2: dc.b $EF,$01,$E8,$06,$E2,$01,$D6,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$D7,$09,$D4,$D2,$06,$D6,$18,$E2,$01,$F2<br />
Mus_EL_FM5: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM3: dc.b $E0,$80<br />
+ dc.b $EF,$02,$BA,$0C,$80,$06,$BA,$B8,$80,$03<br />
dc.b $B8,$06,$80,$03,$B8,$06,$BA,$18,$F2<br />
Mus_EL_PSG1: dc.b $E8,$06,$D6,$06,$03,$03,$06,$06,$E8,$00,$D7,$09<br />
dc.b $D4,$D2,$06,$D6,$18<br />
Mus_EL_PSG2:<br />
Mus_EL_PSG3: dc.b $F2<br />
Mus_EL_DAC: dc.b $88,$12,$06,$8B,$09,$09,$06,$88,$06,$8A,$88,$8A<br />
dc.b $88,$0C,$E4<br />
Mus_EL_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
<br />
<br />
;Mus_GameOver: BINCLUDE "sound/music/Game over.bin"<br />
Mus_GameOver: dc.w z80_ptr(MusGO_Voices),$0603,$02F2<br />
dc.w z80_ptr(MusGOver_DAC),$0000<br />
dc.w z80_ptr(MusGOver_FM1),$E80A<br />
dc.w z80_ptr(MusGOver_FM2),$F40F<br />
dc.w z80_ptr(MusGOver_FM3),$F40F<br />
dc.w z80_ptr(MusGOver_FM4),$F40D<br />
dc.w z80_ptr(MusGOver_FM5),$DC16<br />
dc.w z80_ptr(MusGOver_PSG),$D003,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC06,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC00,$0004<br />
MusGOver_FM1: dc.b $EF,$00<br />
dc.b $F0,$20,$01,$04,$05<br />
dc.b $80,$0C,$CA,$12,$80,$06,$CA,$80,$CB,$12,$C8,$1E<br />
dc.b $CA,$06,$80,$CA,$80,$CA,$80,$C6,$80,$C4,$12,$C8<br />
dc.b $0C,$80,$12,$C9,$04,$80,$C9,$C8,$06,$80,$C7,$80<br />
dc.b $C6,$80<br />
dc.b $F0,$28,$01,$18,$05<br />
dc.b $C5,$60,$F2<br />
MusGOver_FM2: dc.b $EF,$01,$80,$01,$D9,$06,$80,$D9,$80,$D6,$80,$D6<br />
dc.b $80,$D7,$15,$D7,$1B,$D9,$06,$80,$D9,$80,$D6,$80<br />
dc.b $D6,$80,$DC,$15,$DC,$1B,$F2<br />
MusGOver_FM3: dc.b $EF,$01,$D6,$0C,$D6,$D2,$D2,$D4,$15,$D4,$1B,$D6<br />
dc.b $0C,$D6,$D2,$D2,$D7,$15,$D7,$1B,$F2<br />
MusGOver_FM4: dc.b $EF,$02,$E2,$01,$AE,$06,$80,$AE,$80,$A9,$80,$A9<br />
dc.b $80,$AC,$15,$AB,$0C,$AC,$03,$AB,$0C,$AE,$06,$80<br />
dc.b $AE,$80,$A9,$80,$A9,$80,$B3,$15,$B2,$0C,$B3,$03<br />
dc.b $B2,$0C,$AE,$04,$80,$AE,$AD,$06,$80,$AC,$80,$AB<br />
dc.b $80,$AB,$60,$E2,$01,$F2<br />
MusGOver_FM5: dc.b $EF,$03,$80,$30,$D7,$12,$80,$03,$D7,$1B,$80,$30<br />
dc.b $DC,$12,$80,$03,$DC,$1B<br />
MusGOver_PSG: dc.b $F2<br />
MusGOver_DAC: dc.b $80,$18,$81<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(MusGOver_DAC)<br />
dc.b $F2<br />
MusGO_Voices: dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $3C,$33,$73,$30,$70,$94,$96,$9F,$9F,$12,$14,$00<br />
dc.b $0F,$04,$04,$0A,$0D,$2F,$4F,$0F,$2F,$33,$1A,$80,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$1C,$27,$28,$80<br />
dc.b $1F,$66,$53,$31,$22,$1C,$1F,$98,$1F,$12,$0F,$0F<br />
dc.b $0F,$00,$00,$00,$00,$FF,$0F,$0F,$0F,$8C,$8A,$8D,$8B<br />
<br />
;Mus_Emerald: BINCLUDE "sound/music/Got an emerald.bin"<br />
Mus_Emerald: dc.w z80_ptr(MusEmrldVoices),$0703,$01D5<br />
dc.w z80_ptr(MusEmeraldDAC),$0000<br />
dc.w z80_ptr(MusEmeraldFM1),$F408<br />
dc.w z80_ptr(MusEmeraldFM2),$F408<br />
dc.w z80_ptr(MusEmeraldFM3),$F407<br />
dc.w z80_ptr(MusEmeraldFM4),$F416<br />
dc.w z80_ptr(MusEmeraldFM5),$F416<br />
dc.w z80_ptr(MusEmeraldFM6),$F416<br />
dc.w z80_ptr(MusEmeraldPSG1),$F402,$0004<br />
dc.w z80_ptr(MusEmeraldPSG2),$F402,$0005<br />
dc.w z80_ptr(MusEmeraldPSG3),$F400,$0004<br />
MusEmeraldFM3: dc.b $E1,$02<br />
MusEmeraldFM1: dc.b $EF,$00,$C1,$06,$C4,$C9,$CD,$0C,$C9,$D0,$2A,$F2<br />
MusEmeraldFM2: dc.b $EF,$00,$BD,$06,$C1,$C4,$C9,$0C,$C6,$CB,$2A,$F2<br />
MusEmeraldFM4: dc.b $EF,$01,$C1,$0C,$C1,$06,$C4,$06,$80,$C4,$80,$C9<br />
dc.b $2A,$F2<br />
MusEmeraldFM5: dc.b $EF,$01,$C9,$0C,$C9,$06,$CD,$06,$80,$CD,$80,$D0<br />
dc.b $2A,$F2<br />
MusEmeraldFM6: dc.b $EF,$01,$C4,$0C,$C4,$06,$C9,$06,$80,$C9,$80,$CD<br />
dc.b $2A,$F2<br />
MusEmeraldPSG2: dc.b $80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusEmeraldPSG1: dc.b $E2,$01,$80,$02,$80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
MusEmeraldPSG3:<br />
MusEmeraldDAC: dc.b $E2,$01,$F2<br />
MusEmrldVoices: dc.b $04,$35,$54,$72,$46,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$1D,$14,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$07,$07,$1A,$16,$80,$80<br />
<br />
;Mus_Credits: BINCLUDE "sound/music/Credits.bin"<br />
Mus_Credits: dc.w z80_ptr(MusCred_Voices),$0603,$01F0<br />
dc.w z80_ptr(MusCred_DAC),$0000<br />
dc.w z80_ptr(MusCred_FM1),$000E<br />
dc.w z80_ptr(MusCred_FM2),$180A<br />
dc.w z80_ptr(MusCred_FM3),$0014<br />
dc.w z80_ptr(MusCred_FM4),$0016<br />
dc.w z80_ptr(MusCred_FM5),$0C16<br />
dc.w z80_ptr(MusCred_PSG1),$E806,$000B<br />
dc.w z80_ptr(MusCred_PSG2),$DC07,$000B<br />
dc.w z80_ptr(MusCred_PSG3),$0002,$0003<br />
MusCred_FM1: dc.b $E9,$F4,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$0C,$E6,$02<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$03,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $AE,$06,$A2,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $E6,$FD<br />
- dc.b $EF,$00,$B7,$06,$BA,$F8<br />
dc.w z80_ptr(MusCreditsDA13)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$06,$80,$80,$30,$80,$EF,$0B,$E9,$18,$E6,$02<br />
- dc.b $94,$0C,$8F,$92,$8F,$06,$94,$05,$94,$07,$06,$8F<br />
dc.b $0C,$92,$8F<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$30,$80,$EF,$0E,$E6,$FF,$E9,$E8,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$91,$94,$06,$80,$18,$96,$12,$9A,$06,$80<br />
dc.b $80,$12,$8F,$93,$08,$80,$16,$96,$06,$91,$92,$94<br />
dc.b $96,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$9D,$9A,$08,$80,$16,$96,$12,$9D,$08,$80<br />
dc.b $04,$EF,$12<br />
dc.b $F0,$18,$01,$0A,$04<br />
dc.b $80,$30,$80,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$24,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$EF,$01,$E9,$F4,$E6,$FA,$F4<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $80,$03,$80,$60,$E6,$04,$E1,$01,$EF,$1B,$E6,$06<br />
dc.b $C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80,$EF<br />
dc.b $1C,$E6,$FA,$E8,$00,$BC,$0C,$12,$06,$EF,$1B,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$80,$E8,$06,$C4,$06,$06,$C6,$C4,$E8<br />
dc.b $00,$C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80<br />
dc.b $E8,$00,$EF,$1C,$E6,$FA,$C1,$C4,$C1,$EF,$1A,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$06,$80,$80,$24,$80,$30,$80,$EF,$1F<br />
dc.b $E9,$18,$E6,$F7,$E1,$00,$80,$06,$AC,$AE,$80,$B1<br />
dc.b $80,$B3,$80,$B4,$80,$B3,$80,$B1,$B3,$80,$B1,$E9<br />
dc.b $F4,$EF,$00,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC<br />
dc.b $06,$AE,$B1,$80,$B4,$B1,$80,$B1,$E9,$0C,$EF,$1F<br />
dc.b $80,$06,$B8,$12,$B4,$06,$80,$B3,$80,$B4,$80,$B3<br />
dc.b $80,$B1,$AE,$80,$B1,$E9,$F4,$EF,$00,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$30,$80,$EF,$21,$E9,$0C,$80,$30,$80<br />
dc.b $08,$A0,$04,$9E,$0C,$9D,$9B,$99,$08,$04,$91,$0C<br />
dc.b $92,$93,$94,$98,$99,$9B,$9D,$98,$95,$93,$91,$98<br />
dc.b $9D,$91,$96,$98,$99,$98,$96,$99,$9D,$96,$95,$97<br />
dc.b $99,$97,$95,$96,$97,$98,$99,$98,$99,$9B,$9D,$08<br />
dc.b $04,$98,$0C,$91,$95,$96,$98,$99,$9D,$9E,$08,$96<br />
dc.b $10,$97,$0C,$98,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$08,$99,$04,$EF,$23,$E9,$E8,$E6,$07,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $80,$60,$E6,$FB,$80,$0C,$CD,$06,$80,$D4,$CD,$06<br />
dc.b $80,$0C,$CD,$06,$80,$D4,$CD,$06,$80,$18,$E6,$05<br />
dc.b $80,$0C,$AE,$80,$AE,$80,$24,$E1,$02,$E6,$08,$A2<br />
dc.b $6C,$F2<br />
MusCreditsD9D1: dc.b $A5,$0C,$B1,$06,$80,$B1,$0C,$AC,$B3,$12,$B1,$0C<br />
dc.b $AC,$06,$AE,$B1,$A7,$0C,$B3,$06,$80,$B3,$0C,$AE<br />
dc.b $B5,$12,$B3,$06,$80,$AE,$B0,$B3,$A3,$0C,$AF,$06<br />
dc.b $80,$AF,$0C,$AA,$B1,$12,$AF,$0C,$AA,$06,$AC,$AF<br />
dc.b $A2,$0C,$AE,$06,$A2,$A4,$0C,$B0,$06,$A4,$A5,$0C<br />
dc.b $B1,$06,$A5,$A2,$0C,$E3<br />
MusCreditsDA13: dc.b $BE,$0C,$BC,$06,$BA,$BC,$BA,$04,$E7,$08,$BA,$04<br />
dc.b $80,$0E,$EF,$07,$B7,$06,$B2,$B5,$B7,$EF,$00,$B7<br />
dc.b $BA,$BE,$0C,$BC,$06,$BA,$BC,$BA,$0C,$BC,$04,$80<br />
dc.b $08,$BA,$04,$80,$08,$BC,$04,$80,$08,$BE,$12,$BA<br />
dc.b $06,$B7,$80,$B7,$80,$24,$EF,$07,$B7,$06,$B2,$B5<br />
dc.b $B7,$80,$0C,$80,$30,$BE,$06,$BE,$BA,$04,$80,$08<br />
dc.b $BC,$06,$BE,$E3<br />
MusCreditsDA5F: dc.b $C3,$01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$02,$C3<br />
dc.b $01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01<br />
dc.b $E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$FC,$C3,$01,$E7<br />
dc.b $C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01,$E7,$C4<br />
dc.b $E7,$C5,$E7,$C6,$2D,$E7,$30,$E7,$30,$E3<br />
MusCreditsDA99: dc.b $A7,$0C,$B3,$06,$80,$B1,$80,$B3,$0C,$A7,$03,$80<br />
dc.b $06,$A7,$03,$B3,$0C,$B1,$B3,$09,$AE,$03,$AC,$06<br />
dc.b $80,$AC,$0C,$AE,$06,$80,$AE,$0C,$AF,$06,$80,$27<br />
dc.b $E3<br />
MusCreditsDABE: dc.b $80,$0C,$CA,$15,$80,$03,$CA,$06,$80,$CB,$0F,$80<br />
dc.b $03,$C8,$18,$80,$06,$CA,$80,$CA,$80,$CA,$80,$C6<br />
dc.b $80,$C4,$0F,$80,$03,$C8,$18,$80,$06<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E3<br />
MusCreditsDAE5: dc.b $80,$12,$94,$97,$06,$80,$18,$99,$12,$94,$06,$80<br />
dc.b $80,$12,$92,$96,$06,$80,$18,$97,$12,$92,$06,$80<br />
dc.b $E3<br />
MusCreditsDAFE: dc.b $80,$99,$80,$99,$80,$9E,$80,$E3<br />
MusCreditsDB06: dc.b $EF,$07,$80,$54,$C7,$04,$C8,$C9,$CA,$24,$CD,$D2<br />
dc.b $18,$D0,$24,$CF,$CB,$18,$CB,$0C,$CA,$80,$CD,$60<br />
dc.b $E7,$3C,$CA,$24,$CD,$D2,$18,$D4,$24,$D0,$D4,$18<br />
dc.b $D4,$24,$D6,$60,$E7,$3C,$E3<br />
MusCred_FM2: dc.b $80,$60,$EF,$01,$E8,$06,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $85,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8A,$87,$88,$89,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $88<br />
dc.b $F7,$00,$0B<br />
dc.w z80_ptr(-)<br />
- dc.b $8A<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$E6,$FC,$8A,$8B,$8C,$E6,$04,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$8D,$8A,$8B,$8C,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8D,$06,$99,$E8,$00,$8A,$0C,$8B,$8C,$E9,$E8,$E6<br />
dc.b $0C,$EF,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E6,$F9,$EF,$08<br />
MusCreditsDB93: dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $06,$9C,$12,$9D,$0C,$9E,$F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9D,$04,$80,$08,$9D,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $9C,$04,$80,$08,$9C,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(MusCreditsDB93)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$13,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$60,$EF,$0F,$E6,$F3<br />
dc.b $F0,$04,$02,$03,$02<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$30,$E7,$18,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$EF,$13,$E6,$F5,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$0C,$A9,$08,$A1,$10,$F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$08,$A9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E1,$02,$E9,$F4,$E6,$0A,$F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$EF,$1B,$E1,$00<br />
dc.b $E8,$06,$80,$3C,$B8,$06,$06,$BA,$BD,$BD,$BA,$EF<br />
dc.b $1D,$E6,$FA,$E8,$00,$F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $EF,$1C,$BD,$EF,$1D,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $80,$30,$80,$EF,$01,$E9,$18,$E6,$F9<br />
- dc.b $99,$0C,$A5,$06,$80,$96,$0C,$A2,$06,$80,$97,$0C<br />
dc.b $A3,$06,$80,$98,$0C,$A8,$06,$A7,$99,$06,$99,$12<br />
dc.b $96,$0C,$A2,$06,$80,$97,$0C,$A3,$06,$80,$98,$0C<br />
dc.b $A4,$06,$80<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$22,$E9,$E8,$E6,$03<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$AC,$04,$AE,$08,$B1,$04,$B5,$30,$80,$0C<br />
dc.b $B5,$08,$80,$04,$B6,$08,$B5,$10,$B9,$08,$04,$80<br />
dc.b $08,$B5,$34,$80,$0C,$B5,$BA,$08,$04,$80,$08,$B5<br />
dc.b $04,$B1,$24,$80,$0C,$B1,$08,$80,$04,$B3,$08,$B1<br />
dc.b $04,$B4,$0C,$B3,$08,$B1,$4C,$80,$0C,$B5,$08,$80<br />
dc.b $04,$B6,$08,$80,$04,$B5,$08,$80,$04,$B9,$08,$04<br />
dc.b $80,$08,$B5,$1C,$80,$0C,$BA,$18,$BC,$08,$BA,$04<br />
dc.b $BD,$18,$80,$0C,$BA,$04,$80,$08,$B8,$18,$B5,$B1<br />
dc.b $B3,$0C,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$0C,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$14,$B1,$04,$E6,$FF,$EF,$24,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $AC,$12,$AB,$0C,$AC,$06,$AB,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $B3,$12,$B2,$0C,$B3,$06,$B2,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $AC,$06,$80,$A9,$80,$AA,$80,$AB,$80,$AC,$AC,$A9<br />
dc.b $80,$AA,$80,$AC,$80,$A9,$80,$A9,$80,$AD,$80,$AD<br />
dc.b $80,$B0,$80,$B0,$80,$B3,$80,$B3,$80,$80,$0C,$A2<br />
dc.b $12,$80,$06,$A2,$12,$AD,$AE,$06,$80,$E6,$FD,$A2<br />
dc.b $6C,$F2<br />
MusCreditsDD59: dc.b $80,$0C,$C4,$06,$80,$C6,$80,$C4,$80,$C9,$80,$C9<br />
dc.b $80,$CB,$CD,$80,$0C,$80,$CB,$18,$C6,$06,$80,$C9<br />
dc.b $C9,$80,$CB,$0C,$80,$12,$80,$1E,$C7,$06,$C9,$C7<br />
dc.b $CB,$80,$C9,$80,$C7,$C9,$80,$C6,$E7,$C6,$30,$E7<br />
dc.b $18,$80,$18,$E3<br />
MusCreditsDD8D: dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
dc.b $06,$AB,$9F,$0C,$E3<br />
MusCreditsDD9D: dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$B6,$80,$18<br />
dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$30,$E7,$E3<br />
MusCreditsDDB5: dc.b $BF,$06,$BD,$BF,$12,$C2,$BF,$0C,$C1,$80,$06,$12<br />
dc.b $C4,$0C,$C2,$06,$80,$C9,$C6,$3C,$80,$06,$0C,$C7<br />
dc.b $12,$C6,$C4,$06,$C2,$C1,$18,$E3<br />
MusCreditsDDD5: dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$E3<br />
MusCreditsDDEA: dc.b $A2,$0C,$AE,$AC,$08,$AE,$04,$AC,$08,$A9,$04,$A7<br />
dc.b $08,$04,$E3<br />
MusCreditsDDF9: dc.b $80,$0C,$B1,$AE,$06,$06,$AC,$0C,$80,$B0,$AE,$06<br />
dc.b $06,$AC,$0C,$E3<br />
MusCreditsDE09: dc.b $AE,$AC,$06,$06,$AA,$0C,$80,$AC,$0C,$06,$06,$AE<br />
dc.b $AC,$E3<br />
MusCreditsDE17: dc.b $BA,$04,$80,$08,$B8,$18,$B5,$B1,$E3<br />
MusCreditsDE20: dc.b $AE,$06,$80,$AE,$80,$A9,$80,$A9,$80,$E3<br />
MusCreditsDE2A: dc.b $8A,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $E3<br />
MusCred_FM3: dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$18,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $B8,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $BD,$3C,$E9,$E8,$E6,$02,$E1,$03,$EF,$04,$E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$09,$E9,$0C,$E6,$FD,$E0,$40<br />
dc.b $F0,$06,$01,$05,$04<br />
dc.b $E1,$00<br />
- dc.b $9F,$0C,$AB,$06,$80,$A9,$80,$AB,$9F,$80,$9F,$AB<br />
dc.b $80,$A9,$80,$AB,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $9D,$0C,$A9,$06,$80,$A8,$80,$A9,$9C,$80,$9C,$A8<br />
dc.b $80,$A6,$80,$A8,$0C<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0D,$E6,$FB,$E0,$C0,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0F,$E0,$80,$E6,$0B,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$48,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$0C<br />
dc.b $F0,$18,$01,$03,$04<br />
dc.b $E6,$F3,$E0,$C0,$EF,$14,$A2,$14,$A4,$04,$A5,$04<br />
dc.b $80,$08,$A9,$04,$80,$08,$A8,$04,$80,$08,$A9,$04<br />
dc.b $80,$08,$AC,$08,$A9,$10<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$18,$E9,$F4,$E6,$08,$F4,$E0,$40,$80,$60,$80<br />
dc.b $30,$C6,$06,$80,$C2,$0C,$C4,$09,$C2,$03,$BF,$0C<br />
dc.b $80,$60,$80,$3C,$80,$60,$EF,$1B,$E6,$FB,$E0,$C0<br />
dc.b $E8,$06,$C4,$06,$06,$C6,$C9,$C9,$C6,$E8,$00,$CD<br />
dc.b $0C,$E8,$06,$C9,$06,$C6,$C9,$0C,$80,$80,$12,$EF<br />
dc.b $1C,$E8,$00,$BD,$BA,$0C,$E8,$06,$EF,$1B,$CE,$06<br />
dc.b $CE,$80,$CE,$80,$CE,$E8,$00,$CF,$0C,$D0,$80,$E8<br />
dc.b $06,$D0,$06,$06,$D2,$D0,$E8,$00,$CD,$0C,$E8,$06<br />
dc.b $C9,$06,$C6,$C9,$0C,$E8,$00,$EF,$1C,$80,$1E,$C2<br />
dc.b $0C,$C2,$BD,$06,$80,$60,$80,$60,$EF,$00,$E9,$18<br />
dc.b $80,$60,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC,$06<br />
dc.b $AE,$B1,$80,$B4,$B1,$80,$B1,$80,$60,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$60,$EF,$22,$E9,$DC,$E6,$FF,$E0,$80<br />
dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $CD,$30,$CB,$18,$CD,$0C,$CB,$C9,$30,$CE,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$FC,$80,$C4,$80,$C4,$80,$C6,$18,$08,$C4,$04<br />
dc.b $E9,$0C,$E6,$FF,$E0,$C0,$EF,$00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $CB,$12,$CB,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $D0,$12,$D0,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$CB,$12,$80,$06,$CB,$80,$CA,$12,$CB,$CA<br />
dc.b $0C,$C5,$18,$C8,$CB,$D1,$80,$0C,$CD,$80,$CD,$12<br />
dc.b $CC,$CD,$06,$80,$E6,$F8,$EF,$01,$E1,$03,$A2,$6C<br />
dc.b $F2<br />
MusCreditsDFF2: dc.b $80,$60,$BC,$06,$BD,$BC,$B8,$BA,$B6,$0C,$B8,$B3<br />
dc.b $B3,$06,$B6,$0C,$B8,$E3<br />
MusCreditsE004: dc.b $80,$0C,$CD,$04,$80,$10,$CD,$04,$80,$0C,$CD,$0C<br />
dc.b $CE,$08,$CD,$04,$80,$18,$80,$0C,$CB,$04,$80,$10<br />
dc.b $CB,$04,$80,$0C,$CB,$0C,$CD,$08,$CB,$04,$80,$18<br />
- dc.b $80,$0C,$C9,$04,$80,$10,$C9,$04,$80,$0C,$C9,$0C<br />
dc.b $CB,$08,$C9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E3<br />
MusCreditsE040: dc.b $80,$18,$B8,$0B,$80,$0D,$BA,$0C,$0B,$80,$19,$BD<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE051: dc.b $80,$0C,$C4,$80,$C4,$80,$C6,$80,$C6,$E3<br />
MusCreditsE05B: dc.b $CD,$06,$80,$CD,$80,$CA,$80,$CA,$80,$E3<br />
MusCreditsE065: dc.b $EF,$05,$E9,$F4,$C6,$60,$CB,$CD,$E7,$CD,$C6,$60<br />
dc.b $D0,$D0,$24,$D2,$60,$E7,$3C,$E3<br />
MusCred_FM4: dc.b $80,$60,$E9,$FB,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$1D,$E6,$02,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B5,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B8,$3C,$E6,$06,$EF,$05<br />
dc.b $F0,$02,$01,$FE,$04<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E9,$F4,$E6,$F7<br />
dc.b $F0,$0C,$01,$FB,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$25,$C3,$06,$C3,$80,$0C,$C3,$06,$C3,$05,$80<br />
dc.b $0D,$C3,$06,$C5,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$05,$F4,$E1,$02,$E0<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$0C,$80,$60,$EF,$10,$E6,$F7,$E1,$00,$E0<br />
dc.b $40,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $B3,$B7,$06,$AE,$0C,$B1,$B3,$B7,$06,$80,$B7,$AE<br />
dc.b $0C,$B1,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $EF,$15,$E6,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
- dc.b $EF,$14,$80,$4E,$E0,$40,$A1,$12,$A2,$06,$E0,$C0<br />
dc.b $EF,$16,$80,$30,$80,$06,$BA,$08,$B9,$04,$B8,$08<br />
dc.b $B7,$04,$B6,$08,$B5,$04<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E9,$F4,$E6,$02,$E0,$C0<br />
dc.b $F0,$01,$01,$03,$03<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$1E,$E0,$40,$E6,$FE,$E9,$F4,$F4,$E8<br />
dc.b $06,$80,$0C,$C1,$06,$12,$18,$C4,$06,$12,$0C,$EF<br />
dc.b $1C,$E0,$C0,$E6,$FA,$E8,$00,$C6,$E8,$06,$E6,$06<br />
dc.b $EF,$1E,$E0,$40,$C2,$06,$12,$18,$C4,$06,$12,$18<br />
dc.b $C1,$06,$12,$18,$C4,$06,$12,$0C,$EF,$1A,$E0,$C0<br />
dc.b $E9,$0C,$C6,$06,$C6,$80,$C6,$80,$C6,$E8,$00,$C7<br />
dc.b $0C,$C8,$06,$EF,$1E,$E0,$40,$E9,$F4,$E8,$06,$80<br />
dc.b $C4,$06,$12,$0C,$80,$60,$EF,$20,$E9,$18,$E6,$FA<br />
dc.b $E0,$C0,$E8,$00,$B4,$03,$E7,$B6,$5D,$B3,$03,$E7<br />
dc.b $B5,$5D,$B1,$03,$E7,$B3,$5D,$B3,$03,$E7,$B5,$5D<br />
dc.b $80,$60,$EF,$22,$E0,$40,$E9,$E8,$E6,$04,$80,$30<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $C9,$30,$C8,$18,$C9,$0C,$C8,$C6,$30,$C9,$80,$0C<br />
dc.b $C1,$80,$C1,$80,$C2,$80,$C2,$E6,$04,$80,$C1,$80<br />
dc.b $C1,$80,$C2,$80,$C2,$E6,$FC,$80,$C1,$80,$C1,$80<br />
dc.b $C2,$18,$08,$C1,$04,$E9,$0C,$E6,$FF,$E0,$C0,$EF<br />
dc.b $00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $C8,$12,$C8,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $CB,$12,$CB,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E1,$03,$E6,$08,$F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $E6,$F0,$EF,$01<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $A2,$6C,$F2<br />
MusCreditsE22D: dc.b $A2,$14,$A4,$04,$A5,$04,$80,$08,$A9,$04,$80,$08<br />
dc.b $A8,$04,$80,$08,$A9,$04,$80,$08,$AC,$08,$A9,$10<br />
dc.b $E3<br />
MusCreditsE246: dc.b $80,$0C<br />
dc.b $C9,$04,$80,$10<br />
dc.b $C9,$04,$80,$0C<br />
dc.b $C9,$0C<br />
dc.b $CB,$08<br />
dc.b $C9,$04,$80,$18,$80,$0C<br />
dc.b $C8,$04,$80,$10<br />
dc.b $C8,$04,$80,$0C<br />
dc.b $C8,$0C<br />
dc.b $C9,$08<br />
dc.b $C8,$04,$80,$18,$80,$0C<br />
<br />
if 1==1<br />
; this part of the original credits music (CNZ PSG) sounds buggy (dissonant)<br />
dc.b $C6,$04,$80,$10<br />
dc.b $C6,$04,$80,$0C<br />
dc.b $C6,$0C<br />
dc.b $C8,$08<br />
dc.b $C6,$04,$80,$18,$80,$0C<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $C7,$08<br />
else<br />
; replace the above block of notes with this to fix it.<br />
; (I'm not sure why, but the notes $C6 and $C7 are broken here,<br />
; so I've replaced them with pitch-shifted $C8s)<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$10 ; $C6<br />
dc.b $C8,$04,$80,$0C ; $C6<br />
dc.b $C8,$0C ; $C6<br />
dc.b $E1,0<br />
dc.b $C8,$08<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$24 ; $C6<br />
dc.b $E1,0<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $E1,-32<br />
dc.b $C8,$08 ; $C7<br />
dc.b $E1,0<br />
endif<br />
<br />
dc.b $C5,$04,$80,$18<br />
dc.b $E3<br />
MusCreditsE28F: dc.b $EF,$25,$80,$0C,$D0,$D4,$D7,$DB,$0C,$80,$06,$DB<br />
dc.b $0C,$DC,$06,$DB,$0C,$DD,$60,$DE,$0C,$80,$DE,$80<br />
dc.b $80,$06,$DD,$12,$DE,$0C,$E3<br />
MusCreditsE2AE: dc.b $80,$18,$B5,$0B,$80,$0D,$B7,$0C,$0B,$80,$19,$BA<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE2BF: dc.b $C3,$05,$80,$13,$C3,$12,$C3,$05,$E3<br />
MusCreditsE2C8: dc.b $CA,$06,$80,$CA,$80,$C6,$80,$C6,$80,$E3<br />
MusCreditsE2D2: dc.b $AF,$0C,$B3,$06,$B6,$0C,$AF,$B1,$06,$80,$B1,$0C<br />
dc.b $B5,$06,$B8,$0C,$B1,$06,$80,$B6,$0C,$BA,$06,$B1<br />
dc.b $0C,$B5,$B6,$BA,$06,$80,$BA,$AF,$0C,$B3,$B5,$B8<br />
dc.b $06,$B2,$0C,$B3,$B5,$B8,$06,$80,$B8,$B2,$0C,$B5<br />
dc.b $E3<br />
MusCred_FM5: dc.b $E9,$E8,$E6,$F8,$E1,$05,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$18,$E6,$08,$E1,$00,$EF,$02<br />
dc.b $F0,$0C,$01,$FC,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B1,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B5,$3C,$E9,$F4,$E6,$07<br />
dc.b $F0,$30,$01,$04,$04<br />
dc.b $EF,$06<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E6,$F6<br />
dc.b $F0,$0C,$01,$05,$04<br />
dc.b $E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$25,$C6,$06,$C6,$80,$0C,$C6,$06,$C6,$05,$80<br />
dc.b $0D,$C6,$06,$C8,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$E6,$05,$F4,$80,$01,$EF,$0C,$E1<br />
dc.b $FE,$E0,$40,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $23,$80,$0C,$80,$60,$EF,$11,$E9,$F4,$E6,$F4,$E1<br />
dc.b $00,$E0,$C0<br />
dc.b $F0,$06,$01,$06,$05<br />
dc.b $80,$60,$80,$30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60<br />
dc.b $80,$06,$CB,$80,$CB,$C9,$80,$C9,$80,$C7,$80,$C7<br />
dc.b $80,$C6,$03,$80,$C6,$80,$09,$80,$06,$80,$60,$80<br />
dc.b $30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60,$EF,$16,$E9<br />
dc.b $0C,$E6,$04,$F4,$E0,$80,$80,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
dc.b $80,$2F,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$30,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$60,$EF,$19,$E9,$F4,$E0,$C0,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$27,$B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$2A,$80,$60,$EF,$1E,$E9,$F4,$E8,$06<br />
- dc.b $80,$0C,$C4,$06,$12,$18,$C8,$06,$12,$0C,$80,$C6<br />
dc.b $06,$12,$18,$C8,$06,$12,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$20,$E8,$00,$E9,$18,$E6,$FA,$B8,$03<br />
dc.b $E7,$BA,$5D,$B6,$03,$E7,$B8,$5D,$B4,$03,$E7,$B6<br />
dc.b $5D,$B6,$03,$E7,$B8,$5D,$80,$60,$EF,$22,$E9,$F4<br />
dc.b $E6,$05<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$A7,$04,$A9,$08,$AC,$04,$B1,$30,$80,$0C<br />
dc.b $B1,$08,$80,$04,$B3,$08,$B1,$10,$B5,$08,$B5,$04<br />
dc.b $80,$08,$B0,$34,$80,$0C,$B0,$B5,$08,$04,$80,$08<br />
dc.b $B1,$04,$AE,$24,$80,$0C,$AE,$08,$80,$04,$B0,$08<br />
dc.b $AE,$04,$B1,$0C,$AF,$08,$AD,$4C,$80,$0C,$B1,$08<br />
dc.b $80,$04,$B3,$08,$80,$04,$B1,$08,$80,$04,$B5,$08<br />
dc.b $B5,$04,$80,$08,$B0,$1C,$80,$0C,$B5,$18,$B8,$08<br />
dc.b $B5,$04,$BA,$18,$80,$0C,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$04,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$F8,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$AA,$14,$A9,$04,$E6,$0C,$EF,$23,$E1,$03<br />
dc.b $E6,$F7,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E6,$09<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $F2<br />
MusCreditsE4CD: dc.b $80,$1E,$EF,$14,$A4,$12,$A5,$06,$EF,$16,$80,$30<br />
dc.b $80,$06,$BD,$08,$BC,$04,$BB,$08,$BA,$04,$B9,$08<br />
dc.b $B8,$04,$E3<br />
MusCreditsE4E8: dc.b $80,$18,$B1,$0B,$80,$0D,$B3,$0C,$0B,$80,$19,$B6<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE4F9: dc.b $C6,$05,$80,$13,$C6,$12,$C6,$05,$E3<br />
MusCreditsE502: dc.b $80,$60,$AC,$06,$80,$AC,$0C,$AE,$06,$80,$AE,$0C<br />
dc.b $AF,$06,$E3<br />
MusCred_PSG1: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG1)<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$F4,$E6,$FE,$F5,$01,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $AE,$B3,$06,$AC,$0C,$AE,$AE,$B3,$06,$80,$B3,$AB<br />
dc.b $0C,$AE,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $F5,$0B,$80,$04,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$20,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$F5,$00,$E8,$06,$E9,$F4,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$80,$C2,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$04,$80,$C2,$80,$0C,$C2,$80,$60,$F5,$08,$E9<br />
dc.b $04,$EC,$02,$E8,$06<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F0,$EC,$FF,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $E9,$18,$EC,$02,$B5,$30,$B3,$18,$B5,$0C,$B3,$B1<br />
dc.b $30,$B6,$EC,$FE,$80,$0C,$B8,$80,$B8,$80,$BA,$80<br />
dc.b $BA,$EC,$03,$C4,$18,$C1,$BD,$BF,$0C,$80,$EC,$FC<br />
dc.b $80,$B8,$80,$B8,$80,$BA,$18,$08,$B8,$04,$E9,$F4<br />
dc.b $EC,$01,$F5,$05<br />
- dc.b $80,$60<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$C8,$12,$80,$06,$C8,$80,$C6,$12,$C8,$C6<br />
dc.b $0C,$C1,$18,$C5,$C8,$CB,$80,$0C,$CA,$80,$CA,$12<br />
dc.b $C9,$CA,$06,$80,$09,$E9,$30,$EC,$FC,$F6<br />
dc.w z80_ptr(MusCreditsE770)<br />
dc.b $F2<br />
MusCreditsE618: dc.b $80,$0C,$BD,$06,$12,$18,$C4,$06,$12,$0C,$80,$C2<br />
dc.b $06,$12,$18,$C4,$06,$12,$0C,$E3<br />
MusCreditsE62C: dc.b $80,$60,$80,$0C,$C2,$80,$C2,$80,$E3<br />
MusCreditsE635: dc.b $AC,$0C,$AF,$06,$B3,$0C,$AC,$AC,$06,$80,$AC,$0C<br />
dc.b $AF,$06,$B5,$0C,$AC,$06,$80,$06,$B1,$0C,$B6,$06<br />
dc.b $AE,$0C,$B1,$B3,$B6,$06,$80,$B6,$AA,$0C,$AF,$AF<br />
dc.b $B5,$06,$AC,$0C,$AF,$B2,$B5,$06,$80,$B5,$AE,$0C<br />
dc.b $B2,$E3<br />
MusCred_PSG2: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG2)<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$0C,$EC,$FD,$F5,$04,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
dc.b $F0,$03,$02,$01,$05<br />
dc.b $F5,$0A,$E9,$E8,$EC,$02,$80,$30,$80,$80,$BD,$06<br />
dc.b $BF,$C6,$C2,$1E,$80,$60,$80,$06,$C6,$80,$C6,$C4<br />
dc.b $80,$C4,$80,$C3,$80,$C3,$80,$BF,$03,$80,$BF,$80<br />
dc.b $09,$80,$06,$80,$30,$80,$80,$BD,$06,$BF,$C6,$C2<br />
dc.b $1E,$80,$60,$F4<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$00,$EC,$FE,$E8,$06,$80,$60,$80,$0C,$BF,$80<br />
dc.b $BF,$80,$BF,$80,$BF,$80,$60,$80,$0C,$BF,$80,$BF<br />
dc.b $80,$BF,$04,$80,$BF,$80,$0C,$BF,$80,$60,$EC,$02<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F4,$EC,$FF,$E9,$E8,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $E9,$18,$EC,$02,$B1,$30,$B0,$18,$B1,$0C,$B0,$AE<br />
dc.b $30,$B1,$EC,$FE,$80,$0C,$B5,$80,$B5,$80,$B6,$80<br />
dc.b $B6,$EC,$03,$80,$B1,$80,$B1,$80,$B1,$80,$B1,$EC<br />
dc.b $FC,$80,$B1,$80,$B1,$80,$B1,$18,$08,$B1,$04,$EC<br />
dc.b $01,$E9,$18,$F5,$05,$E1,$01,$80,$60,$80,$80,$80<br />
dc.b $80,$80,$80,$0C,$CD,$06,$80,$D4,$CD,$80,$0C,$CD<br />
dc.b $06,$80,$D4,$CD,$80,$18,$80,$54,$E9,$24,$EC,$FD<br />
MusCreditsE770: dc.b $F5,$03,$80,$06<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$FF<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$01<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusCred_PSG3: dc.b $F3,$E7,$80,$60,$F5,$02<br />
- dc.b $C6,$0C,$0C,$0C,$06,$06,$0C,$0C,$06,$06,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$1F<br />
dc.w z80_ptr(-)<br />
dc.b $0C,$F5,$03,$C6,$F5,$02<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $06,$06,$06,$06<br />
dc.b $F7,$01,$04<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$04,$EC,$02<br />
- dc.b $E8,$03,$C6,$06,$06,$E8,$00,$0C<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$02,$EC,$FD<br />
- dc.b $80,$0C,$C6,$06,$80,$07,$C6,$06,$80,$11,$C6,$0C<br />
dc.b $80,$06,$C6,$0C,$80,$06,$C6,$80<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$02<br />
- dc.b $C6,$0C,$08,$04<br />
dc.b $F7,$00,$18<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$0C,$0C,$08,$04<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$04,$EC,$02<br />
- dc.b $C6,$06,$06,$0C<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EC,$FF<br />
- dc.b $F5,$01,$C6,$0C,$F5,$02,$EC,$FF,$08,$F5,$01,$EC<br />
dc.b $01,$04<br />
dc.b $F7,$00,$27<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$FF,$F5,$04<br />
- dc.b $E8,$03,$C6,$0C,$E8,$0C,$0C<br />
dc.b $F7,$00,$1E<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$03,$C6,$06,$E8,$0E,$12,$E8,$03,$0C,$E8,$0F<br />
dc.b $0C,$F2<br />
MusCred_DAC: dc.b $82,$06,$82,$82,$82,$82,$0C,$06,$0C,$06,$0C,$0C<br />
dc.b $0C<br />
- dc.b $81,$18,$82<br />
dc.b $F7,$00,$0E<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C<br />
- dc.b $82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EA,$EA,$F8<br />
dc.w z80_ptr(MusCreditsEA6E)<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$82,$06,$82,$82,$82,$81,$0C,$82,$06,$82<br />
dc.b $81,$81,$82,$82,$82,$82<br />
- dc.b $81,$18,$82,$81,$82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$82,$82,$82,$06,$82,$8C,$8C,$8D,$8D<br />
dc.b $8E,$8E,$F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$18,$82,$0C,$81,$18,$82,$0C,$82,$82,$06,$82<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$0C,$82,$82,$82,$8D,$06,$8D,$8E,$8E,$82,$06<br />
dc.b $82,$8D,$0C,$82,$0C,$82,$06,$82,$80,$82,$82,$0C<br />
MusCreditsE8E5: dc.b $82,$0C,$82,$82,$06,$82,$8D,$8D<br />
- dc.b $81,$0C,$8F,$06,$90,$82,$0C,$90,$06,$91,$81,$0C<br />
dc.b $8F,$06,$91,$82,$0C,$8F,$06,$91<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$8F,$06,$91,$82,$0C,$8F,$06,$91,$8C,$06<br />
dc.b $03,$03,$8D,$06,$8D,$8D,$8E,$8E,$8E,$81,$06,$0C<br />
dc.b $82,$06,$80,$0C,$81,$82,$8E,$82,$06,$82,$82,$82<br />
- dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$12,$8C,$06<br />
dc.b $82,$0C,$83,$06,$81,$80<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$06,$82,$06<br />
dc.b $81,$0C,$06,$82,$0C,$08,$04,$EA,$CD,$82,$30,$82<br />
dc.b $0C,$82,$82,$82,$08,$04,$F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$04,$82,$08,$04<br />
dc.b $08,$04,$04,$04,$04,$08,$04,$EA,$C5<br />
- dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82,$0C,$06<br />
dc.b $06,$81,$0C,$82,$06,$82,$82,$82,$8D,$0C,$82,$0C<br />
dc.b $0C,$0C,$06,$06<br />
- dc.b $81,$0C,$81,$82,$80,$81,$81,$82,$83<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$82,$82,$82,$82,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $81,$06,$81,$82,$82,$81,$82,$81,$81,$82,$02,$82<br />
dc.b $04,$81,$0C,$06,$82,$0C,$06,$06,$81,$18,$82,$0C<br />
dc.b $81,$81,$18,$82,$81,$06,$81,$12,$82,$0C,$81,$81<br />
dc.b $18,$82,$81,$18,$82,$0C,$81,$81,$18,$82,$81,$06<br />
dc.b $81,$12,$82,$0C,$0C,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $82,$02,$04,$81,$0C,$06,$0C,$82,$02,$04,$81,$0C<br />
dc.b $06,$0C,$82,$06,$82,$82,$82,$EA,$C0,$81,$0C,$82<br />
dc.b $81,$82,$81,$82,$81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$0F<br />
dc.w z80_ptr(-)<br />
dc.b $81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$13<br />
dc.w z80_ptr(-)<br />
dc.b $82,$08,$0C,$04,$81,$0C,$82,$81,$82,$81,$0C,$82<br />
dc.b $81,$06,$80,$02,$82,$82,$82,$09,$82,$03<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$06,$80,$02,$82,$82,$82,$09,$82<br />
dc.b $03<br />
dc.b $F7,$01,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$82,$81,$06,$82,$12,$82,$0C,$81<br />
dc.b $F2<br />
MusCreditsEA6E: dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$83,$E3<br />
MusCreditsEA84: dc.b $81,$18,$82,$0C,$81,$18,$0C,$82,$81,$81,$18,$82<br />
dc.b $0C,$81,$12,$81,$82,$18,$81,$82,$0C,$81,$18,$0C<br />
dc.b $82,$81,$E3<br />
MusCreditsEA9F: dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$0C,$82,$04,$81<br />
dc.b $0C,$82,$81,$81,$08,$0C,$04,$82,$0C,$81,$08,$0C<br />
dc.b $82,$04,$81,$0C,$82,$82,$08,$04,$E3,$81,$06,$80<br />
dc.b $03,$81,$81,$06,$82,$81,$06,$80,$03,$81,$81,$06<br />
dc.b $82,$03,$82,$81,$06,$80,$03,$81,$81,$06,$82,$E3<br />
MusCred_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$01,$1F,$1F,$FF,$0F,$17,$27,$28,$80<br />
dc.b $08,$09,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$25,$0E,$30,$84<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$0B,$0D,$19,$0B,$80,$80<br />
dc.b $08,$0A,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$24,$13,$2D,$80<br />
dc.b $3D,$01,$51,$21,$01,$12,$14,$14,$0F,$0A,$05,$05<br />
dc.b $05,$00,$00,$00,$00,$2B,$2B,$2B,$1B,$19,$80,$80,$80<br />
dc.b $04,$57,$70,$02,$50,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$06,$00,$0A,$0A,$00,$00,$0F,$0F,$1A,$10,$80,$80<br />
dc.b $35,$01,$13,$01,$00,$1F,$18,$1D,$19,$00,$06,$09<br />
dc.b $0D,$00,$02,$00,$03,$00,$15,$06,$16,$1E,$83,$80,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1A,$16,$88,$88<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$14,$0F,$37,$80<br />
dc.b $3B,$0F,$01,$06,$02,$DF,$1F,$1F,$DF,$0C,$0A,$00<br />
dc.b $03,$0F,$00,$00,$01,$F3,$55,$05,$5C,$22,$22,$20,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1C,$14,$84,$80<br />
dc.b $3A,$69,$50,$70,$60,$1C,$1A,$18,$18,$10,$02,$0C<br />
dc.b $09,$08,$06,$06,$03,$F9,$06,$56,$06,$28,$14,$15,$00<br />
dc.b $3D,$00,$02,$01,$01,$4C,$50,$0F,$12,$0C,$00,$02<br />
dc.b $05,$01,$00,$00,$00,$28,$2A,$29,$19,$1A,$06,$00,$00<br />
dc.b $2C,$71,$31,$71,$31,$1F,$1F,$16,$16,$00,$00,$0F<br />
dc.b $0F,$00,$00,$0F,$0F,$00,$00,$FA,$FA,$15,$14,$00,$00<br />
dc.b $18,$37,$31,$32,$31,$9E,$1C,$DC,$9C,$0D,$04,$06<br />
dc.b $01,$08,$03,$0A,$05,$B6,$36,$B6,$28,$2C,$14,$22,$00<br />
dc.b $3D,$01,$02,$02,$02,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$24,$18,$18,$18,$1C,$82,$82,$82<br />
dc.b $32,$71,$33,$0D,$01,$5F,$5F,$99,$94,$05,$05,$05<br />
dc.b $07,$02,$02,$02,$02,$11,$11,$11,$72,$23,$26,$2D,$80<br />
dc.b $3A,$32,$52,$01,$31,$1F,$1F,$1F,$18,$01,$00,$1F<br />
dc.b $00,$00,$00,$0F,$00,$5A,$03,$0F,$1A,$3B,$4F,$30,$00<br />
dc.b $3C,$42,$32,$41,$41,$12,$12,$12,$12,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$06,$06,$08,$08,$24,$24,$08,$08<br />
dc.b $31,$34,$30,$35,$31,$DF,$9F,$DF,$9F,$0C,$0C,$07<br />
dc.b $09,$07,$07,$07,$08,$2F,$1F,$1F,$2F,$17,$14,$32,$80<br />
dc.b $3D,$01,$01,$01,$01,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$20,$1A,$1A,$1A,$19,$84,$84,$84<br />
dc.b $24,$70,$30,$74,$38,$12,$1F,$1F,$1F,$05,$05,$03<br />
dc.b $03,$05,$05,$03,$03,$36,$26,$2C,$2C,$0A,$06,$08,$08<br />
dc.b $3A,$01,$01,$01,$02,$8D,$07,$07,$52,$09,$00,$00<br />
dc.b $03,$01,$02,$02,$00,$5F,$0F,$0F,$2F,$18,$18,$22,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$03,$03,$08,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$17,$20,$28,$80<br />
dc.b $20,$7A,$00,$31,$00,$9F,$DC,$D8,$DF,$10,$04,$0A<br />
dc.b $04,$0F,$08,$08,$08,$5F,$BF,$5F,$BF,$14,$17,$2B,$80<br />
dc.b $3A,$61,$51,$08,$02,$5D,$5D,$5D,$50,$04,$1F,$0F<br />
dc.b $1F,$00,$00,$00,$00,$1F,$0F,$5F,$0F,$22,$22,$1E,$80<br />
dc.b $02,$01,$02,$55,$04,$92,$8E,$8D,$54,$0D,$00,$0C<br />
dc.b $03,$00,$00,$00,$00,$FF,$0F,$2F,$5F,$16,$1D,$2A,$80<br />
dc.b $02,$75,$73,$71,$31,$1F,$96,$58,$9F,$01,$03,$1B<br />
dc.b $08,$01,$01,$04,$05,$FF,$3F,$2F,$2F,$24,$30,$29,$80<br />
dc.b $20,$66,$60,$65,$60,$DF,$9F,$DF,$1F,$00,$09,$06<br />
dc.b $0C,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$1C,$16,$3A,$80<br />
dc.b $0D,$32,$06,$08,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$86,$80,$8D<br />
dc.b $38,$3A,$11,$0A,$02,$D4,$50,$14,$0E,$05,$02,$08<br />
dc.b $88,$00,$00,$00,$00,$99,$09,$09,$1A,$2D,$19,$2C,$86<br />
dc.b $0D,$32,$02,$04,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$8B,$86,$93<br />
dc.b $3A,$20,$60,$23,$01,$1E,$1F,$1F,$1F,$0A,$0B,$0A<br />
dc.b $0A,$05,$0A,$07,$08,$A4,$96,$85,$78,$21,$28,$25,$00<br />
dc.b $3A,$32,$32,$56,$42,$8D,$15,$4F,$52,$06,$07,$08<br />
dc.b $04,$02,$00,$00,$00,$18,$28,$18,$28,$19,$2A,$20,$00<br />
dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$19,$13,$37,$80<br />
dc.b $3D,$01,$02,$02,$02,$14,$8C,$0E,$0E,$08,$02,$05<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$1A,$80,$80,$80<br />
; end of Mus_Credits<br />
<br />
; ------------------------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ------------------------------------------------------------------------------------------<br />
; WARNING the sound driver treats certain sounds specially<br />
; going by the ID of the sound.<br />
; SndID_Ring, SndID_RingLeft, SndID_Gloop, SndID_SpindashRev<br />
; are referenced by the sound driver directly.<br />
; If needed you can change this in s2.sounddriver.asm<br />
<br />
<br />
; NOTE: the exact order of this list determines the priority of each sound, since it determines the sound's SndID.<br />
; a sound can get dropped if a higher-priority sound is already playing.<br />
; the rules for sound priority are currently unknown, but you can generally swap pointer lines around to resolve priority conflicts.<br />
; loc_FEE91: SoundPoint:<br />
SoundIndex:<br />
SndPtr_Jump: rom_ptr_z80 Sound20 ; jumping sound<br />
SndPtr_Checkpoint: rom_ptr_z80 Sound21 ; checkpoint ding-dong sound<br />
SndPtr_SpikeSwitch: rom_ptr_z80 Sound22 ; spike switch sound<br />
SndPtr_Hurt: rom_ptr_z80 Sound23 ; hurt sound<br />
SndPtr_Skidding: rom_ptr_z80 Sound24 ; skidding sound<br />
SndPtr_BlockPush: rom_ptr_z80 Sound25 ; block push sound<br />
SndPtr_HurtBySpikes: rom_ptr_z80 Sound26 ; spiky impalement sound<br />
SndPtr_Sparkle: rom_ptr_z80 Sound27 ; sparkling sound<br />
SndPtr_Beep: rom_ptr_z80 Sound28 ; short beep<br />
SndPtr_Bwoop: rom_ptr_z80 Sound29 ; bwoop<br />
SndPtr_Splash: rom_ptr_z80 Sound2A ; splash sound<br />
SndPtr_Swish: rom_ptr_z80 Sound2B ; swish<br />
SndPtr_BossHit: rom_ptr_z80 Sound2C ; boss hit<br />
SndPtr_InhalingBubble: rom_ptr_z80 Sound2D ; inhaling a bubble<br />
SndPtr_ArrowFiring:<br />
SndPtr_LavaBall: rom_ptr_z80 Sound2E ; arrow firing<br />
SndPtr_Shield: rom_ptr_z80 Sound2F ; shield sound<br />
SndPtr_LaserBeam: rom_ptr_z80 Sound30 ; laser beam<br />
SndPtr_Zap: rom_ptr_z80 Sound31 ; zap<br />
SndPtr_Drown: rom_ptr_z80 Sound32 ; drownage<br />
SndPtr_FireBurn: rom_ptr_z80 Sound33 ; fire + burn<br />
SndPtr_Bumper: rom_ptr_z80 Sound34 ; bumper bing<br />
SndPtr_Ring:<br />
SndPtr_RingRight: rom_ptr_z80 Sound35 ; ring sound<br />
SndPtr_SpikesMove: rom_ptr_z80 Sound36<br />
SndPtr_Rumbling: rom_ptr_z80 Sound37 ; rumbling<br />
rom_ptr_z80 Sound38<br />
SndPtr_Smash: rom_ptr_z80 Sound39 ; smash/breaking<br />
rom_ptr_z80 Sound3A ; nondescript ding<br />
SndPtr_DoorSlam: rom_ptr_z80 Sound3B ; door slamming shut<br />
SndPtr_SpindashRelease: rom_ptr_z80 Sound3C ; spindash unleashed<br />
SndPtr_Hammer: rom_ptr_z80 Sound3D ; slide-thunk<br />
SndPtr_Roll: rom_ptr_z80 Sound3E ; rolling sound<br />
SndPtr_ContinueJingle: rom_ptr_z80 Sound3F ; got continue<br />
SndPtr_CasinoBonus: rom_ptr_z80 Sound40 ; short bonus ding<br />
SndPtr_Explosion: rom_ptr_z80 Sound41 ; badnik bust<br />
SndPtr_WaterWarning: rom_ptr_z80 Sound42 ; warning ding-ding<br />
SndPtr_EnterGiantRing: rom_ptr_z80 Sound43 ; special stage ring flash (unused)<br />
SndPtr_BossExplosion: rom_ptr_z80 Sound44 ; thunk<br />
SndPtr_TallyEnd: rom_ptr_z80 Sound45 ; cha-ching<br />
SndPtr_RingSpill: rom_ptr_z80 Sound46 ; losing rings<br />
rom_ptr_z80 Sound47 ; chain pull chink-chink<br />
SndPtr_Flamethrower: rom_ptr_z80 Sound48 ; flamethrower<br />
SndPtr_Bonus: rom_ptr_z80 Sound49 ; bonus pwoieeew (unused)<br />
SndPtr_SpecStageEntry: rom_ptr_z80 Sound4A ; special stage entry<br />
SndPtr_SlowSmash: rom_ptr_z80 Sound4B ; slower smash/crumble<br />
SndPtr_Spring: rom_ptr_z80 Sound4C ; spring boing<br />
SndPtr_Blip: rom_ptr_z80 Sound4D ; selection blip<br />
SndPtr_RingLeft: rom_ptr_z80 Sound4E ; another ring sound (only plays in the left speaker?)<br />
SndPtr_Signpost: rom_ptr_z80 Sound4F ; signpost spin sound<br />
SndPtr_CNZBossZap: rom_ptr_z80 Sound50 ; mosquito zapper<br />
rom_ptr_z80 Sound51<br />
rom_ptr_z80 Sound52<br />
SndPtr_Signpost2P: rom_ptr_z80 Sound53<br />
SndPtr_OOZLidPop: rom_ptr_z80 Sound54 ; OOZ lid pop sound<br />
SndPtr_SlidingSpike: rom_ptr_z80 Sound55<br />
SndPtr_CNZElevator: rom_ptr_z80 Sound56<br />
SndPtr_PlatformKnock: rom_ptr_z80 Sound57<br />
SndPtr_BonusBumper: rom_ptr_z80 Sound58 ; CNZ bonusy bumper sound<br />
SndPtr_LargeBumper: rom_ptr_z80 Sound59 ; CNZ baaang bumper sound<br />
SndPtr_Gloop: rom_ptr_z80 Sound5A ; CNZ gloop / water droplet sound<br />
SndPtr_PreArrowFiring: rom_ptr_z80 Sound5B<br />
SndPtr_Fire: rom_ptr_z80 Sound5C<br />
SndPtr_ArrowStick: rom_ptr_z80 Sound5D ; chain clink<br />
SndPtr_Helicopter:<br />
SndPtr_WingFortress: rom_ptr_z80 Sound5E ; helicopter<br />
SndPtr_SuperTransform: rom_ptr_z80 Sound5F<br />
SndPtr_SpindashRev: rom_ptr_z80 Sound60 ; spindash charge<br />
SndPtr_Rumbling2: rom_ptr_z80 Sound61 ; rumbling<br />
SndPtr_CNZLaunch: rom_ptr_z80 Sound62<br />
SndPtr_Flipper: rom_ptr_z80 Sound63 ; CNZ blooing bumper<br />
SndPtr_HTZLiftClick: rom_ptr_z80 Sound64 ; HTZ track click sound<br />
SndPtr_Leaves: rom_ptr_z80 Sound65 ; kicking up leaves sound<br />
SndPtr_MegaMackDrop: rom_ptr_z80 Sound66 ; leaf splash?<br />
SndPtr_DrawbridgeMove: rom_ptr_z80 Sound67<br />
SndPtr_QuickDoorSlam: rom_ptr_z80 Sound68 ; door slamming quickly (seems unused)<br />
SndPtr_DrawbridgeDown: rom_ptr_z80 Sound69<br />
SndPtr_LaserBurst: rom_ptr_z80 Sound6A ; robotic laser burst<br />
SndPtr_Scatter:<br />
SndPtr_LaserFloor: rom_ptr_z80 Sound6B ; scatter<br />
SndPtr_Teleport: rom_ptr_z80 Sound6C<br />
SndPtr_Error: rom_ptr_z80 Sound6D ; error sound<br />
SndPtr_MechaSonicBuzz: rom_ptr_z80 Sound6E ; silver sonic buzz saw<br />
SndPtr_LargeLaser: rom_ptr_z80 Sound6F<br />
SndPtr_OilSlide: rom_ptr_z80 Sound70<br />
SndPtr__End:<br />
<br />
; There are many non-relative pointers in these sound effects,<br />
; so the sounds shouldn't simply be BINCLUDE'd.<br />
; They could be included as separate .asm files using "include" instead of "binclude",<br />
; but I wanted to minimize the number of included asm files.<br />
<br />
; some comments on what the various script commands do (after the header):<br />
; 0x00-0x7F sets the note duration (of the previous note and following notes)<br />
; 0x81-0xDF plays a note (the valid range may be smaller for PSG or DAC)<br />
; 0x80 plays silence<br />
; 0xE0-0xFF does special things. I won't list them here... search for "Coordination flags" sonic 2.<br />
<br />
; the FM voices (poorly named "ssamp" or "samples" below)<br />
; are 25 bytes each and go directly to YM2612 registers.<br />
; they can be hard to edit (there's an art to it)<br />
; but search for sonic "Voice editing" for more info if you want to try.<br />
<br />
; jumping sound<br />
Sound20: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$F400<br />
+ dc.b $F5,$00,$9E,$05,$F0,$02,$01,$F8,$65,$A3,$15,$F2<br />
<br />
; checkpoint ding-dong sound<br />
Sound21: dc.w z80_ptr(ssamp21),$0101<br />
dc.w $8005,z80_ptr(+),$0001<br />
ssamp21: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
+ dc.b $EF,$00,$BD,$06,$BA,$16,$F2<br />
<br />
; spike switch sound<br />
Sound22: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C0,$04,$CA,$04<br />
- dc.b $C0,$01,$EC<br />
dc.w $01F7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; hurt sound<br />
Sound23: dc.w z80_ptr(ssamp23),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B0,$07,$E7,$AD<br />
- dc.b $01,$E6<br />
dc.w $01F7,$002F,z80_ptr(-)<br />
dc.b $F2<br />
ssamp23: dc.b $30,$30,$30,$30,$30,$9E,$DC,$D8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$14,$14,$3C,$80<br />
<br />
; skidding sound<br />
Sound24: dc.w $0000,$0102 ; sound header... no sample and 2 script entries<br />
dc.w $80A0,z80_ptr(+),$F400 ; entry 1 header<br />
dc.w $80C0,z80_ptr(++),$F400 ; entry 2 header<br />
+ dc.b $F5,$00,$AF,$01,$80,$AF,$80,$03 ; script entry 1<br />
- dc.b $AF,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 1 end<br />
+ dc.b $F5,$00,$80,$01,$AD,$80,$AD,$80,$03 ; script entry 2<br />
- dc.b $AD,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 2 end<br />
<br />
; block push sound<br />
Sound25: dc.w z80_ptr(ssamp25),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$01,$8B,$0A,$80,$02,$F2<br />
ssamp25: dc.b $FA,$21,$10,$30,$32,$2F,$2F,$1F,$2F,$05,$09,$08<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
; spiky impalement sound<br />
Sound26: dc.w z80_ptr(ssamp26),$0101<br />
dc.w $8005,z80_ptr(+),$F200<br />
+ dc.b $EF,$00,$F0,$01,$01,$10,$FF,$CF,$05,$D7,$25,$F2<br />
ssamp26: dc.b $3B,$3C,$30,$39,$31,$DF,$1F,$1F,$DF,$04,$04,$05<br />
dc.b $01,$04,$04,$04,$02,$FF,$1F,$0F,$AF,$29,$0F,$20,$80<br />
<br />
; sparkling sound<br />
Sound27: dc.w z80_ptr(ssamp27),$0101<br />
dc.w $8004,z80_ptr(+),$0C1C<br />
+ dc.b $EF,$00,$C1,$05,$C4,$05,$C9,$2B,$F2<br />
ssamp27: dc.b $07,$73,$33,$33,$73,$0F,$19,$14,$1A,$0A,$0A,$0A<br />
dc.b $0A,$0A,$0A,$0A,$0A,$57,$57,$57,$57,$00,$00,$00,$00<br />
<br />
; short beep<br />
Sound28: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$E803<br />
+ dc.b $F5,$04,$CB,$04,$F2<br />
<br />
; bwoop<br />
Sound29: dc.w $0000,$0101<br />
dc.w $80A0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$E6,$35,$8E,$06,$F2<br />
<br />
; splash sound<br />
Sound2A: dc.w z80_ptr(ssamp2A),$0102<br />
dc.w $80C0,z80_ptr(+),$0000<br />
dc.w $8005,z80_ptr(++),$0003<br />
+ dc.b $F5,$00,$F3,$E7,$C2,$05,$C6,$05,$E7<br />
- dc.b $07,$EC,$01<br />
dc.w $E7F7,$000F,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$A6,$14,$F2<br />
ssamp2A: dc.b $00,$00,$02,$03,$00,$D9,$1F,$DF,$1F,$12,$14,$11<br />
dc.b $0F,$0A,$0A,$00,$0D,$FF,$FF,$FF,$FF,$22,$27,$07,$80<br />
<br />
; swish<br />
Sound2B: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$C6,$03,$80,$03,$C6,$01,$E7<br />
- dc.b $01,$EC,$01<br />
dc.w $E7F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; boss hit<br />
Sound2C: dc.w z80_ptr(smashsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$0C,$01<br />
- dc.b $81,$0A,$E6<br />
dc.w $10F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
smashsamp: dc.b $F9,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
<br />
; inhaling a bubble<br />
Sound2D: dc.w z80_ptr(ssamp2D),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$21,$6E,$A6,$07<br />
dc.b $80,$06,$F0,$01,$01,$44,$1E,$AD,$08,$F2<br />
ssamp2D: dc.b $35,$05,$08,$09,$07,$1E,$0D,$0D,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$1F,$2F,$1F,$15,$12,$12,$80<br />
<br />
; arrow firing<br />
Sound2E: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$C6,$01,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp2E: dc.b $FA,$02,$00,$03,$05,$12,$0F,$11,$13,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$2F,$0E,$1A,$80<br />
<br />
; shield sound<br />
Sound2F: dc.w z80_ptr(ssamp2F),$0101<br />
dc.w $8005,z80_ptr(+),$0C00<br />
+ dc.b $EF,$00,$80,$01,$A3,$05,$E7,$A4,$26,$F2<br />
ssamp2F: dc.b $30,$30,$30,$30,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$04,$14,$2C,$80<br />
<br />
; laser beam<br />
Sound30: dc.w z80_ptr(ssamp30),$0101 ; sound header... a voice and 1 script entry<br />
dc.w $8005,z80_ptr(+),$FB05 ; script entry header<br />
+ dc.b $EF,$00,$DF,$7F ; script start<br />
- dc.b $DF,$02,$E6 ; script continued<br />
dc.w $01F7,$001B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script end<br />
ssamp30: dc.b $83,$1F,$1F,$15,$1F,$1F,$1F,$1F,$1F,$00,$00,$00 ; voice<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$0B,$01,$16,$82 ; (fixed length)<br />
<br />
; zap<br />
Sound31: dc.w z80_ptr(ssamp31),$0101<br />
dc.w $8005,z80_ptr(+),$FB02<br />
+ dc.b $EF,$00,$B3,$05,$80,$01,$B3,$09,$F2<br />
ssamp31: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$05,$34,$10,$87<br />
<br />
; drownage<br />
Sound32: dc.w z80_ptr(ssamp32),$0102<br />
dc.w $8004,z80_ptr(++),$0C04<br />
dc.w $8005,z80_ptr(+),$0E02<br />
+ dc.b $EF,$00,$F0,$01,$01,$83,$0C<br />
- dc.b $8A,$05,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $80,$06,$EF,$00,$F0,$01,$01,$6F,$0E<br />
- dc.b $8D,$04,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp32: dc.b $35,$14,$04,$1A,$09,$0E,$11,$10,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$4F,$2F,$4F,$2F,$12,$12,$80<br />
<br />
; fire + burn<br />
Sound33: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$A7,$25,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; bumper bing<br />
Sound34: dc.w z80_ptr(ssamp34),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $8002,z80_ptr(+++),$0002<br />
+ dc.b $EF,$00,$F6<br />
dc.w z80_ptr(Sound34_3)<br />
+ dc.b $EF,$00,$E1,$07,$80,$01<br />
Sound34_3:<br />
dc.b $BA,$20,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
ssamp34: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$1F,$2B,$80,$80<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; ring sound<br />
Sound35: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$40,$C1,$05,$C4,$05,$C9,$1B,$F2<br />
<br />
<br />
Sound36: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C1,$07<br />
- dc.b $D0,$01,$EC<br />
dc.w $01F7,$000C,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; rumbling<br />
Sound37: dc.w z80_ptr(ssamp37),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$20,$08<br />
- dc.b $8B<br />
dc.w $0AF7,$0008,z80_ptr(-)<br />
- dc.b $8B,$10,$E6<br />
dc.w $03F7,$0009,z80_ptr(-)<br />
dc.b $F2<br />
ssamp37: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
<br />
Sound38: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$B4,$08<br />
- dc.b $B0,$02,$EC<br />
dc.w $01F7,$0003,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; smash/breaking<br />
Sound39: dc.w z80_ptr(smashsamp),$0104<br />
dc.w $8002,z80_ptr(+),$1000<br />
dc.w $8004,z80_ptr(+++),$0000<br />
dc.w $8005,z80_ptr(++),$1000<br />
dc.w $80C0,z80_ptr(s39s4),$0000<br />
+ dc.b $E0,$40,$80,$02,$F6<br />
dc.w z80_ptr(++)<br />
+ dc.b $E0,$80,$80,$01<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
s39s4: dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; nondescript ding<br />
Sound3A: dc.w z80_ptr(ssamp3A),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$AE,$08,$F2<br />
ssamp3A: dc.b $1C,$2E,$0F,$02,$02,$1F,$1F,$1F,$1F,$18,$14,$0F<br />
dc.b $0E,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$20,$1B,$80,$80<br />
<br />
; door slamming shut<br />
Sound3B: dc.w z80_ptr(ssamp3B),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$80,$A0,$06,$F2<br />
ssamp3B: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; spindash unleashed<br />
Sound3C: dc.w z80_ptr(ssamp3C),$0102<br />
dc.w $8005,z80_ptr(+),$9000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$F2<br />
+ dc.b $F5,$07,$80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$4F,$F2<br />
ssamp3C: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
<br />
; slide-thunk<br />
Sound3D: dc.w z80_ptr(ssamp3D),$0102<br />
dc.w $8005,z80_ptr(+),$100A<br />
dc.w $8004,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$60,$01,$A7,$08,$F2<br />
+ dc.b $80,$08,$EF,$01,$84,$22,$F2<br />
ssamp3D: dc.b $FA,$21,$19,$3A,$30,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
dc.b $FA,$31,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$1F,$2F,$2F,$0D,$01,$00,$80<br />
<br />
; rolling sound<br />
Sound3E: dc.w z80_ptr(ssamp3E),$0101<br />
dc.w $8004,z80_ptr(+),$0C05<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$09,$FF,$CA,$25,$F4<br />
- dc.b $E7,$E6,$01,$D0<br />
dc.w $02F7,$002A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3E: dc.b $3C,$00,$02,$44,$02,$1F,$1F,$1F,$15,$00,$00,$1F<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0D,$28,$00,$00<br />
<br />
; got continue<br />
Sound3F: dc.w z80_ptr(ssamp3F),$0103<br />
dc.w $8002,z80_ptr(+),$F406<br />
dc.w $8004,z80_ptr(++),$F406<br />
dc.w $8005,z80_ptr(+++),$F406<br />
+ dc.b $EF,$00,$C9,$07,$CD,$D0,$CB,$CE,$D2,$CD,$D0,$D4,$CE,$D2,$D5<br />
- dc.b $D0,$07,$D4,$D7,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$80,$07,$CD,$15,$CE,$D0,$D2<br />
- dc.b $D4,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$C9,$15,$CB,$CD,$CE<br />
- dc.b $D0,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3F: dc.b $14,$25,$36,$33,$11,$1F,$1F,$1F,$1F,$15,$1C,$18<br />
dc.b $13,$0B,$0D,$08,$09,$0F,$8F,$9F,$0F,$24,$0A,$05,$80<br />
<br />
; short bonus ding<br />
Sound40: dc.w z80_ptr(ssamp3F),$0102<br />
dc.w $8005,z80_ptr(++),$0008<br />
dc.w $8004,z80_ptr(+),$0008<br />
+ dc.b $E1,$03,$80,$02<br />
+ dc.b $EF,$00,$C4,$16,$F2<br />
<br />
; badnik bust<br />
Sound41: dc.w z80_ptr(ssamp41),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0002<br />
+ dc.b $F0,$03,$01,$72,$0B,$EF,$00,$BA,$16,$F2<br />
+ dc.b $F5,$01,$F3,$E7,$B0,$1B,$F2<br />
ssamp41: dc.b $3C,$0F,$03,$01,$01,$1F,$1F,$1F,$1F,$19,$19,$12<br />
dc.b $0E,$05,$00,$12,$0F,$0F,$FF,$7F,$FF,$00,$00,$80,$80<br />
<br />
; warning ding-ding<br />
Sound42: dc.w z80_ptr(ssamp3F),$0101<br />
dc.w $8005,z80_ptr(+),$0C08<br />
+ dc.b $EF,$00,$BA,$08,$BA,$25,$F2<br />
<br />
; special stage ring flash (unused)<br />
Sound43: dc.w z80_ptr(ssamp43),$0102<br />
dc.w $8004,z80_ptr(+),$0C00<br />
dc.w $8005,z80_ptr(++),$0013<br />
+ dc.b $EF,$01,$80,$01,$A2,$08,$EF,$00,$E7,$AD,$26,$F2<br />
+ dc.b $EF,$02,$F0,$06,$01,$03,$FF,$80,$0A<br />
- dc.b $C3<br />
dc.w $06F7,$0005,z80_ptr(-)<br />
dc.b $C3,$17,$F2<br />
ssamp43: dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$1C,$80<br />
dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$2C,$80<br />
dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$13,$13,$81,$88<br />
<br />
; thunk<br />
Sound44: dc.w z80_ptr(ssamp44),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$8A,$22,$F2<br />
ssamp44: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$4F,$2F,$2F,$0D,$04,$07,$80<br />
<br />
; cha-ching<br />
Sound45: dc.w z80_ptr(ssamp45),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$8A,$08,$80,$02,$8A,$08,$F2<br />
+ dc.b $EF,$01,$80,$12,$C6,$55,$F2<br />
+ dc.b $F5,$02,$F3,$E7,$80,$02,$C2,$05,$C4,$04,$C2,$05,$C4,$04,$F2<br />
ssamp45: dc.b $3B,$03,$02,$02,$06,$18,$1A,$1A,$96,$17,$0A,$0E<br />
dc.b $10,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$39,$28,$80<br />
ringsamp: dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$23,$80,$80<br />
<br />
; losing rings (scatter)<br />
Sound46: dc.w z80_ptr(ringsamp),$0102<br />
dc.w $8004,z80_ptr(+),$0005<br />
dc.w $8005,z80_ptr(++),$0008<br />
+ dc.b $EF,$00,$C6,$02,$05,$05,$05,$05,$05,$05,$3A,$F2<br />
+ dc.b $EF,$00,$80,$02,$C4,$02,$05,$15,$02,$05,$32,$F2<br />
<br />
; chain pull chink-chink<br />
Sound47: dc.w z80_ptr(ssamp47),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$BE,$05,$80,$04,$BE,$04,$80,$04,$F2<br />
ssamp47: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; flamethrower<br />
Sound48: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$25,$F2<br />
<br />
; bonus pwoieeew (unused)<br />
Sound49: dc.w z80_ptr(ssamp49),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$33,$18,$B9,$1A,$F2<br />
ssamp49: dc.b $3B,$0A,$05,$31,$02,$5F,$5F,$5F,$5F,$04,$16,$14<br />
dc.b $0C,$00,$00,$04,$00,$1F,$D8,$6F,$FF,$03,$00,$25,$80<br />
<br />
; special stage entry<br />
Sound4A: dc.w z80_ptr(ssamp4A),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$F0,$01,$01,$5B,$02,$CC,$65,$F2<br />
ssamp4A: dc.b $20,$36,$30,$35,$31,$41,$3B,$49,$4B,$09,$09,$06<br />
dc.b $08,$01,$02,$03,$A9,$0F,$0F,$0F,$0F,$29,$23,$27,$80<br />
<br />
; slower smash/crumble<br />
Sound4B: dc.w z80_ptr(smashsamp),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; spring boing<br />
Sound4C: dc.w z80_ptr(ssamp4C),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$5D,$0F,$B0,$0C,$F4<br />
- dc.b $E7,$E6,$02,$BD<br />
dc.w $02F7,$0019,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4C: dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$16,$13,$30,$80<br />
<br />
; selection blip<br />
Sound4D: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $BB,$02,$F2<br />
<br />
; another ring sound (only plays in the left speaker?)<br />
Sound4E: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8004,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$80,$C1,$04,$C4,$05,$C9,$1B,$F2<br />
<br />
; signpost spin sound<br />
Sound4F: dc.w z80_ptr(ssamp4F),$0102<br />
dc.w $8004,z80_ptr(+),$2703<br />
dc.w $8005,z80_ptr(++),$2700<br />
+ dc.b $80,$04<br />
+ dc.b $EF,$00<br />
- dc.b $B4,$05,$E6<br />
dc.w $02F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4F: dc.b $F4,$06,$0F,$04,$0E,$1F,$1F,$1F,$1F,$00,$0B,$00<br />
dc.b $0B,$00,$05,$00,$08,$0F,$FF,$0F,$FF,$0C,$03,$8B,$80<br />
<br />
; mosquito zapper<br />
Sound50: dc.w z80_ptr(ssamp50),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B3,$04,$80,$01<br />
- dc.b $B4,$04,$80<br />
dc.w $01F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
ssamp50: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$06,$34,$10,$87<br />
<br />
<br />
Sound51: dc.w z80_ptr(ssamp51),$0102<br />
dc.w $80C0,z80_ptr(+),$0001<br />
dc.w $8005,z80_ptr(++),$000B<br />
+ dc.b $F5,$02,$F3,$E4,$B0,$04,$85,$02,$F2<br />
+ dc.b $EF,$00,$E8,$04,$A5,$06,$F2<br />
ssamp51: dc.b $3C,$02,$01,$00,$01,$1F,$1F,$1F,$1F,$00,$19,$0E<br />
dc.b $10,$00,$00,$0C,$0F,$0F,$FF,$EF,$FF,$05,$00,$80,$80<br />
<br />
<br />
Sound52: dc.w z80_ptr(ssamp52),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $F0,$01,$01,$2A,$07,$EF,$00<br />
- dc.b $A5,$03<br />
dc.w $E7F7,$0013,z80_ptr(-)<br />
- dc.b $A5,$03,$E7,$E6<br />
dc.w $02F7,$0013,z80_ptr(-)<br />
dc.b $F2<br />
ssamp52: dc.b $28,$21,$21,$21,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$29,$20,$29,$80<br />
<br />
<br />
Sound53: dc.w z80_ptr(ssamp53),$0101<br />
dc.w $8005,z80_ptr(+),$F503<br />
+ dc.b $EF,$00,$F0,$01,$01,$46,$09,$A7,$14,$E7,$14,$E7,$E6,$04<br />
dc.b $14,$E7,$E6,$04,$14,$E7,$E6,$04,$0A,$E7,$E6,$04,$0A,$F2<br />
ssamp53: dc.b $07,$0A,$0C,$0C,$0C,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$2A,$0F,$0F,$80<br />
<br />
; OOZ lid pop sound<br />
Sound54: dc.w z80_ptr(ssamp54),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0006<br />
+ dc.b $EF,$00,$B6,$15,$F2<br />
+ dc.b $F3,$E7,$F5,$04,$C6,$03,$E7,$C5,$E7<br />
dc.b $C4,$E7,$C3,$E7,$C2,$E7,$C1,$E7,$C0,$F2<br />
ssamp54: dc.b $07,$03,$02,$03,$00,$FF,$6F,$6F,$3F,$12,$14,$11<br />
dc.b $0E,$1A,$0A,$03,$0D,$FF,$FF,$FF,$FF,$03,$07,$07,$80<br />
<br />
<br />
Sound55: dc.w z80_ptr(ssamp55),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$AA,$07,$B6,$15,$F2<br />
ssamp55: dc.b $42,$20,$0E,$0F,$0F,$1F,$1F,$1F,$1F,$1F,$1F,$1F<br />
dc.b $1F,$0F,$0E,$0F,$0E,$0F,$0F,$0F,$0F,$2E,$80,$20,$80<br />
<br />
<br />
Sound56: dc.w z80_ptr(ssamp56),$0101<br />
dc.w $8005,z80_ptr(+),$100E<br />
+ dc.b $EF,$00,$F0,$01,$01,$1E,$FF,$8F,$1C,$F4<br />
- dc.b $E7,$9A<br />
dc.w $05F7,$0009,z80_ptr(-)<br />
- dc.b $E7,$9A,$04,$E6,$02,$E7,$9A,$04,$E6<br />
dc.w $02F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp56: dc.b $0D,$06,$00,$00,$E5,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$27,$80,$80,$80<br />
<br />
<br />
Sound57: dc.w z80_ptr(ssamp57),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$CA,$15,$F2<br />
ssamp57: dc.b $04,$09,$70,$00,$30,$1C,$1F,$DF,$1F,$15,$12,$0B<br />
dc.b $0F,$0C,$0D,$00,$0D,$07,$2F,$FA,$FA,$00,$29,$00,$00<br />
<br />
; CNZ bonusy bumper sound<br />
Sound58: dc.w z80_ptr(ssamp58),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$B3,$06,$B3,$15,$F2<br />
ssamp58: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
<br />
; CNZ baaang bumper sound<br />
Sound59: dc.w z80_ptr(ssamp59),$0103<br />
dc.w $8004,z80_ptr(+),$0000<br />
dc.w $8002,z80_ptr(++),$0002<br />
dc.w $8005,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$E1,$0C,$B5,$14,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
+ dc.b $EF,$00,$B6,$14,$F2<br />
ssamp59: dc.b $32,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $0D,$00,$01,$01,$0C,$00,$23,$C3,$F6,$08,$07,$1C,$03<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; CNZ gloop / water droplet sound<br />
Sound5A: dc.w z80_ptr(ssamp5A),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$7F,$F1,$AA,$0A,$F2<br />
ssamp5A: dc.b $47,$03,$02,$02,$04,$5F,$5F,$5F,$5F,$0E,$1A,$11<br />
dc.b $0A,$09,$0A,$0A,$0A,$4F,$3F,$3F,$3F,$7F,$80,$80,$A3<br />
<br />
<br />
Sound5B: dc.w z80_ptr(ssamp5B),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$02,$A5,$01,$E7<br />
- dc.b $01,$E7,$E6<br />
dc.w $02F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5B: dc.b $38,$0F,$0F,$0F,$0F,$1F,$1F,$1F,$0E,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$1F,$00,$00,$00,$80<br />
<br />
<br />
Sound5C: dc.w z80_ptr(ssamp5C),$0102<br />
dc.w $8004,z80_ptr(+),$000E<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$85,$40<br />
- dc.b $E7,$04,$E6<br />
dc.w $04F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$40<br />
- dc.b $E7,$08,$E6<br />
dc.w $01F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5C: dc.b $FA,$12,$01,$01,$01,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$81,$8E,$14,$80<br />
<br />
; chain clink<br />
Sound5D: dc.w z80_ptr(ssamp5D),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$C0,$04,$F2<br />
ssamp5D: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; helicopter<br />
Sound5E: dc.w z80_ptr(ssamp5E),$0101<br />
dc.w $8002,z80_ptr(+),$1405<br />
+ dc.b $EF,$00<br />
- dc.b $95,$02,$95<br />
dc.w $01F7,$0013,z80_ptr(-)<br />
- dc.b $95,$02,$95,$01,$E6<br />
dc.w $01F7,$001B,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5E: dc.b $35,$30,$44,$40,$51,$1F,$1F,$1F,$1F,$10,$00,$13<br />
dc.b $15,$1F,$00,$1F,$1A,$7F,$0F,$7F,$5F,$02,$A8,$80,$80<br />
<br />
<br />
Sound5F: dc.w z80_ptr(ssamp5F),$0103<br />
dc.w $8005,z80_ptr(s5Fs1),$0000<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
s5Fs1 dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$E6,$0A,$80<br />
dc.b $06,$EF,$01,$F0,$01,$01,$11,$FF,$A2,$28<br />
- dc.b $E7,$03,$E6<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs2 dc.b $80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$1D<br />
- dc.b $E7,$07,$EC<br />
dc.w $01F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs3 dc.b $80,$16,$F5,$03<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $FFF7,$0005,z80_ptr(-)<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $01F7,$0007,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5F: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
dc.b $3A,$70,$30,$04,$01,$0F,$14,$19,$16,$08,$0A,$0B<br />
dc.b $05,$03,$03,$03,$05,$1F,$6F,$8F,$5F,$1F,$22,$1F,$80<br />
<br />
; spindash charge<br />
Sound60: dc.w z80_ptr(ssamp60),$0101<br />
dc.w $8005,z80_ptr(+),$FE00<br />
+ dc.b $EF,$00,$F0,$00,$01,$20,$F6,$C4,$16,$E7,$F4,$D0,$18,$E7<br />
- dc.b $04,$E7,$E6<br />
dc.w $03F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp60: dc.b $34,$00,$03,$0C,$09,$9F,$8C,$8F,$95,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$00,$1D,$00,$00<br />
<br />
; rumbling<br />
Sound61: dc.w z80_ptr(ssamp61),$0101<br />
dc.w $8004,z80_ptr(+),$0004<br />
+ dc.b $80,$01,$EF,$00,$F0,$00,$01,$70,$06,$82,$06,$85,$08,$83<br />
dc.b $01,$82,$05,$86,$06,$89,$03,$82,$08,$88,$04,$82,$06,$E6<br />
dc.b $02,$85,$08,$E6,$02,$83,$01,$E6,$02,$82,$05,$E6,$02,$86<br />
dc.b $06,$E6,$02,$89,$03,$E6,$02,$82,$08,$E6,$02,$88,$04,$E6,$02,$F2<br />
ssamp61: dc.b $32,$30,$30,$50,$30,$1F,$0E,$19,$0E,$07,$12,$15<br />
dc.b $09,$0A,$09,$1D,$06,$E8,$03,$0A,$17,$07,$00,$00,$00<br />
<br />
<br />
Sound62: dc.w z80_ptr(ssamp62),$0101<br />
dc.w $8005,z80_ptr(+),$FF00<br />
+ dc.b $EF,$00,$A6,$05,$F0,$01,$01,$E7,$40<br />
- dc.b $C4,$02,$E7,$E6<br />
dc.w $01F7,$0012,z80_ptr(-)<br />
dc.b $F2<br />
ssamp62: dc.b $34,$0C,$10,$73,$0C,$AF,$AC,$FF,$D5,$06,$00,$02<br />
dc.b $01,$02,$0A,$04,$08,$BF,$BF,$BF,$BF,$00,$08,$80,$80<br />
<br />
; CNZ blooing bumper<br />
Sound63: dc.w z80_ptr(ssamp63),$0101<br />
dc.w $8005,z80_ptr(+),$0907<br />
+ dc.b $EF,$00,$F0,$01,$01,$04,$56,$92,$03,$9A,$25,$F2<br />
ssamp63: dc.b $3D,$12,$10,$77,$30,$5F,$5F,$5F,$5F,$0F,$0A,$00<br />
dc.b $01,$0A,$0A,$0D,$0D,$4F,$0F,$0F,$0F,$13,$80,$80,$80<br />
<br />
; HTZ track click sound<br />
Sound64: dc.w z80_ptr(ssamp64),$0101<br />
dc.w $8005,z80_ptr(+),$1100<br />
+ dc.b $EF,$00,$C7,$02,$F2<br />
ssamp64: dc.b $24,$2A,$02,$05,$01,$1A,$1F,$10,$1F,$0F,$1F,$1F<br />
dc.b $1F,$0C,$0D,$11,$11,$0C,$09,$09,$0F,$0E,$04,$80,$80<br />
<br />
; kicking up leaves sound<br />
Sound65: dc.w z80_ptr(ssamp65),$0101<br />
dc.w $80C0,z80_ptr(+),$F800<br />
+ dc.b $F5,$03,$F3,$E7,$CE,$03,$F5,$06,$CE,$04,$EC<br />
dc.b $02,$CE,$02,$F5,$03,$EC,$FE,$CE,$08,$CE,$18,$F2<br />
ssamp65: ; uhm... apparently they forgot to null out the pointer to here.<br />
; luckily, sound 65 doesn't really use its sample<br />
<br />
; leaf splash?<br />
Sound66: dc.w z80_ptr(ssamp66),$0102<br />
dc.w $8005,z80_ptr(++),$EE08<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$F5,$09,$C6,$36,$F2<br />
+ dc.b $EF,$00,$80,$01,$92,$02,$02,$02,$30,$F2<br />
ssamp66: dc.b $32,$33,$17,$34,$13,$0F,$0D,$1B,$17,$00,$04,$02<br />
dc.b $0B,$08,$00,$08,$09,$6F,$5F,$4F,$6F,$05,$00,$00,$80<br />
<br />
<br />
Sound67: dc.w z80_ptr(ssamp67),$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$06,$F3,$E7,$90,$0A,$94,$0A,$98,$0A,$9C<br />
dc.b $0A,$A0,$0A,$A4,$08,$A8,$08,$AC,$08,$B0,$08,$F2<br />
ssamp67: ; another not-really-used sample (like Sound65)<br />
<br />
; door slamming quickly (seems unused)<br />
Sound68: dc.w z80_ptr(ssamp68),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$A5,$06,$F2<br />
ssamp68: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
<br />
Sound69: dc.w z80_ptr(ssamp69),$0102<br />
dc.w $8005,z80_ptr(+),$F400<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$9B,$03,$A8,$06,$9E,$08,$F2<br />
+ dc.b $F5,$04,$F3,$E7,$C6,$03,$C6,$06,$C6,$08,$F2<br />
ssamp69: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; robotic laser burst<br />
Sound6A: dc.w z80_ptr(ssamp6A),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$DF,$14,$E6,$18,$06,$F2<br />
ssamp6A: dc.b $3D,$09,$34,$34,$28,$1F,$16,$16,$16,$00,$00,$00<br />
dc.b $04,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$15,$02,$02,$00<br />
<br />
; scatter<br />
Sound6B: dc.w z80_ptr(ssamp6B),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$81,$04,$80,$0C,$F2<br />
ssamp6B: dc.b $3A,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $07,$00,$01,$01,$03,$00,$23,$C3,$46,$08,$07,$1C,$03<br />
<br />
<br />
Sound6C: dc.w z80_ptr(ssamp6C),$0104<br />
dc.w $8005,z80_ptr(++),$0010<br />
dc.w $8004,z80_ptr(+),$0010<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
+ dc.b $E1,$10<br />
+ dc.b $EF,$01,$F0,$01,$01,$EC,$56,$C0,$24,$F4,$EF,$00,$E6,$F0<br />
- dc.b $BB,$02,$E7,$E6,$02,$E9<br />
dc.w $01F7,$0020,z80_ptr(-)<br />
dc.b $F2<br />
ssamp6C: dc.b $00,$53,$30,$03,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$06,$23,$80<br />
dc.b $3C,$72,$32,$32,$72,$14,$14,$0F,$0F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$02,$02,$08,$08,$35,$14,$00,$00<br />
<br />
; error sound<br />
Sound6D: dc.w z80_ptr(ssamp6D),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$B0,$06,$80,$06,$B0,$18,$F2<br />
ssamp6D: dc.b $38,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$1F,$0C,$17,$00<br />
<br />
; silver sonic buzz saw<br />
Sound6E: dc.w z80_ptr(ssamp6E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$C6,$24,$E7<br />
- dc.b $C6,$04,$E7,$E6<br />
dc.w $04F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F3,$E7,$C7,$44,$F2<br />
ssamp6E: dc.b $33,$00,$10,$00,$31,$1F,$1D,$1E,$0E,$00,$0C,$1D<br />
dc.b $00,$00,$00,$01,$00,$0F,$0F,$0F,$0F,$08,$06,$07,$80<br />
<br />
<br />
Sound6F: dc.w z80_ptr(ssamp6A),$0103<br />
dc.w $8005,z80_ptr(++),$000B<br />
dc.w $8004,z80_ptr(+),$0012<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $E1,$02,$80,$02<br />
+ dc.b $EF,$00,$E6,$0C,$DF,$06,$E7,$E6,$F4,$06,$E7<br />
dc.b $E6,$F4,$12,$E7,$E6,$0C,$06,$E7,$E6,$0C,$06,$F2<br />
+ dc.b $F3,$E7,$C6,$04,$C0,$BA,$B4,$AE,$E6<br />
dc.b $01,$AE,$E6,$01,$AE,$E6,$01,$AE,$F2<br />
<br />
<br />
Sound70: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$C6,$18<br />
- dc.b $E7,$03,$E6<br />
dc.w $01F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to the other bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
; share these symbols externally (WARNING: don't rename, move or remove these labels!)<br />
shared movewZ80CompSize<br />
</asm><br />
<br />
We want to replace it with this optimized code:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===sound playback routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #$GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
<br />
==Driver data files==<br />
then unpack this into the sound folder and optionally remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the music and sound effects==<br />
Now we will open s2.constants.asm.<br><br />
===music===<br />
go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
that may be good if you were using the sonic2 driver, but obviously you are not, we need to change it.<br />
<asm><br />
MusID__First = 0<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
;for compatibility with sonic2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
the original music IDs in the compat section can be set to which ever ones you want in the above (I wouldn't recommend editing the 2PResult one though)<br />
===sound effects===<br />
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.<br><br />
we want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.<br />
{{S2Howtos}}<br />
[[Category:SCHG How-tos|{{PAGENAME}}]]</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208752
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-25T02:03:54Z
<p>Kram1024: /* sound effects */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==<br />
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><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
move sr,-(sp)<br />
movem.l d0-a6,-(sp)<br />
move #$2700,sr<br />
lea (Z80_Bus_Request).l,a3<br />
lea (Z80_Reset).l,a2<br />
moveq #0,d2<br />
move.w #$100,d1<br />
move.w d1,(a3) ; get Z80 bus<br />
move.w d1,(a2) ; release Z80 reset (was held high by console on startup)<br />
- btst d2,(a3)<br />
bne.s - ; wait until the 68000 has the bus<br />
jsr DecompressSoundDriver(pc)<br />
btst #0,(VDP_control_port+1).l ; check video mode<br />
sne (Z80_RAM+zPalModeByte).l ; set if PAL<br />
move.w d2,(a2) ; hold Z80 reset<br />
move.w d2,(a3) ; release Z80 bus<br />
moveq #$E6,d0<br />
- dbf d0,- ; wait for 2,314 cycles<br />
move.w d1,(a2) ; release Z80 reset<br />
movem.l (sp)+,d0-a6<br />
move (sp)+,sr<br />
rts<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; slightly modified Saxman decompression of the sound driver<br />
; a4 == $A00000 (start of Z80 RAM)<br />
; a5 == current position in Z80 RAM?<br />
; a6 == current position in compressed sound driver?<br />
; d0 == data to decompress? (byte)<br />
; d4 == ???<br />
; d5 == ???<br />
; d6 == ???<br />
; d7 == bytes left to decompress<br />
; loc_EC04A:<br />
DecompressSoundDriver:<br />
lea Snd_Driver(pc),a6<br />
; WARNING: the build script needs editing if you rename this label<br />
movewZ80CompSize: move.w #Snd_Driver_End-Snd_Driver,d7 ; patched (by fixpointer.exe) after compression since the exact size can't be known beforehand<br />
moveq #0,d6<br />
lea (Z80_RAM).l,a5<br />
moveq #0,d5<br />
lea (Z80_RAM).l,a4<br />
<br />
loc_EC062:<br />
lsr.w #1,d6<br />
btst #8,d6<br />
bne.s +<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d6<br />
ori.w #$FF00,d6<br />
+<br />
btst #0,d6<br />
beq.s loc_EC086<br />
jsr sub_EC0DE(pc)<br />
move.b d0,(a5)+<br />
addq.w #1,d5<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC086:<br />
jsr sub_EC0DE(pc)<br />
moveq #0,d4<br />
move.b d0,d4<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d3<br />
andi.w #$F,d3<br />
addq.w #2,d3<br />
andi.w #$F0,d0<br />
lsl.w #4,d0<br />
add.w d0,d4<br />
addi.w #$12,d4<br />
andi.w #$FFF,d4<br />
move.w d5,d0<br />
andi.w #$F000,d0<br />
add.w d0,d4<br />
cmp.w d4,d5<br />
bhs.s loc_EC0CC<br />
subi.w #$1000,d4<br />
bcc.s loc_EC0CC<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b #0,(a5)+<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC0CC:<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b (a4,d4.w),(a5)+<br />
addq.w #1,d4<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; End of function DecompressSoundDriver<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_EC0DE:<br />
move.b (a6)+,d0<br />
subq.w #1,d7<br />
bne.s +<br />
addq.w #4,sp<br />
+<br />
rts<br />
; End of function sub_EC0DE<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; S2 sound driver (Sound driver compression (slightly modified Saxman))<br />
; ---------------------------------------------------------------------------<br />
; loc_EC0E8:<br />
Snd_Driver:<br />
save<br />
include "s2.sounddriver.asm" ; CPU Z80<br />
restore<br />
padding off<br />
!org (Snd_Driver+Size_of_Snd_driver_guess) ; don't worry; I know what I'm doing<br />
<br />
<br />
; loc_ED04C:<br />
Snd_Driver_End:<br />
<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ---------------------------------------------------------------------------<br />
; the DAC data has to line up with the end of the bank.<br />
<br />
; actually it only has to fit within one bank, but we'll line it up to the end anyway<br />
; because the padding gives the sound driver some room to grow<br />
cnop -Size_of_DAC_samples, $8000<br />
<br />
; ---------------------------------------------------------------------------<br />
; DAC samples<br />
; ---------------------------------------------------------------------------<br />
; loc_ED100:<br />
SndDAC_Start:<br />
<br />
SndDAC_Sample1:<br />
BINCLUDE "sound/DAC/Sample 1.bin"<br />
SndDAC_Sample1_End<br />
<br />
SndDAC_Sample2:<br />
BINCLUDE "sound/DAC/Sample 2.bin"<br />
SndDAC_Sample2_End<br />
<br />
SndDAC_Sample5:<br />
BINCLUDE "sound/DAC/Sample 5.bin"<br />
SndDAC_Sample5_End<br />
<br />
SndDAC_Sample6:<br />
BINCLUDE "sound/DAC/Sample 6.bin"<br />
SndDAC_Sample6_End<br />
<br />
SndDAC_Sample3:<br />
BINCLUDE "sound/DAC/Sample 3.bin"<br />
SndDAC_Sample3_End<br />
<br />
SndDAC_Sample4:<br />
BINCLUDE "sound/DAC/Sample 4.bin"<br />
SndDAC_Sample4_End<br />
<br />
SndDAC_Sample7:<br />
BINCLUDE "sound/DAC/Sample 7.bin"<br />
SndDAC_Sample7_End<br />
<br />
SndDAC_End<br />
<br />
if SndDAC_End - SndDAC_Start > $8000<br />
fatal "DAC samples must fit within $8000 bytes, but you have $\{SndDAC_End-SndDAC_Start } bytes of DAC samples."<br />
endif<br />
if SndDAC_End - SndDAC_Start > Size_of_DAC_samples<br />
fatal "Size_of_DAC_samples = $\{Size_of_DAC_samples}, but you have $\{SndDAC_End-SndDAC_Start} bytes of DAC samples."<br />
endif<br />
<br />
; ---------------------------------------------------------------------------<br />
; Music pointers<br />
; ---------------------------------------------------------------------------<br />
align $8000<br />
<br />
; loc_F0000:<br />
MusicPoint1:<br />
MusPtr_Continue: rom_ptr_z80 Mus_Continue-MusicPoint2<br />
<br />
<br />
Mus_Continue: BINCLUDE "sound/music/Continue.bin"<br />
<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ----------------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ----------------------------------------------------------------------------------<br />
; the PCM data has to line up with the end of the bank.<br />
cnop -Size_of_SEGA_sound, $8000<br />
<br />
; -------------------------------------------------------------------------------<br />
; Sega Intro Sound<br />
; 8-bit unsigned raw audio at 16Khz<br />
; -------------------------------------------------------------------------------<br />
; loc_F1E8C:<br />
Snd_Sega: BINCLUDE "sound/PCM/SEGA.bin"<br />
Snd_Sega_End:<br />
<br />
if Snd_Sega_End - Snd_Sega > $8000<br />
fatal "Sega sound must fit within $8000 bytes, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
if Snd_Sega_End - Snd_Sega > Size_of_SEGA_sound<br />
fatal "Size_of_SEGA_sound = $\{Size_of_SEGA_sound}, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
<br />
; ------------------------------------------------------------------------------<br />
; Music pointers<br />
; ------------------------------------------------------------------------------<br />
align $8000<br />
soundBankStart := *<br />
<br />
; loc_F8000:<br />
MusicPoint2:<br />
MusPtr_CNZ_2P: rom_ptr_z80 Mus_CNZ_2P<br />
MusPtr_EHZ: rom_ptr_z80 Mus_EHZ<br />
MusPtr_MTZ: rom_ptr_z80 Mus_MTZ<br />
MusPtr_CNZ: rom_ptr_z80 Mus_CNZ<br />
MusPtr_MCZ: rom_ptr_z80 Mus_MCZ<br />
MusPtr_MCZ_2P: rom_ptr_z80 Mus_MCZ_2P<br />
MusPtr_ARZ: rom_ptr_z80 Mus_ARZ<br />
MusPtr_DEZ: rom_ptr_z80 Mus_DEZ<br />
MusPtr_SpecStage: rom_ptr_z80 Mus_SpecStage<br />
MusPtr_Options: rom_ptr_z80 Mus_Options<br />
MusPtr_Ending: rom_ptr_z80 Mus_Ending<br />
MusPtr_EndBoss: rom_ptr_z80 Mus_EndBoss<br />
MusPtr_CPZ: rom_ptr_z80 Mus_CPZ<br />
MusPtr_Boss: rom_ptr_z80 Mus_Boss<br />
MusPtr_SCZ: rom_ptr_z80 Mus_SCZ<br />
MusPtr_OOZ: rom_ptr_z80 Mus_OOZ<br />
MusPtr_WFZ: rom_ptr_z80 Mus_WFZ<br />
MusPtr_EHZ_2P: rom_ptr_z80 Mus_EHZ_2P<br />
MusPtr_2PResult: rom_ptr_z80 Mus_2PResult<br />
MusPtr_SuperSonic: rom_ptr_z80 Mus_SuperSonic<br />
MusPtr_HTZ: rom_ptr_z80 Mus_HTZ<br />
MusPtr_ExtraLife: rom_ptr_z80 Mus_ExtraLife<br />
MusPtr_Title: rom_ptr_z80 Mus_Title<br />
MusPtr_EndLevel: rom_ptr_z80 Mus_EndLevel<br />
MusPtr_GameOver: rom_ptr_z80 Mus_GameOver<br />
MusPtr_Invincible: rom_ptr_z80 Mus_Invincible<br />
MusPtr_Emerald: rom_ptr_z80 Mus_Emerald<br />
MusPtr_HPZ: rom_ptr_z80 Mus_HPZ<br />
MusPtr_Drowning: rom_ptr_z80 Mus_Drowning<br />
MusPtr_Credits: rom_ptr_z80 Mus_Credits<br />
<br />
; loc_F803C:<br />
Mus_HPZ: BINCLUDE "sound/music/HPZ.bin"<br />
Mus_Drowning: BINCLUDE "sound/music/Drowning.bin"<br />
Mus_Invincible: BINCLUDE "sound/music/Invincible.bin"<br />
Mus_CNZ_2P: BINCLUDE "sound/music/CNZ_2p.bin"<br />
Mus_EHZ: BINCLUDE "sound/music/EHZ.bin"<br />
Mus_MTZ: BINCLUDE "sound/music/MTZ.bin"<br />
Mus_CNZ: BINCLUDE "sound/music/CNZ.bin"<br />
Mus_MCZ: BINCLUDE "sound/music/MCZ.bin"<br />
Mus_MCZ_2P: BINCLUDE "sound/music/MCZ_2p.bin"<br />
Mus_ARZ: BINCLUDE "sound/music/ARZ.bin"<br />
Mus_DEZ: BINCLUDE "sound/music/DEZ.bin"<br />
Mus_SpecStage: BINCLUDE "sound/music/SpecStg.bin"<br />
Mus_Options: BINCLUDE "sound/music/Options.bin"<br />
Mus_Ending: BINCLUDE "sound/music/Ending.bin"<br />
Mus_EndBoss: BINCLUDE "sound/music/End_Boss.bin"<br />
Mus_CPZ: BINCLUDE "sound/music/CPZ.bin"<br />
Mus_Boss: BINCLUDE "sound/music/Boss.bin"<br />
Mus_SCZ: BINCLUDE "sound/music/SCZ.bin"<br />
Mus_OOZ: BINCLUDE "sound/music/OOZ.bin"<br />
Mus_WFZ: BINCLUDE "sound/music/WFZ.bin"<br />
Mus_EHZ_2P: BINCLUDE "sound/music/EHZ_2p.bin"<br />
Mus_2PResult: BINCLUDE "sound/music/2player results screen.bin"<br />
Mus_SuperSonic: BINCLUDE "sound/music/Supersonic.bin"<br />
Mus_HTZ: BINCLUDE "sound/music/HTZ.bin"<br />
Mus_Title: BINCLUDE "sound/music/Title screen.bin"<br />
Mus_EndLevel: BINCLUDE "sound/music/End of level.bin"<br />
<br />
; The following act mostly like sound effects<br />
; despite being listed with the music.<br />
; This means they're uncompressed format with absolute pointers<br />
; instead of compressed with relative pointers.<br />
; Because they have absolute pointers,<br />
; they have to be assembled rather than BINCLUDE'd.<br />
; See below (right before Sound20) for other notes<br />
; about the sound format that apply to these too.<br />
<br />
;Mus_ExtraLife: BINCLUDE "sound/music/Extra life.bin"<br />
Mus_ExtraLife: dc.w z80_ptr(Mus_EL_Voices),$0603,$02CD<br />
dc.w z80_ptr(Mus_EL_DAC),$0000<br />
dc.w z80_ptr(Mus_EL_FM1),$E810<br />
dc.w z80_ptr(Mus_EL_FM2),$E810<br />
dc.w z80_ptr(Mus_EL_FM3),$E810<br />
dc.w z80_ptr(Mus_EL_FM4),$E810<br />
dc.w z80_ptr(Mus_EL_FM5),$E810<br />
dc.w z80_ptr(Mus_EL_PSG1),$D008,$0005<br />
dc.w z80_ptr(Mus_EL_PSG2),$DC08,$0005<br />
dc.w z80_ptr(Mus_EL_PSG3),$DC00,$0004<br />
Mus_EL_FM4: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM1: dc.b $E0,$80<br />
+ dc.b $EF,$00,$E8,$06,$D9,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$DB,$09,$D7,$D6,$06,$D9,$18,$F2<br />
Mus_EL_FM2: dc.b $EF,$01,$E8,$06,$E2,$01,$D6,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$D7,$09,$D4,$D2,$06,$D6,$18,$E2,$01,$F2<br />
Mus_EL_FM5: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM3: dc.b $E0,$80<br />
+ dc.b $EF,$02,$BA,$0C,$80,$06,$BA,$B8,$80,$03<br />
dc.b $B8,$06,$80,$03,$B8,$06,$BA,$18,$F2<br />
Mus_EL_PSG1: dc.b $E8,$06,$D6,$06,$03,$03,$06,$06,$E8,$00,$D7,$09<br />
dc.b $D4,$D2,$06,$D6,$18<br />
Mus_EL_PSG2:<br />
Mus_EL_PSG3: dc.b $F2<br />
Mus_EL_DAC: dc.b $88,$12,$06,$8B,$09,$09,$06,$88,$06,$8A,$88,$8A<br />
dc.b $88,$0C,$E4<br />
Mus_EL_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
<br />
<br />
;Mus_GameOver: BINCLUDE "sound/music/Game over.bin"<br />
Mus_GameOver: dc.w z80_ptr(MusGO_Voices),$0603,$02F2<br />
dc.w z80_ptr(MusGOver_DAC),$0000<br />
dc.w z80_ptr(MusGOver_FM1),$E80A<br />
dc.w z80_ptr(MusGOver_FM2),$F40F<br />
dc.w z80_ptr(MusGOver_FM3),$F40F<br />
dc.w z80_ptr(MusGOver_FM4),$F40D<br />
dc.w z80_ptr(MusGOver_FM5),$DC16<br />
dc.w z80_ptr(MusGOver_PSG),$D003,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC06,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC00,$0004<br />
MusGOver_FM1: dc.b $EF,$00<br />
dc.b $F0,$20,$01,$04,$05<br />
dc.b $80,$0C,$CA,$12,$80,$06,$CA,$80,$CB,$12,$C8,$1E<br />
dc.b $CA,$06,$80,$CA,$80,$CA,$80,$C6,$80,$C4,$12,$C8<br />
dc.b $0C,$80,$12,$C9,$04,$80,$C9,$C8,$06,$80,$C7,$80<br />
dc.b $C6,$80<br />
dc.b $F0,$28,$01,$18,$05<br />
dc.b $C5,$60,$F2<br />
MusGOver_FM2: dc.b $EF,$01,$80,$01,$D9,$06,$80,$D9,$80,$D6,$80,$D6<br />
dc.b $80,$D7,$15,$D7,$1B,$D9,$06,$80,$D9,$80,$D6,$80<br />
dc.b $D6,$80,$DC,$15,$DC,$1B,$F2<br />
MusGOver_FM3: dc.b $EF,$01,$D6,$0C,$D6,$D2,$D2,$D4,$15,$D4,$1B,$D6<br />
dc.b $0C,$D6,$D2,$D2,$D7,$15,$D7,$1B,$F2<br />
MusGOver_FM4: dc.b $EF,$02,$E2,$01,$AE,$06,$80,$AE,$80,$A9,$80,$A9<br />
dc.b $80,$AC,$15,$AB,$0C,$AC,$03,$AB,$0C,$AE,$06,$80<br />
dc.b $AE,$80,$A9,$80,$A9,$80,$B3,$15,$B2,$0C,$B3,$03<br />
dc.b $B2,$0C,$AE,$04,$80,$AE,$AD,$06,$80,$AC,$80,$AB<br />
dc.b $80,$AB,$60,$E2,$01,$F2<br />
MusGOver_FM5: dc.b $EF,$03,$80,$30,$D7,$12,$80,$03,$D7,$1B,$80,$30<br />
dc.b $DC,$12,$80,$03,$DC,$1B<br />
MusGOver_PSG: dc.b $F2<br />
MusGOver_DAC: dc.b $80,$18,$81<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(MusGOver_DAC)<br />
dc.b $F2<br />
MusGO_Voices: dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $3C,$33,$73,$30,$70,$94,$96,$9F,$9F,$12,$14,$00<br />
dc.b $0F,$04,$04,$0A,$0D,$2F,$4F,$0F,$2F,$33,$1A,$80,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$1C,$27,$28,$80<br />
dc.b $1F,$66,$53,$31,$22,$1C,$1F,$98,$1F,$12,$0F,$0F<br />
dc.b $0F,$00,$00,$00,$00,$FF,$0F,$0F,$0F,$8C,$8A,$8D,$8B<br />
<br />
;Mus_Emerald: BINCLUDE "sound/music/Got an emerald.bin"<br />
Mus_Emerald: dc.w z80_ptr(MusEmrldVoices),$0703,$01D5<br />
dc.w z80_ptr(MusEmeraldDAC),$0000<br />
dc.w z80_ptr(MusEmeraldFM1),$F408<br />
dc.w z80_ptr(MusEmeraldFM2),$F408<br />
dc.w z80_ptr(MusEmeraldFM3),$F407<br />
dc.w z80_ptr(MusEmeraldFM4),$F416<br />
dc.w z80_ptr(MusEmeraldFM5),$F416<br />
dc.w z80_ptr(MusEmeraldFM6),$F416<br />
dc.w z80_ptr(MusEmeraldPSG1),$F402,$0004<br />
dc.w z80_ptr(MusEmeraldPSG2),$F402,$0005<br />
dc.w z80_ptr(MusEmeraldPSG3),$F400,$0004<br />
MusEmeraldFM3: dc.b $E1,$02<br />
MusEmeraldFM1: dc.b $EF,$00,$C1,$06,$C4,$C9,$CD,$0C,$C9,$D0,$2A,$F2<br />
MusEmeraldFM2: dc.b $EF,$00,$BD,$06,$C1,$C4,$C9,$0C,$C6,$CB,$2A,$F2<br />
MusEmeraldFM4: dc.b $EF,$01,$C1,$0C,$C1,$06,$C4,$06,$80,$C4,$80,$C9<br />
dc.b $2A,$F2<br />
MusEmeraldFM5: dc.b $EF,$01,$C9,$0C,$C9,$06,$CD,$06,$80,$CD,$80,$D0<br />
dc.b $2A,$F2<br />
MusEmeraldFM6: dc.b $EF,$01,$C4,$0C,$C4,$06,$C9,$06,$80,$C9,$80,$CD<br />
dc.b $2A,$F2<br />
MusEmeraldPSG2: dc.b $80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusEmeraldPSG1: dc.b $E2,$01,$80,$02,$80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
MusEmeraldPSG3:<br />
MusEmeraldDAC: dc.b $E2,$01,$F2<br />
MusEmrldVoices: dc.b $04,$35,$54,$72,$46,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$1D,$14,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$07,$07,$1A,$16,$80,$80<br />
<br />
;Mus_Credits: BINCLUDE "sound/music/Credits.bin"<br />
Mus_Credits: dc.w z80_ptr(MusCred_Voices),$0603,$01F0<br />
dc.w z80_ptr(MusCred_DAC),$0000<br />
dc.w z80_ptr(MusCred_FM1),$000E<br />
dc.w z80_ptr(MusCred_FM2),$180A<br />
dc.w z80_ptr(MusCred_FM3),$0014<br />
dc.w z80_ptr(MusCred_FM4),$0016<br />
dc.w z80_ptr(MusCred_FM5),$0C16<br />
dc.w z80_ptr(MusCred_PSG1),$E806,$000B<br />
dc.w z80_ptr(MusCred_PSG2),$DC07,$000B<br />
dc.w z80_ptr(MusCred_PSG3),$0002,$0003<br />
MusCred_FM1: dc.b $E9,$F4,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$0C,$E6,$02<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$03,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $AE,$06,$A2,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $E6,$FD<br />
- dc.b $EF,$00,$B7,$06,$BA,$F8<br />
dc.w z80_ptr(MusCreditsDA13)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$06,$80,$80,$30,$80,$EF,$0B,$E9,$18,$E6,$02<br />
- dc.b $94,$0C,$8F,$92,$8F,$06,$94,$05,$94,$07,$06,$8F<br />
dc.b $0C,$92,$8F<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$30,$80,$EF,$0E,$E6,$FF,$E9,$E8,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$91,$94,$06,$80,$18,$96,$12,$9A,$06,$80<br />
dc.b $80,$12,$8F,$93,$08,$80,$16,$96,$06,$91,$92,$94<br />
dc.b $96,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$9D,$9A,$08,$80,$16,$96,$12,$9D,$08,$80<br />
dc.b $04,$EF,$12<br />
dc.b $F0,$18,$01,$0A,$04<br />
dc.b $80,$30,$80,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$24,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$EF,$01,$E9,$F4,$E6,$FA,$F4<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $80,$03,$80,$60,$E6,$04,$E1,$01,$EF,$1B,$E6,$06<br />
dc.b $C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80,$EF<br />
dc.b $1C,$E6,$FA,$E8,$00,$BC,$0C,$12,$06,$EF,$1B,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$80,$E8,$06,$C4,$06,$06,$C6,$C4,$E8<br />
dc.b $00,$C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80<br />
dc.b $E8,$00,$EF,$1C,$E6,$FA,$C1,$C4,$C1,$EF,$1A,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$06,$80,$80,$24,$80,$30,$80,$EF,$1F<br />
dc.b $E9,$18,$E6,$F7,$E1,$00,$80,$06,$AC,$AE,$80,$B1<br />
dc.b $80,$B3,$80,$B4,$80,$B3,$80,$B1,$B3,$80,$B1,$E9<br />
dc.b $F4,$EF,$00,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC<br />
dc.b $06,$AE,$B1,$80,$B4,$B1,$80,$B1,$E9,$0C,$EF,$1F<br />
dc.b $80,$06,$B8,$12,$B4,$06,$80,$B3,$80,$B4,$80,$B3<br />
dc.b $80,$B1,$AE,$80,$B1,$E9,$F4,$EF,$00,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$30,$80,$EF,$21,$E9,$0C,$80,$30,$80<br />
dc.b $08,$A0,$04,$9E,$0C,$9D,$9B,$99,$08,$04,$91,$0C<br />
dc.b $92,$93,$94,$98,$99,$9B,$9D,$98,$95,$93,$91,$98<br />
dc.b $9D,$91,$96,$98,$99,$98,$96,$99,$9D,$96,$95,$97<br />
dc.b $99,$97,$95,$96,$97,$98,$99,$98,$99,$9B,$9D,$08<br />
dc.b $04,$98,$0C,$91,$95,$96,$98,$99,$9D,$9E,$08,$96<br />
dc.b $10,$97,$0C,$98,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$08,$99,$04,$EF,$23,$E9,$E8,$E6,$07,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $80,$60,$E6,$FB,$80,$0C,$CD,$06,$80,$D4,$CD,$06<br />
dc.b $80,$0C,$CD,$06,$80,$D4,$CD,$06,$80,$18,$E6,$05<br />
dc.b $80,$0C,$AE,$80,$AE,$80,$24,$E1,$02,$E6,$08,$A2<br />
dc.b $6C,$F2<br />
MusCreditsD9D1: dc.b $A5,$0C,$B1,$06,$80,$B1,$0C,$AC,$B3,$12,$B1,$0C<br />
dc.b $AC,$06,$AE,$B1,$A7,$0C,$B3,$06,$80,$B3,$0C,$AE<br />
dc.b $B5,$12,$B3,$06,$80,$AE,$B0,$B3,$A3,$0C,$AF,$06<br />
dc.b $80,$AF,$0C,$AA,$B1,$12,$AF,$0C,$AA,$06,$AC,$AF<br />
dc.b $A2,$0C,$AE,$06,$A2,$A4,$0C,$B0,$06,$A4,$A5,$0C<br />
dc.b $B1,$06,$A5,$A2,$0C,$E3<br />
MusCreditsDA13: dc.b $BE,$0C,$BC,$06,$BA,$BC,$BA,$04,$E7,$08,$BA,$04<br />
dc.b $80,$0E,$EF,$07,$B7,$06,$B2,$B5,$B7,$EF,$00,$B7<br />
dc.b $BA,$BE,$0C,$BC,$06,$BA,$BC,$BA,$0C,$BC,$04,$80<br />
dc.b $08,$BA,$04,$80,$08,$BC,$04,$80,$08,$BE,$12,$BA<br />
dc.b $06,$B7,$80,$B7,$80,$24,$EF,$07,$B7,$06,$B2,$B5<br />
dc.b $B7,$80,$0C,$80,$30,$BE,$06,$BE,$BA,$04,$80,$08<br />
dc.b $BC,$06,$BE,$E3<br />
MusCreditsDA5F: dc.b $C3,$01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$02,$C3<br />
dc.b $01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01<br />
dc.b $E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$FC,$C3,$01,$E7<br />
dc.b $C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01,$E7,$C4<br />
dc.b $E7,$C5,$E7,$C6,$2D,$E7,$30,$E7,$30,$E3<br />
MusCreditsDA99: dc.b $A7,$0C,$B3,$06,$80,$B1,$80,$B3,$0C,$A7,$03,$80<br />
dc.b $06,$A7,$03,$B3,$0C,$B1,$B3,$09,$AE,$03,$AC,$06<br />
dc.b $80,$AC,$0C,$AE,$06,$80,$AE,$0C,$AF,$06,$80,$27<br />
dc.b $E3<br />
MusCreditsDABE: dc.b $80,$0C,$CA,$15,$80,$03,$CA,$06,$80,$CB,$0F,$80<br />
dc.b $03,$C8,$18,$80,$06,$CA,$80,$CA,$80,$CA,$80,$C6<br />
dc.b $80,$C4,$0F,$80,$03,$C8,$18,$80,$06<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E3<br />
MusCreditsDAE5: dc.b $80,$12,$94,$97,$06,$80,$18,$99,$12,$94,$06,$80<br />
dc.b $80,$12,$92,$96,$06,$80,$18,$97,$12,$92,$06,$80<br />
dc.b $E3<br />
MusCreditsDAFE: dc.b $80,$99,$80,$99,$80,$9E,$80,$E3<br />
MusCreditsDB06: dc.b $EF,$07,$80,$54,$C7,$04,$C8,$C9,$CA,$24,$CD,$D2<br />
dc.b $18,$D0,$24,$CF,$CB,$18,$CB,$0C,$CA,$80,$CD,$60<br />
dc.b $E7,$3C,$CA,$24,$CD,$D2,$18,$D4,$24,$D0,$D4,$18<br />
dc.b $D4,$24,$D6,$60,$E7,$3C,$E3<br />
MusCred_FM2: dc.b $80,$60,$EF,$01,$E8,$06,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $85,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8A,$87,$88,$89,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $88<br />
dc.b $F7,$00,$0B<br />
dc.w z80_ptr(-)<br />
- dc.b $8A<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$E6,$FC,$8A,$8B,$8C,$E6,$04,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$8D,$8A,$8B,$8C,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8D,$06,$99,$E8,$00,$8A,$0C,$8B,$8C,$E9,$E8,$E6<br />
dc.b $0C,$EF,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E6,$F9,$EF,$08<br />
MusCreditsDB93: dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $06,$9C,$12,$9D,$0C,$9E,$F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9D,$04,$80,$08,$9D,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $9C,$04,$80,$08,$9C,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(MusCreditsDB93)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$13,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$60,$EF,$0F,$E6,$F3<br />
dc.b $F0,$04,$02,$03,$02<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$30,$E7,$18,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$EF,$13,$E6,$F5,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$0C,$A9,$08,$A1,$10,$F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$08,$A9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E1,$02,$E9,$F4,$E6,$0A,$F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$EF,$1B,$E1,$00<br />
dc.b $E8,$06,$80,$3C,$B8,$06,$06,$BA,$BD,$BD,$BA,$EF<br />
dc.b $1D,$E6,$FA,$E8,$00,$F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $EF,$1C,$BD,$EF,$1D,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $80,$30,$80,$EF,$01,$E9,$18,$E6,$F9<br />
- dc.b $99,$0C,$A5,$06,$80,$96,$0C,$A2,$06,$80,$97,$0C<br />
dc.b $A3,$06,$80,$98,$0C,$A8,$06,$A7,$99,$06,$99,$12<br />
dc.b $96,$0C,$A2,$06,$80,$97,$0C,$A3,$06,$80,$98,$0C<br />
dc.b $A4,$06,$80<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$22,$E9,$E8,$E6,$03<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$AC,$04,$AE,$08,$B1,$04,$B5,$30,$80,$0C<br />
dc.b $B5,$08,$80,$04,$B6,$08,$B5,$10,$B9,$08,$04,$80<br />
dc.b $08,$B5,$34,$80,$0C,$B5,$BA,$08,$04,$80,$08,$B5<br />
dc.b $04,$B1,$24,$80,$0C,$B1,$08,$80,$04,$B3,$08,$B1<br />
dc.b $04,$B4,$0C,$B3,$08,$B1,$4C,$80,$0C,$B5,$08,$80<br />
dc.b $04,$B6,$08,$80,$04,$B5,$08,$80,$04,$B9,$08,$04<br />
dc.b $80,$08,$B5,$1C,$80,$0C,$BA,$18,$BC,$08,$BA,$04<br />
dc.b $BD,$18,$80,$0C,$BA,$04,$80,$08,$B8,$18,$B5,$B1<br />
dc.b $B3,$0C,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$0C,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$14,$B1,$04,$E6,$FF,$EF,$24,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $AC,$12,$AB,$0C,$AC,$06,$AB,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $B3,$12,$B2,$0C,$B3,$06,$B2,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $AC,$06,$80,$A9,$80,$AA,$80,$AB,$80,$AC,$AC,$A9<br />
dc.b $80,$AA,$80,$AC,$80,$A9,$80,$A9,$80,$AD,$80,$AD<br />
dc.b $80,$B0,$80,$B0,$80,$B3,$80,$B3,$80,$80,$0C,$A2<br />
dc.b $12,$80,$06,$A2,$12,$AD,$AE,$06,$80,$E6,$FD,$A2<br />
dc.b $6C,$F2<br />
MusCreditsDD59: dc.b $80,$0C,$C4,$06,$80,$C6,$80,$C4,$80,$C9,$80,$C9<br />
dc.b $80,$CB,$CD,$80,$0C,$80,$CB,$18,$C6,$06,$80,$C9<br />
dc.b $C9,$80,$CB,$0C,$80,$12,$80,$1E,$C7,$06,$C9,$C7<br />
dc.b $CB,$80,$C9,$80,$C7,$C9,$80,$C6,$E7,$C6,$30,$E7<br />
dc.b $18,$80,$18,$E3<br />
MusCreditsDD8D: dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
dc.b $06,$AB,$9F,$0C,$E3<br />
MusCreditsDD9D: dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$B6,$80,$18<br />
dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$30,$E7,$E3<br />
MusCreditsDDB5: dc.b $BF,$06,$BD,$BF,$12,$C2,$BF,$0C,$C1,$80,$06,$12<br />
dc.b $C4,$0C,$C2,$06,$80,$C9,$C6,$3C,$80,$06,$0C,$C7<br />
dc.b $12,$C6,$C4,$06,$C2,$C1,$18,$E3<br />
MusCreditsDDD5: dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$E3<br />
MusCreditsDDEA: dc.b $A2,$0C,$AE,$AC,$08,$AE,$04,$AC,$08,$A9,$04,$A7<br />
dc.b $08,$04,$E3<br />
MusCreditsDDF9: dc.b $80,$0C,$B1,$AE,$06,$06,$AC,$0C,$80,$B0,$AE,$06<br />
dc.b $06,$AC,$0C,$E3<br />
MusCreditsDE09: dc.b $AE,$AC,$06,$06,$AA,$0C,$80,$AC,$0C,$06,$06,$AE<br />
dc.b $AC,$E3<br />
MusCreditsDE17: dc.b $BA,$04,$80,$08,$B8,$18,$B5,$B1,$E3<br />
MusCreditsDE20: dc.b $AE,$06,$80,$AE,$80,$A9,$80,$A9,$80,$E3<br />
MusCreditsDE2A: dc.b $8A,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $E3<br />
MusCred_FM3: dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$18,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $B8,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $BD,$3C,$E9,$E8,$E6,$02,$E1,$03,$EF,$04,$E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$09,$E9,$0C,$E6,$FD,$E0,$40<br />
dc.b $F0,$06,$01,$05,$04<br />
dc.b $E1,$00<br />
- dc.b $9F,$0C,$AB,$06,$80,$A9,$80,$AB,$9F,$80,$9F,$AB<br />
dc.b $80,$A9,$80,$AB,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $9D,$0C,$A9,$06,$80,$A8,$80,$A9,$9C,$80,$9C,$A8<br />
dc.b $80,$A6,$80,$A8,$0C<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0D,$E6,$FB,$E0,$C0,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0F,$E0,$80,$E6,$0B,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$48,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$0C<br />
dc.b $F0,$18,$01,$03,$04<br />
dc.b $E6,$F3,$E0,$C0,$EF,$14,$A2,$14,$A4,$04,$A5,$04<br />
dc.b $80,$08,$A9,$04,$80,$08,$A8,$04,$80,$08,$A9,$04<br />
dc.b $80,$08,$AC,$08,$A9,$10<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$18,$E9,$F4,$E6,$08,$F4,$E0,$40,$80,$60,$80<br />
dc.b $30,$C6,$06,$80,$C2,$0C,$C4,$09,$C2,$03,$BF,$0C<br />
dc.b $80,$60,$80,$3C,$80,$60,$EF,$1B,$E6,$FB,$E0,$C0<br />
dc.b $E8,$06,$C4,$06,$06,$C6,$C9,$C9,$C6,$E8,$00,$CD<br />
dc.b $0C,$E8,$06,$C9,$06,$C6,$C9,$0C,$80,$80,$12,$EF<br />
dc.b $1C,$E8,$00,$BD,$BA,$0C,$E8,$06,$EF,$1B,$CE,$06<br />
dc.b $CE,$80,$CE,$80,$CE,$E8,$00,$CF,$0C,$D0,$80,$E8<br />
dc.b $06,$D0,$06,$06,$D2,$D0,$E8,$00,$CD,$0C,$E8,$06<br />
dc.b $C9,$06,$C6,$C9,$0C,$E8,$00,$EF,$1C,$80,$1E,$C2<br />
dc.b $0C,$C2,$BD,$06,$80,$60,$80,$60,$EF,$00,$E9,$18<br />
dc.b $80,$60,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC,$06<br />
dc.b $AE,$B1,$80,$B4,$B1,$80,$B1,$80,$60,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$60,$EF,$22,$E9,$DC,$E6,$FF,$E0,$80<br />
dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $CD,$30,$CB,$18,$CD,$0C,$CB,$C9,$30,$CE,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$FC,$80,$C4,$80,$C4,$80,$C6,$18,$08,$C4,$04<br />
dc.b $E9,$0C,$E6,$FF,$E0,$C0,$EF,$00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $CB,$12,$CB,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $D0,$12,$D0,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$CB,$12,$80,$06,$CB,$80,$CA,$12,$CB,$CA<br />
dc.b $0C,$C5,$18,$C8,$CB,$D1,$80,$0C,$CD,$80,$CD,$12<br />
dc.b $CC,$CD,$06,$80,$E6,$F8,$EF,$01,$E1,$03,$A2,$6C<br />
dc.b $F2<br />
MusCreditsDFF2: dc.b $80,$60,$BC,$06,$BD,$BC,$B8,$BA,$B6,$0C,$B8,$B3<br />
dc.b $B3,$06,$B6,$0C,$B8,$E3<br />
MusCreditsE004: dc.b $80,$0C,$CD,$04,$80,$10,$CD,$04,$80,$0C,$CD,$0C<br />
dc.b $CE,$08,$CD,$04,$80,$18,$80,$0C,$CB,$04,$80,$10<br />
dc.b $CB,$04,$80,$0C,$CB,$0C,$CD,$08,$CB,$04,$80,$18<br />
- dc.b $80,$0C,$C9,$04,$80,$10,$C9,$04,$80,$0C,$C9,$0C<br />
dc.b $CB,$08,$C9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E3<br />
MusCreditsE040: dc.b $80,$18,$B8,$0B,$80,$0D,$BA,$0C,$0B,$80,$19,$BD<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE051: dc.b $80,$0C,$C4,$80,$C4,$80,$C6,$80,$C6,$E3<br />
MusCreditsE05B: dc.b $CD,$06,$80,$CD,$80,$CA,$80,$CA,$80,$E3<br />
MusCreditsE065: dc.b $EF,$05,$E9,$F4,$C6,$60,$CB,$CD,$E7,$CD,$C6,$60<br />
dc.b $D0,$D0,$24,$D2,$60,$E7,$3C,$E3<br />
MusCred_FM4: dc.b $80,$60,$E9,$FB,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$1D,$E6,$02,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B5,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B8,$3C,$E6,$06,$EF,$05<br />
dc.b $F0,$02,$01,$FE,$04<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E9,$F4,$E6,$F7<br />
dc.b $F0,$0C,$01,$FB,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$25,$C3,$06,$C3,$80,$0C,$C3,$06,$C3,$05,$80<br />
dc.b $0D,$C3,$06,$C5,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$05,$F4,$E1,$02,$E0<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$0C,$80,$60,$EF,$10,$E6,$F7,$E1,$00,$E0<br />
dc.b $40,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $B3,$B7,$06,$AE,$0C,$B1,$B3,$B7,$06,$80,$B7,$AE<br />
dc.b $0C,$B1,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $EF,$15,$E6,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
- dc.b $EF,$14,$80,$4E,$E0,$40,$A1,$12,$A2,$06,$E0,$C0<br />
dc.b $EF,$16,$80,$30,$80,$06,$BA,$08,$B9,$04,$B8,$08<br />
dc.b $B7,$04,$B6,$08,$B5,$04<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E9,$F4,$E6,$02,$E0,$C0<br />
dc.b $F0,$01,$01,$03,$03<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$1E,$E0,$40,$E6,$FE,$E9,$F4,$F4,$E8<br />
dc.b $06,$80,$0C,$C1,$06,$12,$18,$C4,$06,$12,$0C,$EF<br />
dc.b $1C,$E0,$C0,$E6,$FA,$E8,$00,$C6,$E8,$06,$E6,$06<br />
dc.b $EF,$1E,$E0,$40,$C2,$06,$12,$18,$C4,$06,$12,$18<br />
dc.b $C1,$06,$12,$18,$C4,$06,$12,$0C,$EF,$1A,$E0,$C0<br />
dc.b $E9,$0C,$C6,$06,$C6,$80,$C6,$80,$C6,$E8,$00,$C7<br />
dc.b $0C,$C8,$06,$EF,$1E,$E0,$40,$E9,$F4,$E8,$06,$80<br />
dc.b $C4,$06,$12,$0C,$80,$60,$EF,$20,$E9,$18,$E6,$FA<br />
dc.b $E0,$C0,$E8,$00,$B4,$03,$E7,$B6,$5D,$B3,$03,$E7<br />
dc.b $B5,$5D,$B1,$03,$E7,$B3,$5D,$B3,$03,$E7,$B5,$5D<br />
dc.b $80,$60,$EF,$22,$E0,$40,$E9,$E8,$E6,$04,$80,$30<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $C9,$30,$C8,$18,$C9,$0C,$C8,$C6,$30,$C9,$80,$0C<br />
dc.b $C1,$80,$C1,$80,$C2,$80,$C2,$E6,$04,$80,$C1,$80<br />
dc.b $C1,$80,$C2,$80,$C2,$E6,$FC,$80,$C1,$80,$C1,$80<br />
dc.b $C2,$18,$08,$C1,$04,$E9,$0C,$E6,$FF,$E0,$C0,$EF<br />
dc.b $00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $C8,$12,$C8,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $CB,$12,$CB,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E1,$03,$E6,$08,$F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $E6,$F0,$EF,$01<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $A2,$6C,$F2<br />
MusCreditsE22D: dc.b $A2,$14,$A4,$04,$A5,$04,$80,$08,$A9,$04,$80,$08<br />
dc.b $A8,$04,$80,$08,$A9,$04,$80,$08,$AC,$08,$A9,$10<br />
dc.b $E3<br />
MusCreditsE246: dc.b $80,$0C<br />
dc.b $C9,$04,$80,$10<br />
dc.b $C9,$04,$80,$0C<br />
dc.b $C9,$0C<br />
dc.b $CB,$08<br />
dc.b $C9,$04,$80,$18,$80,$0C<br />
dc.b $C8,$04,$80,$10<br />
dc.b $C8,$04,$80,$0C<br />
dc.b $C8,$0C<br />
dc.b $C9,$08<br />
dc.b $C8,$04,$80,$18,$80,$0C<br />
<br />
if 1==1<br />
; this part of the original credits music (CNZ PSG) sounds buggy (dissonant)<br />
dc.b $C6,$04,$80,$10<br />
dc.b $C6,$04,$80,$0C<br />
dc.b $C6,$0C<br />
dc.b $C8,$08<br />
dc.b $C6,$04,$80,$18,$80,$0C<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $C7,$08<br />
else<br />
; replace the above block of notes with this to fix it.<br />
; (I'm not sure why, but the notes $C6 and $C7 are broken here,<br />
; so I've replaced them with pitch-shifted $C8s)<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$10 ; $C6<br />
dc.b $C8,$04,$80,$0C ; $C6<br />
dc.b $C8,$0C ; $C6<br />
dc.b $E1,0<br />
dc.b $C8,$08<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$24 ; $C6<br />
dc.b $E1,0<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $E1,-32<br />
dc.b $C8,$08 ; $C7<br />
dc.b $E1,0<br />
endif<br />
<br />
dc.b $C5,$04,$80,$18<br />
dc.b $E3<br />
MusCreditsE28F: dc.b $EF,$25,$80,$0C,$D0,$D4,$D7,$DB,$0C,$80,$06,$DB<br />
dc.b $0C,$DC,$06,$DB,$0C,$DD,$60,$DE,$0C,$80,$DE,$80<br />
dc.b $80,$06,$DD,$12,$DE,$0C,$E3<br />
MusCreditsE2AE: dc.b $80,$18,$B5,$0B,$80,$0D,$B7,$0C,$0B,$80,$19,$BA<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE2BF: dc.b $C3,$05,$80,$13,$C3,$12,$C3,$05,$E3<br />
MusCreditsE2C8: dc.b $CA,$06,$80,$CA,$80,$C6,$80,$C6,$80,$E3<br />
MusCreditsE2D2: dc.b $AF,$0C,$B3,$06,$B6,$0C,$AF,$B1,$06,$80,$B1,$0C<br />
dc.b $B5,$06,$B8,$0C,$B1,$06,$80,$B6,$0C,$BA,$06,$B1<br />
dc.b $0C,$B5,$B6,$BA,$06,$80,$BA,$AF,$0C,$B3,$B5,$B8<br />
dc.b $06,$B2,$0C,$B3,$B5,$B8,$06,$80,$B8,$B2,$0C,$B5<br />
dc.b $E3<br />
MusCred_FM5: dc.b $E9,$E8,$E6,$F8,$E1,$05,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$18,$E6,$08,$E1,$00,$EF,$02<br />
dc.b $F0,$0C,$01,$FC,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B1,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B5,$3C,$E9,$F4,$E6,$07<br />
dc.b $F0,$30,$01,$04,$04<br />
dc.b $EF,$06<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E6,$F6<br />
dc.b $F0,$0C,$01,$05,$04<br />
dc.b $E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$25,$C6,$06,$C6,$80,$0C,$C6,$06,$C6,$05,$80<br />
dc.b $0D,$C6,$06,$C8,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$E6,$05,$F4,$80,$01,$EF,$0C,$E1<br />
dc.b $FE,$E0,$40,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $23,$80,$0C,$80,$60,$EF,$11,$E9,$F4,$E6,$F4,$E1<br />
dc.b $00,$E0,$C0<br />
dc.b $F0,$06,$01,$06,$05<br />
dc.b $80,$60,$80,$30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60<br />
dc.b $80,$06,$CB,$80,$CB,$C9,$80,$C9,$80,$C7,$80,$C7<br />
dc.b $80,$C6,$03,$80,$C6,$80,$09,$80,$06,$80,$60,$80<br />
dc.b $30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60,$EF,$16,$E9<br />
dc.b $0C,$E6,$04,$F4,$E0,$80,$80,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
dc.b $80,$2F,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$30,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$60,$EF,$19,$E9,$F4,$E0,$C0,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$27,$B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$2A,$80,$60,$EF,$1E,$E9,$F4,$E8,$06<br />
- dc.b $80,$0C,$C4,$06,$12,$18,$C8,$06,$12,$0C,$80,$C6<br />
dc.b $06,$12,$18,$C8,$06,$12,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$20,$E8,$00,$E9,$18,$E6,$FA,$B8,$03<br />
dc.b $E7,$BA,$5D,$B6,$03,$E7,$B8,$5D,$B4,$03,$E7,$B6<br />
dc.b $5D,$B6,$03,$E7,$B8,$5D,$80,$60,$EF,$22,$E9,$F4<br />
dc.b $E6,$05<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$A7,$04,$A9,$08,$AC,$04,$B1,$30,$80,$0C<br />
dc.b $B1,$08,$80,$04,$B3,$08,$B1,$10,$B5,$08,$B5,$04<br />
dc.b $80,$08,$B0,$34,$80,$0C,$B0,$B5,$08,$04,$80,$08<br />
dc.b $B1,$04,$AE,$24,$80,$0C,$AE,$08,$80,$04,$B0,$08<br />
dc.b $AE,$04,$B1,$0C,$AF,$08,$AD,$4C,$80,$0C,$B1,$08<br />
dc.b $80,$04,$B3,$08,$80,$04,$B1,$08,$80,$04,$B5,$08<br />
dc.b $B5,$04,$80,$08,$B0,$1C,$80,$0C,$B5,$18,$B8,$08<br />
dc.b $B5,$04,$BA,$18,$80,$0C,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$04,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$F8,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$AA,$14,$A9,$04,$E6,$0C,$EF,$23,$E1,$03<br />
dc.b $E6,$F7,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E6,$09<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $F2<br />
MusCreditsE4CD: dc.b $80,$1E,$EF,$14,$A4,$12,$A5,$06,$EF,$16,$80,$30<br />
dc.b $80,$06,$BD,$08,$BC,$04,$BB,$08,$BA,$04,$B9,$08<br />
dc.b $B8,$04,$E3<br />
MusCreditsE4E8: dc.b $80,$18,$B1,$0B,$80,$0D,$B3,$0C,$0B,$80,$19,$B6<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE4F9: dc.b $C6,$05,$80,$13,$C6,$12,$C6,$05,$E3<br />
MusCreditsE502: dc.b $80,$60,$AC,$06,$80,$AC,$0C,$AE,$06,$80,$AE,$0C<br />
dc.b $AF,$06,$E3<br />
MusCred_PSG1: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG1)<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$F4,$E6,$FE,$F5,$01,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $AE,$B3,$06,$AC,$0C,$AE,$AE,$B3,$06,$80,$B3,$AB<br />
dc.b $0C,$AE,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $F5,$0B,$80,$04,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$20,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$F5,$00,$E8,$06,$E9,$F4,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$80,$C2,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$04,$80,$C2,$80,$0C,$C2,$80,$60,$F5,$08,$E9<br />
dc.b $04,$EC,$02,$E8,$06<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F0,$EC,$FF,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $E9,$18,$EC,$02,$B5,$30,$B3,$18,$B5,$0C,$B3,$B1<br />
dc.b $30,$B6,$EC,$FE,$80,$0C,$B8,$80,$B8,$80,$BA,$80<br />
dc.b $BA,$EC,$03,$C4,$18,$C1,$BD,$BF,$0C,$80,$EC,$FC<br />
dc.b $80,$B8,$80,$B8,$80,$BA,$18,$08,$B8,$04,$E9,$F4<br />
dc.b $EC,$01,$F5,$05<br />
- dc.b $80,$60<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$C8,$12,$80,$06,$C8,$80,$C6,$12,$C8,$C6<br />
dc.b $0C,$C1,$18,$C5,$C8,$CB,$80,$0C,$CA,$80,$CA,$12<br />
dc.b $C9,$CA,$06,$80,$09,$E9,$30,$EC,$FC,$F6<br />
dc.w z80_ptr(MusCreditsE770)<br />
dc.b $F2<br />
MusCreditsE618: dc.b $80,$0C,$BD,$06,$12,$18,$C4,$06,$12,$0C,$80,$C2<br />
dc.b $06,$12,$18,$C4,$06,$12,$0C,$E3<br />
MusCreditsE62C: dc.b $80,$60,$80,$0C,$C2,$80,$C2,$80,$E3<br />
MusCreditsE635: dc.b $AC,$0C,$AF,$06,$B3,$0C,$AC,$AC,$06,$80,$AC,$0C<br />
dc.b $AF,$06,$B5,$0C,$AC,$06,$80,$06,$B1,$0C,$B6,$06<br />
dc.b $AE,$0C,$B1,$B3,$B6,$06,$80,$B6,$AA,$0C,$AF,$AF<br />
dc.b $B5,$06,$AC,$0C,$AF,$B2,$B5,$06,$80,$B5,$AE,$0C<br />
dc.b $B2,$E3<br />
MusCred_PSG2: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG2)<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$0C,$EC,$FD,$F5,$04,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
dc.b $F0,$03,$02,$01,$05<br />
dc.b $F5,$0A,$E9,$E8,$EC,$02,$80,$30,$80,$80,$BD,$06<br />
dc.b $BF,$C6,$C2,$1E,$80,$60,$80,$06,$C6,$80,$C6,$C4<br />
dc.b $80,$C4,$80,$C3,$80,$C3,$80,$BF,$03,$80,$BF,$80<br />
dc.b $09,$80,$06,$80,$30,$80,$80,$BD,$06,$BF,$C6,$C2<br />
dc.b $1E,$80,$60,$F4<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$00,$EC,$FE,$E8,$06,$80,$60,$80,$0C,$BF,$80<br />
dc.b $BF,$80,$BF,$80,$BF,$80,$60,$80,$0C,$BF,$80,$BF<br />
dc.b $80,$BF,$04,$80,$BF,$80,$0C,$BF,$80,$60,$EC,$02<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F4,$EC,$FF,$E9,$E8,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $E9,$18,$EC,$02,$B1,$30,$B0,$18,$B1,$0C,$B0,$AE<br />
dc.b $30,$B1,$EC,$FE,$80,$0C,$B5,$80,$B5,$80,$B6,$80<br />
dc.b $B6,$EC,$03,$80,$B1,$80,$B1,$80,$B1,$80,$B1,$EC<br />
dc.b $FC,$80,$B1,$80,$B1,$80,$B1,$18,$08,$B1,$04,$EC<br />
dc.b $01,$E9,$18,$F5,$05,$E1,$01,$80,$60,$80,$80,$80<br />
dc.b $80,$80,$80,$0C,$CD,$06,$80,$D4,$CD,$80,$0C,$CD<br />
dc.b $06,$80,$D4,$CD,$80,$18,$80,$54,$E9,$24,$EC,$FD<br />
MusCreditsE770: dc.b $F5,$03,$80,$06<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$FF<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$01<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusCred_PSG3: dc.b $F3,$E7,$80,$60,$F5,$02<br />
- dc.b $C6,$0C,$0C,$0C,$06,$06,$0C,$0C,$06,$06,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$1F<br />
dc.w z80_ptr(-)<br />
dc.b $0C,$F5,$03,$C6,$F5,$02<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $06,$06,$06,$06<br />
dc.b $F7,$01,$04<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$04,$EC,$02<br />
- dc.b $E8,$03,$C6,$06,$06,$E8,$00,$0C<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$02,$EC,$FD<br />
- dc.b $80,$0C,$C6,$06,$80,$07,$C6,$06,$80,$11,$C6,$0C<br />
dc.b $80,$06,$C6,$0C,$80,$06,$C6,$80<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$02<br />
- dc.b $C6,$0C,$08,$04<br />
dc.b $F7,$00,$18<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$0C,$0C,$08,$04<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$04,$EC,$02<br />
- dc.b $C6,$06,$06,$0C<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EC,$FF<br />
- dc.b $F5,$01,$C6,$0C,$F5,$02,$EC,$FF,$08,$F5,$01,$EC<br />
dc.b $01,$04<br />
dc.b $F7,$00,$27<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$FF,$F5,$04<br />
- dc.b $E8,$03,$C6,$0C,$E8,$0C,$0C<br />
dc.b $F7,$00,$1E<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$03,$C6,$06,$E8,$0E,$12,$E8,$03,$0C,$E8,$0F<br />
dc.b $0C,$F2<br />
MusCred_DAC: dc.b $82,$06,$82,$82,$82,$82,$0C,$06,$0C,$06,$0C,$0C<br />
dc.b $0C<br />
- dc.b $81,$18,$82<br />
dc.b $F7,$00,$0E<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C<br />
- dc.b $82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EA,$EA,$F8<br />
dc.w z80_ptr(MusCreditsEA6E)<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$82,$06,$82,$82,$82,$81,$0C,$82,$06,$82<br />
dc.b $81,$81,$82,$82,$82,$82<br />
- dc.b $81,$18,$82,$81,$82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$82,$82,$82,$06,$82,$8C,$8C,$8D,$8D<br />
dc.b $8E,$8E,$F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$18,$82,$0C,$81,$18,$82,$0C,$82,$82,$06,$82<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$0C,$82,$82,$82,$8D,$06,$8D,$8E,$8E,$82,$06<br />
dc.b $82,$8D,$0C,$82,$0C,$82,$06,$82,$80,$82,$82,$0C<br />
MusCreditsE8E5: dc.b $82,$0C,$82,$82,$06,$82,$8D,$8D<br />
- dc.b $81,$0C,$8F,$06,$90,$82,$0C,$90,$06,$91,$81,$0C<br />
dc.b $8F,$06,$91,$82,$0C,$8F,$06,$91<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$8F,$06,$91,$82,$0C,$8F,$06,$91,$8C,$06<br />
dc.b $03,$03,$8D,$06,$8D,$8D,$8E,$8E,$8E,$81,$06,$0C<br />
dc.b $82,$06,$80,$0C,$81,$82,$8E,$82,$06,$82,$82,$82<br />
- dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$12,$8C,$06<br />
dc.b $82,$0C,$83,$06,$81,$80<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$06,$82,$06<br />
dc.b $81,$0C,$06,$82,$0C,$08,$04,$EA,$CD,$82,$30,$82<br />
dc.b $0C,$82,$82,$82,$08,$04,$F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$04,$82,$08,$04<br />
dc.b $08,$04,$04,$04,$04,$08,$04,$EA,$C5<br />
- dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82,$0C,$06<br />
dc.b $06,$81,$0C,$82,$06,$82,$82,$82,$8D,$0C,$82,$0C<br />
dc.b $0C,$0C,$06,$06<br />
- dc.b $81,$0C,$81,$82,$80,$81,$81,$82,$83<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$82,$82,$82,$82,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $81,$06,$81,$82,$82,$81,$82,$81,$81,$82,$02,$82<br />
dc.b $04,$81,$0C,$06,$82,$0C,$06,$06,$81,$18,$82,$0C<br />
dc.b $81,$81,$18,$82,$81,$06,$81,$12,$82,$0C,$81,$81<br />
dc.b $18,$82,$81,$18,$82,$0C,$81,$81,$18,$82,$81,$06<br />
dc.b $81,$12,$82,$0C,$0C,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $82,$02,$04,$81,$0C,$06,$0C,$82,$02,$04,$81,$0C<br />
dc.b $06,$0C,$82,$06,$82,$82,$82,$EA,$C0,$81,$0C,$82<br />
dc.b $81,$82,$81,$82,$81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$0F<br />
dc.w z80_ptr(-)<br />
dc.b $81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$13<br />
dc.w z80_ptr(-)<br />
dc.b $82,$08,$0C,$04,$81,$0C,$82,$81,$82,$81,$0C,$82<br />
dc.b $81,$06,$80,$02,$82,$82,$82,$09,$82,$03<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$06,$80,$02,$82,$82,$82,$09,$82<br />
dc.b $03<br />
dc.b $F7,$01,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$82,$81,$06,$82,$12,$82,$0C,$81<br />
dc.b $F2<br />
MusCreditsEA6E: dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$83,$E3<br />
MusCreditsEA84: dc.b $81,$18,$82,$0C,$81,$18,$0C,$82,$81,$81,$18,$82<br />
dc.b $0C,$81,$12,$81,$82,$18,$81,$82,$0C,$81,$18,$0C<br />
dc.b $82,$81,$E3<br />
MusCreditsEA9F: dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$0C,$82,$04,$81<br />
dc.b $0C,$82,$81,$81,$08,$0C,$04,$82,$0C,$81,$08,$0C<br />
dc.b $82,$04,$81,$0C,$82,$82,$08,$04,$E3,$81,$06,$80<br />
dc.b $03,$81,$81,$06,$82,$81,$06,$80,$03,$81,$81,$06<br />
dc.b $82,$03,$82,$81,$06,$80,$03,$81,$81,$06,$82,$E3<br />
MusCred_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$01,$1F,$1F,$FF,$0F,$17,$27,$28,$80<br />
dc.b $08,$09,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$25,$0E,$30,$84<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$0B,$0D,$19,$0B,$80,$80<br />
dc.b $08,$0A,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$24,$13,$2D,$80<br />
dc.b $3D,$01,$51,$21,$01,$12,$14,$14,$0F,$0A,$05,$05<br />
dc.b $05,$00,$00,$00,$00,$2B,$2B,$2B,$1B,$19,$80,$80,$80<br />
dc.b $04,$57,$70,$02,$50,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$06,$00,$0A,$0A,$00,$00,$0F,$0F,$1A,$10,$80,$80<br />
dc.b $35,$01,$13,$01,$00,$1F,$18,$1D,$19,$00,$06,$09<br />
dc.b $0D,$00,$02,$00,$03,$00,$15,$06,$16,$1E,$83,$80,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1A,$16,$88,$88<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$14,$0F,$37,$80<br />
dc.b $3B,$0F,$01,$06,$02,$DF,$1F,$1F,$DF,$0C,$0A,$00<br />
dc.b $03,$0F,$00,$00,$01,$F3,$55,$05,$5C,$22,$22,$20,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1C,$14,$84,$80<br />
dc.b $3A,$69,$50,$70,$60,$1C,$1A,$18,$18,$10,$02,$0C<br />
dc.b $09,$08,$06,$06,$03,$F9,$06,$56,$06,$28,$14,$15,$00<br />
dc.b $3D,$00,$02,$01,$01,$4C,$50,$0F,$12,$0C,$00,$02<br />
dc.b $05,$01,$00,$00,$00,$28,$2A,$29,$19,$1A,$06,$00,$00<br />
dc.b $2C,$71,$31,$71,$31,$1F,$1F,$16,$16,$00,$00,$0F<br />
dc.b $0F,$00,$00,$0F,$0F,$00,$00,$FA,$FA,$15,$14,$00,$00<br />
dc.b $18,$37,$31,$32,$31,$9E,$1C,$DC,$9C,$0D,$04,$06<br />
dc.b $01,$08,$03,$0A,$05,$B6,$36,$B6,$28,$2C,$14,$22,$00<br />
dc.b $3D,$01,$02,$02,$02,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$24,$18,$18,$18,$1C,$82,$82,$82<br />
dc.b $32,$71,$33,$0D,$01,$5F,$5F,$99,$94,$05,$05,$05<br />
dc.b $07,$02,$02,$02,$02,$11,$11,$11,$72,$23,$26,$2D,$80<br />
dc.b $3A,$32,$52,$01,$31,$1F,$1F,$1F,$18,$01,$00,$1F<br />
dc.b $00,$00,$00,$0F,$00,$5A,$03,$0F,$1A,$3B,$4F,$30,$00<br />
dc.b $3C,$42,$32,$41,$41,$12,$12,$12,$12,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$06,$06,$08,$08,$24,$24,$08,$08<br />
dc.b $31,$34,$30,$35,$31,$DF,$9F,$DF,$9F,$0C,$0C,$07<br />
dc.b $09,$07,$07,$07,$08,$2F,$1F,$1F,$2F,$17,$14,$32,$80<br />
dc.b $3D,$01,$01,$01,$01,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$20,$1A,$1A,$1A,$19,$84,$84,$84<br />
dc.b $24,$70,$30,$74,$38,$12,$1F,$1F,$1F,$05,$05,$03<br />
dc.b $03,$05,$05,$03,$03,$36,$26,$2C,$2C,$0A,$06,$08,$08<br />
dc.b $3A,$01,$01,$01,$02,$8D,$07,$07,$52,$09,$00,$00<br />
dc.b $03,$01,$02,$02,$00,$5F,$0F,$0F,$2F,$18,$18,$22,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$03,$03,$08,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$17,$20,$28,$80<br />
dc.b $20,$7A,$00,$31,$00,$9F,$DC,$D8,$DF,$10,$04,$0A<br />
dc.b $04,$0F,$08,$08,$08,$5F,$BF,$5F,$BF,$14,$17,$2B,$80<br />
dc.b $3A,$61,$51,$08,$02,$5D,$5D,$5D,$50,$04,$1F,$0F<br />
dc.b $1F,$00,$00,$00,$00,$1F,$0F,$5F,$0F,$22,$22,$1E,$80<br />
dc.b $02,$01,$02,$55,$04,$92,$8E,$8D,$54,$0D,$00,$0C<br />
dc.b $03,$00,$00,$00,$00,$FF,$0F,$2F,$5F,$16,$1D,$2A,$80<br />
dc.b $02,$75,$73,$71,$31,$1F,$96,$58,$9F,$01,$03,$1B<br />
dc.b $08,$01,$01,$04,$05,$FF,$3F,$2F,$2F,$24,$30,$29,$80<br />
dc.b $20,$66,$60,$65,$60,$DF,$9F,$DF,$1F,$00,$09,$06<br />
dc.b $0C,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$1C,$16,$3A,$80<br />
dc.b $0D,$32,$06,$08,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$86,$80,$8D<br />
dc.b $38,$3A,$11,$0A,$02,$D4,$50,$14,$0E,$05,$02,$08<br />
dc.b $88,$00,$00,$00,$00,$99,$09,$09,$1A,$2D,$19,$2C,$86<br />
dc.b $0D,$32,$02,$04,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$8B,$86,$93<br />
dc.b $3A,$20,$60,$23,$01,$1E,$1F,$1F,$1F,$0A,$0B,$0A<br />
dc.b $0A,$05,$0A,$07,$08,$A4,$96,$85,$78,$21,$28,$25,$00<br />
dc.b $3A,$32,$32,$56,$42,$8D,$15,$4F,$52,$06,$07,$08<br />
dc.b $04,$02,$00,$00,$00,$18,$28,$18,$28,$19,$2A,$20,$00<br />
dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$19,$13,$37,$80<br />
dc.b $3D,$01,$02,$02,$02,$14,$8C,$0E,$0E,$08,$02,$05<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$1A,$80,$80,$80<br />
; end of Mus_Credits<br />
<br />
; ------------------------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ------------------------------------------------------------------------------------------<br />
; WARNING the sound driver treats certain sounds specially<br />
; going by the ID of the sound.<br />
; SndID_Ring, SndID_RingLeft, SndID_Gloop, SndID_SpindashRev<br />
; are referenced by the sound driver directly.<br />
; If needed you can change this in s2.sounddriver.asm<br />
<br />
<br />
; NOTE: the exact order of this list determines the priority of each sound, since it determines the sound's SndID.<br />
; a sound can get dropped if a higher-priority sound is already playing.<br />
; the rules for sound priority are currently unknown, but you can generally swap pointer lines around to resolve priority conflicts.<br />
; loc_FEE91: SoundPoint:<br />
SoundIndex:<br />
SndPtr_Jump: rom_ptr_z80 Sound20 ; jumping sound<br />
SndPtr_Checkpoint: rom_ptr_z80 Sound21 ; checkpoint ding-dong sound<br />
SndPtr_SpikeSwitch: rom_ptr_z80 Sound22 ; spike switch sound<br />
SndPtr_Hurt: rom_ptr_z80 Sound23 ; hurt sound<br />
SndPtr_Skidding: rom_ptr_z80 Sound24 ; skidding sound<br />
SndPtr_BlockPush: rom_ptr_z80 Sound25 ; block push sound<br />
SndPtr_HurtBySpikes: rom_ptr_z80 Sound26 ; spiky impalement sound<br />
SndPtr_Sparkle: rom_ptr_z80 Sound27 ; sparkling sound<br />
SndPtr_Beep: rom_ptr_z80 Sound28 ; short beep<br />
SndPtr_Bwoop: rom_ptr_z80 Sound29 ; bwoop<br />
SndPtr_Splash: rom_ptr_z80 Sound2A ; splash sound<br />
SndPtr_Swish: rom_ptr_z80 Sound2B ; swish<br />
SndPtr_BossHit: rom_ptr_z80 Sound2C ; boss hit<br />
SndPtr_InhalingBubble: rom_ptr_z80 Sound2D ; inhaling a bubble<br />
SndPtr_ArrowFiring:<br />
SndPtr_LavaBall: rom_ptr_z80 Sound2E ; arrow firing<br />
SndPtr_Shield: rom_ptr_z80 Sound2F ; shield sound<br />
SndPtr_LaserBeam: rom_ptr_z80 Sound30 ; laser beam<br />
SndPtr_Zap: rom_ptr_z80 Sound31 ; zap<br />
SndPtr_Drown: rom_ptr_z80 Sound32 ; drownage<br />
SndPtr_FireBurn: rom_ptr_z80 Sound33 ; fire + burn<br />
SndPtr_Bumper: rom_ptr_z80 Sound34 ; bumper bing<br />
SndPtr_Ring:<br />
SndPtr_RingRight: rom_ptr_z80 Sound35 ; ring sound<br />
SndPtr_SpikesMove: rom_ptr_z80 Sound36<br />
SndPtr_Rumbling: rom_ptr_z80 Sound37 ; rumbling<br />
rom_ptr_z80 Sound38<br />
SndPtr_Smash: rom_ptr_z80 Sound39 ; smash/breaking<br />
rom_ptr_z80 Sound3A ; nondescript ding<br />
SndPtr_DoorSlam: rom_ptr_z80 Sound3B ; door slamming shut<br />
SndPtr_SpindashRelease: rom_ptr_z80 Sound3C ; spindash unleashed<br />
SndPtr_Hammer: rom_ptr_z80 Sound3D ; slide-thunk<br />
SndPtr_Roll: rom_ptr_z80 Sound3E ; rolling sound<br />
SndPtr_ContinueJingle: rom_ptr_z80 Sound3F ; got continue<br />
SndPtr_CasinoBonus: rom_ptr_z80 Sound40 ; short bonus ding<br />
SndPtr_Explosion: rom_ptr_z80 Sound41 ; badnik bust<br />
SndPtr_WaterWarning: rom_ptr_z80 Sound42 ; warning ding-ding<br />
SndPtr_EnterGiantRing: rom_ptr_z80 Sound43 ; special stage ring flash (unused)<br />
SndPtr_BossExplosion: rom_ptr_z80 Sound44 ; thunk<br />
SndPtr_TallyEnd: rom_ptr_z80 Sound45 ; cha-ching<br />
SndPtr_RingSpill: rom_ptr_z80 Sound46 ; losing rings<br />
rom_ptr_z80 Sound47 ; chain pull chink-chink<br />
SndPtr_Flamethrower: rom_ptr_z80 Sound48 ; flamethrower<br />
SndPtr_Bonus: rom_ptr_z80 Sound49 ; bonus pwoieeew (unused)<br />
SndPtr_SpecStageEntry: rom_ptr_z80 Sound4A ; special stage entry<br />
SndPtr_SlowSmash: rom_ptr_z80 Sound4B ; slower smash/crumble<br />
SndPtr_Spring: rom_ptr_z80 Sound4C ; spring boing<br />
SndPtr_Blip: rom_ptr_z80 Sound4D ; selection blip<br />
SndPtr_RingLeft: rom_ptr_z80 Sound4E ; another ring sound (only plays in the left speaker?)<br />
SndPtr_Signpost: rom_ptr_z80 Sound4F ; signpost spin sound<br />
SndPtr_CNZBossZap: rom_ptr_z80 Sound50 ; mosquito zapper<br />
rom_ptr_z80 Sound51<br />
rom_ptr_z80 Sound52<br />
SndPtr_Signpost2P: rom_ptr_z80 Sound53<br />
SndPtr_OOZLidPop: rom_ptr_z80 Sound54 ; OOZ lid pop sound<br />
SndPtr_SlidingSpike: rom_ptr_z80 Sound55<br />
SndPtr_CNZElevator: rom_ptr_z80 Sound56<br />
SndPtr_PlatformKnock: rom_ptr_z80 Sound57<br />
SndPtr_BonusBumper: rom_ptr_z80 Sound58 ; CNZ bonusy bumper sound<br />
SndPtr_LargeBumper: rom_ptr_z80 Sound59 ; CNZ baaang bumper sound<br />
SndPtr_Gloop: rom_ptr_z80 Sound5A ; CNZ gloop / water droplet sound<br />
SndPtr_PreArrowFiring: rom_ptr_z80 Sound5B<br />
SndPtr_Fire: rom_ptr_z80 Sound5C<br />
SndPtr_ArrowStick: rom_ptr_z80 Sound5D ; chain clink<br />
SndPtr_Helicopter:<br />
SndPtr_WingFortress: rom_ptr_z80 Sound5E ; helicopter<br />
SndPtr_SuperTransform: rom_ptr_z80 Sound5F<br />
SndPtr_SpindashRev: rom_ptr_z80 Sound60 ; spindash charge<br />
SndPtr_Rumbling2: rom_ptr_z80 Sound61 ; rumbling<br />
SndPtr_CNZLaunch: rom_ptr_z80 Sound62<br />
SndPtr_Flipper: rom_ptr_z80 Sound63 ; CNZ blooing bumper<br />
SndPtr_HTZLiftClick: rom_ptr_z80 Sound64 ; HTZ track click sound<br />
SndPtr_Leaves: rom_ptr_z80 Sound65 ; kicking up leaves sound<br />
SndPtr_MegaMackDrop: rom_ptr_z80 Sound66 ; leaf splash?<br />
SndPtr_DrawbridgeMove: rom_ptr_z80 Sound67<br />
SndPtr_QuickDoorSlam: rom_ptr_z80 Sound68 ; door slamming quickly (seems unused)<br />
SndPtr_DrawbridgeDown: rom_ptr_z80 Sound69<br />
SndPtr_LaserBurst: rom_ptr_z80 Sound6A ; robotic laser burst<br />
SndPtr_Scatter:<br />
SndPtr_LaserFloor: rom_ptr_z80 Sound6B ; scatter<br />
SndPtr_Teleport: rom_ptr_z80 Sound6C<br />
SndPtr_Error: rom_ptr_z80 Sound6D ; error sound<br />
SndPtr_MechaSonicBuzz: rom_ptr_z80 Sound6E ; silver sonic buzz saw<br />
SndPtr_LargeLaser: rom_ptr_z80 Sound6F<br />
SndPtr_OilSlide: rom_ptr_z80 Sound70<br />
SndPtr__End:<br />
<br />
; There are many non-relative pointers in these sound effects,<br />
; so the sounds shouldn't simply be BINCLUDE'd.<br />
; They could be included as separate .asm files using "include" instead of "binclude",<br />
; but I wanted to minimize the number of included asm files.<br />
<br />
; some comments on what the various script commands do (after the header):<br />
; 0x00-0x7F sets the note duration (of the previous note and following notes)<br />
; 0x81-0xDF plays a note (the valid range may be smaller for PSG or DAC)<br />
; 0x80 plays silence<br />
; 0xE0-0xFF does special things. I won't list them here... search for "Coordination flags" sonic 2.<br />
<br />
; the FM voices (poorly named "ssamp" or "samples" below)<br />
; are 25 bytes each and go directly to YM2612 registers.<br />
; they can be hard to edit (there's an art to it)<br />
; but search for sonic "Voice editing" for more info if you want to try.<br />
<br />
; jumping sound<br />
Sound20: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$F400<br />
+ dc.b $F5,$00,$9E,$05,$F0,$02,$01,$F8,$65,$A3,$15,$F2<br />
<br />
; checkpoint ding-dong sound<br />
Sound21: dc.w z80_ptr(ssamp21),$0101<br />
dc.w $8005,z80_ptr(+),$0001<br />
ssamp21: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
+ dc.b $EF,$00,$BD,$06,$BA,$16,$F2<br />
<br />
; spike switch sound<br />
Sound22: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C0,$04,$CA,$04<br />
- dc.b $C0,$01,$EC<br />
dc.w $01F7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; hurt sound<br />
Sound23: dc.w z80_ptr(ssamp23),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B0,$07,$E7,$AD<br />
- dc.b $01,$E6<br />
dc.w $01F7,$002F,z80_ptr(-)<br />
dc.b $F2<br />
ssamp23: dc.b $30,$30,$30,$30,$30,$9E,$DC,$D8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$14,$14,$3C,$80<br />
<br />
; skidding sound<br />
Sound24: dc.w $0000,$0102 ; sound header... no sample and 2 script entries<br />
dc.w $80A0,z80_ptr(+),$F400 ; entry 1 header<br />
dc.w $80C0,z80_ptr(++),$F400 ; entry 2 header<br />
+ dc.b $F5,$00,$AF,$01,$80,$AF,$80,$03 ; script entry 1<br />
- dc.b $AF,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 1 end<br />
+ dc.b $F5,$00,$80,$01,$AD,$80,$AD,$80,$03 ; script entry 2<br />
- dc.b $AD,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 2 end<br />
<br />
; block push sound<br />
Sound25: dc.w z80_ptr(ssamp25),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$01,$8B,$0A,$80,$02,$F2<br />
ssamp25: dc.b $FA,$21,$10,$30,$32,$2F,$2F,$1F,$2F,$05,$09,$08<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
; spiky impalement sound<br />
Sound26: dc.w z80_ptr(ssamp26),$0101<br />
dc.w $8005,z80_ptr(+),$F200<br />
+ dc.b $EF,$00,$F0,$01,$01,$10,$FF,$CF,$05,$D7,$25,$F2<br />
ssamp26: dc.b $3B,$3C,$30,$39,$31,$DF,$1F,$1F,$DF,$04,$04,$05<br />
dc.b $01,$04,$04,$04,$02,$FF,$1F,$0F,$AF,$29,$0F,$20,$80<br />
<br />
; sparkling sound<br />
Sound27: dc.w z80_ptr(ssamp27),$0101<br />
dc.w $8004,z80_ptr(+),$0C1C<br />
+ dc.b $EF,$00,$C1,$05,$C4,$05,$C9,$2B,$F2<br />
ssamp27: dc.b $07,$73,$33,$33,$73,$0F,$19,$14,$1A,$0A,$0A,$0A<br />
dc.b $0A,$0A,$0A,$0A,$0A,$57,$57,$57,$57,$00,$00,$00,$00<br />
<br />
; short beep<br />
Sound28: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$E803<br />
+ dc.b $F5,$04,$CB,$04,$F2<br />
<br />
; bwoop<br />
Sound29: dc.w $0000,$0101<br />
dc.w $80A0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$E6,$35,$8E,$06,$F2<br />
<br />
; splash sound<br />
Sound2A: dc.w z80_ptr(ssamp2A),$0102<br />
dc.w $80C0,z80_ptr(+),$0000<br />
dc.w $8005,z80_ptr(++),$0003<br />
+ dc.b $F5,$00,$F3,$E7,$C2,$05,$C6,$05,$E7<br />
- dc.b $07,$EC,$01<br />
dc.w $E7F7,$000F,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$A6,$14,$F2<br />
ssamp2A: dc.b $00,$00,$02,$03,$00,$D9,$1F,$DF,$1F,$12,$14,$11<br />
dc.b $0F,$0A,$0A,$00,$0D,$FF,$FF,$FF,$FF,$22,$27,$07,$80<br />
<br />
; swish<br />
Sound2B: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$C6,$03,$80,$03,$C6,$01,$E7<br />
- dc.b $01,$EC,$01<br />
dc.w $E7F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; boss hit<br />
Sound2C: dc.w z80_ptr(smashsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$0C,$01<br />
- dc.b $81,$0A,$E6<br />
dc.w $10F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
smashsamp: dc.b $F9,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
<br />
; inhaling a bubble<br />
Sound2D: dc.w z80_ptr(ssamp2D),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$21,$6E,$A6,$07<br />
dc.b $80,$06,$F0,$01,$01,$44,$1E,$AD,$08,$F2<br />
ssamp2D: dc.b $35,$05,$08,$09,$07,$1E,$0D,$0D,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$1F,$2F,$1F,$15,$12,$12,$80<br />
<br />
; arrow firing<br />
Sound2E: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$C6,$01,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp2E: dc.b $FA,$02,$00,$03,$05,$12,$0F,$11,$13,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$2F,$0E,$1A,$80<br />
<br />
; shield sound<br />
Sound2F: dc.w z80_ptr(ssamp2F),$0101<br />
dc.w $8005,z80_ptr(+),$0C00<br />
+ dc.b $EF,$00,$80,$01,$A3,$05,$E7,$A4,$26,$F2<br />
ssamp2F: dc.b $30,$30,$30,$30,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$04,$14,$2C,$80<br />
<br />
; laser beam<br />
Sound30: dc.w z80_ptr(ssamp30),$0101 ; sound header... a voice and 1 script entry<br />
dc.w $8005,z80_ptr(+),$FB05 ; script entry header<br />
+ dc.b $EF,$00,$DF,$7F ; script start<br />
- dc.b $DF,$02,$E6 ; script continued<br />
dc.w $01F7,$001B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script end<br />
ssamp30: dc.b $83,$1F,$1F,$15,$1F,$1F,$1F,$1F,$1F,$00,$00,$00 ; voice<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$0B,$01,$16,$82 ; (fixed length)<br />
<br />
; zap<br />
Sound31: dc.w z80_ptr(ssamp31),$0101<br />
dc.w $8005,z80_ptr(+),$FB02<br />
+ dc.b $EF,$00,$B3,$05,$80,$01,$B3,$09,$F2<br />
ssamp31: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$05,$34,$10,$87<br />
<br />
; drownage<br />
Sound32: dc.w z80_ptr(ssamp32),$0102<br />
dc.w $8004,z80_ptr(++),$0C04<br />
dc.w $8005,z80_ptr(+),$0E02<br />
+ dc.b $EF,$00,$F0,$01,$01,$83,$0C<br />
- dc.b $8A,$05,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $80,$06,$EF,$00,$F0,$01,$01,$6F,$0E<br />
- dc.b $8D,$04,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp32: dc.b $35,$14,$04,$1A,$09,$0E,$11,$10,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$4F,$2F,$4F,$2F,$12,$12,$80<br />
<br />
; fire + burn<br />
Sound33: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$A7,$25,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; bumper bing<br />
Sound34: dc.w z80_ptr(ssamp34),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $8002,z80_ptr(+++),$0002<br />
+ dc.b $EF,$00,$F6<br />
dc.w z80_ptr(Sound34_3)<br />
+ dc.b $EF,$00,$E1,$07,$80,$01<br />
Sound34_3:<br />
dc.b $BA,$20,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
ssamp34: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$1F,$2B,$80,$80<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; ring sound<br />
Sound35: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$40,$C1,$05,$C4,$05,$C9,$1B,$F2<br />
<br />
<br />
Sound36: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C1,$07<br />
- dc.b $D0,$01,$EC<br />
dc.w $01F7,$000C,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; rumbling<br />
Sound37: dc.w z80_ptr(ssamp37),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$20,$08<br />
- dc.b $8B<br />
dc.w $0AF7,$0008,z80_ptr(-)<br />
- dc.b $8B,$10,$E6<br />
dc.w $03F7,$0009,z80_ptr(-)<br />
dc.b $F2<br />
ssamp37: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
<br />
Sound38: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$B4,$08<br />
- dc.b $B0,$02,$EC<br />
dc.w $01F7,$0003,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; smash/breaking<br />
Sound39: dc.w z80_ptr(smashsamp),$0104<br />
dc.w $8002,z80_ptr(+),$1000<br />
dc.w $8004,z80_ptr(+++),$0000<br />
dc.w $8005,z80_ptr(++),$1000<br />
dc.w $80C0,z80_ptr(s39s4),$0000<br />
+ dc.b $E0,$40,$80,$02,$F6<br />
dc.w z80_ptr(++)<br />
+ dc.b $E0,$80,$80,$01<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
s39s4: dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; nondescript ding<br />
Sound3A: dc.w z80_ptr(ssamp3A),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$AE,$08,$F2<br />
ssamp3A: dc.b $1C,$2E,$0F,$02,$02,$1F,$1F,$1F,$1F,$18,$14,$0F<br />
dc.b $0E,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$20,$1B,$80,$80<br />
<br />
; door slamming shut<br />
Sound3B: dc.w z80_ptr(ssamp3B),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$80,$A0,$06,$F2<br />
ssamp3B: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; spindash unleashed<br />
Sound3C: dc.w z80_ptr(ssamp3C),$0102<br />
dc.w $8005,z80_ptr(+),$9000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$F2<br />
+ dc.b $F5,$07,$80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$4F,$F2<br />
ssamp3C: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
<br />
; slide-thunk<br />
Sound3D: dc.w z80_ptr(ssamp3D),$0102<br />
dc.w $8005,z80_ptr(+),$100A<br />
dc.w $8004,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$60,$01,$A7,$08,$F2<br />
+ dc.b $80,$08,$EF,$01,$84,$22,$F2<br />
ssamp3D: dc.b $FA,$21,$19,$3A,$30,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
dc.b $FA,$31,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$1F,$2F,$2F,$0D,$01,$00,$80<br />
<br />
; rolling sound<br />
Sound3E: dc.w z80_ptr(ssamp3E),$0101<br />
dc.w $8004,z80_ptr(+),$0C05<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$09,$FF,$CA,$25,$F4<br />
- dc.b $E7,$E6,$01,$D0<br />
dc.w $02F7,$002A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3E: dc.b $3C,$00,$02,$44,$02,$1F,$1F,$1F,$15,$00,$00,$1F<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0D,$28,$00,$00<br />
<br />
; got continue<br />
Sound3F: dc.w z80_ptr(ssamp3F),$0103<br />
dc.w $8002,z80_ptr(+),$F406<br />
dc.w $8004,z80_ptr(++),$F406<br />
dc.w $8005,z80_ptr(+++),$F406<br />
+ dc.b $EF,$00,$C9,$07,$CD,$D0,$CB,$CE,$D2,$CD,$D0,$D4,$CE,$D2,$D5<br />
- dc.b $D0,$07,$D4,$D7,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$80,$07,$CD,$15,$CE,$D0,$D2<br />
- dc.b $D4,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$C9,$15,$CB,$CD,$CE<br />
- dc.b $D0,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3F: dc.b $14,$25,$36,$33,$11,$1F,$1F,$1F,$1F,$15,$1C,$18<br />
dc.b $13,$0B,$0D,$08,$09,$0F,$8F,$9F,$0F,$24,$0A,$05,$80<br />
<br />
; short bonus ding<br />
Sound40: dc.w z80_ptr(ssamp3F),$0102<br />
dc.w $8005,z80_ptr(++),$0008<br />
dc.w $8004,z80_ptr(+),$0008<br />
+ dc.b $E1,$03,$80,$02<br />
+ dc.b $EF,$00,$C4,$16,$F2<br />
<br />
; badnik bust<br />
Sound41: dc.w z80_ptr(ssamp41),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0002<br />
+ dc.b $F0,$03,$01,$72,$0B,$EF,$00,$BA,$16,$F2<br />
+ dc.b $F5,$01,$F3,$E7,$B0,$1B,$F2<br />
ssamp41: dc.b $3C,$0F,$03,$01,$01,$1F,$1F,$1F,$1F,$19,$19,$12<br />
dc.b $0E,$05,$00,$12,$0F,$0F,$FF,$7F,$FF,$00,$00,$80,$80<br />
<br />
; warning ding-ding<br />
Sound42: dc.w z80_ptr(ssamp3F),$0101<br />
dc.w $8005,z80_ptr(+),$0C08<br />
+ dc.b $EF,$00,$BA,$08,$BA,$25,$F2<br />
<br />
; special stage ring flash (unused)<br />
Sound43: dc.w z80_ptr(ssamp43),$0102<br />
dc.w $8004,z80_ptr(+),$0C00<br />
dc.w $8005,z80_ptr(++),$0013<br />
+ dc.b $EF,$01,$80,$01,$A2,$08,$EF,$00,$E7,$AD,$26,$F2<br />
+ dc.b $EF,$02,$F0,$06,$01,$03,$FF,$80,$0A<br />
- dc.b $C3<br />
dc.w $06F7,$0005,z80_ptr(-)<br />
dc.b $C3,$17,$F2<br />
ssamp43: dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$1C,$80<br />
dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$2C,$80<br />
dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$13,$13,$81,$88<br />
<br />
; thunk<br />
Sound44: dc.w z80_ptr(ssamp44),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$8A,$22,$F2<br />
ssamp44: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$4F,$2F,$2F,$0D,$04,$07,$80<br />
<br />
; cha-ching<br />
Sound45: dc.w z80_ptr(ssamp45),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$8A,$08,$80,$02,$8A,$08,$F2<br />
+ dc.b $EF,$01,$80,$12,$C6,$55,$F2<br />
+ dc.b $F5,$02,$F3,$E7,$80,$02,$C2,$05,$C4,$04,$C2,$05,$C4,$04,$F2<br />
ssamp45: dc.b $3B,$03,$02,$02,$06,$18,$1A,$1A,$96,$17,$0A,$0E<br />
dc.b $10,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$39,$28,$80<br />
ringsamp: dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$23,$80,$80<br />
<br />
; losing rings (scatter)<br />
Sound46: dc.w z80_ptr(ringsamp),$0102<br />
dc.w $8004,z80_ptr(+),$0005<br />
dc.w $8005,z80_ptr(++),$0008<br />
+ dc.b $EF,$00,$C6,$02,$05,$05,$05,$05,$05,$05,$3A,$F2<br />
+ dc.b $EF,$00,$80,$02,$C4,$02,$05,$15,$02,$05,$32,$F2<br />
<br />
; chain pull chink-chink<br />
Sound47: dc.w z80_ptr(ssamp47),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$BE,$05,$80,$04,$BE,$04,$80,$04,$F2<br />
ssamp47: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; flamethrower<br />
Sound48: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$25,$F2<br />
<br />
; bonus pwoieeew (unused)<br />
Sound49: dc.w z80_ptr(ssamp49),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$33,$18,$B9,$1A,$F2<br />
ssamp49: dc.b $3B,$0A,$05,$31,$02,$5F,$5F,$5F,$5F,$04,$16,$14<br />
dc.b $0C,$00,$00,$04,$00,$1F,$D8,$6F,$FF,$03,$00,$25,$80<br />
<br />
; special stage entry<br />
Sound4A: dc.w z80_ptr(ssamp4A),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$F0,$01,$01,$5B,$02,$CC,$65,$F2<br />
ssamp4A: dc.b $20,$36,$30,$35,$31,$41,$3B,$49,$4B,$09,$09,$06<br />
dc.b $08,$01,$02,$03,$A9,$0F,$0F,$0F,$0F,$29,$23,$27,$80<br />
<br />
; slower smash/crumble<br />
Sound4B: dc.w z80_ptr(smashsamp),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; spring boing<br />
Sound4C: dc.w z80_ptr(ssamp4C),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$5D,$0F,$B0,$0C,$F4<br />
- dc.b $E7,$E6,$02,$BD<br />
dc.w $02F7,$0019,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4C: dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$16,$13,$30,$80<br />
<br />
; selection blip<br />
Sound4D: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $BB,$02,$F2<br />
<br />
; another ring sound (only plays in the left speaker?)<br />
Sound4E: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8004,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$80,$C1,$04,$C4,$05,$C9,$1B,$F2<br />
<br />
; signpost spin sound<br />
Sound4F: dc.w z80_ptr(ssamp4F),$0102<br />
dc.w $8004,z80_ptr(+),$2703<br />
dc.w $8005,z80_ptr(++),$2700<br />
+ dc.b $80,$04<br />
+ dc.b $EF,$00<br />
- dc.b $B4,$05,$E6<br />
dc.w $02F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4F: dc.b $F4,$06,$0F,$04,$0E,$1F,$1F,$1F,$1F,$00,$0B,$00<br />
dc.b $0B,$00,$05,$00,$08,$0F,$FF,$0F,$FF,$0C,$03,$8B,$80<br />
<br />
; mosquito zapper<br />
Sound50: dc.w z80_ptr(ssamp50),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B3,$04,$80,$01<br />
- dc.b $B4,$04,$80<br />
dc.w $01F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
ssamp50: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$06,$34,$10,$87<br />
<br />
<br />
Sound51: dc.w z80_ptr(ssamp51),$0102<br />
dc.w $80C0,z80_ptr(+),$0001<br />
dc.w $8005,z80_ptr(++),$000B<br />
+ dc.b $F5,$02,$F3,$E4,$B0,$04,$85,$02,$F2<br />
+ dc.b $EF,$00,$E8,$04,$A5,$06,$F2<br />
ssamp51: dc.b $3C,$02,$01,$00,$01,$1F,$1F,$1F,$1F,$00,$19,$0E<br />
dc.b $10,$00,$00,$0C,$0F,$0F,$FF,$EF,$FF,$05,$00,$80,$80<br />
<br />
<br />
Sound52: dc.w z80_ptr(ssamp52),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $F0,$01,$01,$2A,$07,$EF,$00<br />
- dc.b $A5,$03<br />
dc.w $E7F7,$0013,z80_ptr(-)<br />
- dc.b $A5,$03,$E7,$E6<br />
dc.w $02F7,$0013,z80_ptr(-)<br />
dc.b $F2<br />
ssamp52: dc.b $28,$21,$21,$21,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$29,$20,$29,$80<br />
<br />
<br />
Sound53: dc.w z80_ptr(ssamp53),$0101<br />
dc.w $8005,z80_ptr(+),$F503<br />
+ dc.b $EF,$00,$F0,$01,$01,$46,$09,$A7,$14,$E7,$14,$E7,$E6,$04<br />
dc.b $14,$E7,$E6,$04,$14,$E7,$E6,$04,$0A,$E7,$E6,$04,$0A,$F2<br />
ssamp53: dc.b $07,$0A,$0C,$0C,$0C,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$2A,$0F,$0F,$80<br />
<br />
; OOZ lid pop sound<br />
Sound54: dc.w z80_ptr(ssamp54),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0006<br />
+ dc.b $EF,$00,$B6,$15,$F2<br />
+ dc.b $F3,$E7,$F5,$04,$C6,$03,$E7,$C5,$E7<br />
dc.b $C4,$E7,$C3,$E7,$C2,$E7,$C1,$E7,$C0,$F2<br />
ssamp54: dc.b $07,$03,$02,$03,$00,$FF,$6F,$6F,$3F,$12,$14,$11<br />
dc.b $0E,$1A,$0A,$03,$0D,$FF,$FF,$FF,$FF,$03,$07,$07,$80<br />
<br />
<br />
Sound55: dc.w z80_ptr(ssamp55),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$AA,$07,$B6,$15,$F2<br />
ssamp55: dc.b $42,$20,$0E,$0F,$0F,$1F,$1F,$1F,$1F,$1F,$1F,$1F<br />
dc.b $1F,$0F,$0E,$0F,$0E,$0F,$0F,$0F,$0F,$2E,$80,$20,$80<br />
<br />
<br />
Sound56: dc.w z80_ptr(ssamp56),$0101<br />
dc.w $8005,z80_ptr(+),$100E<br />
+ dc.b $EF,$00,$F0,$01,$01,$1E,$FF,$8F,$1C,$F4<br />
- dc.b $E7,$9A<br />
dc.w $05F7,$0009,z80_ptr(-)<br />
- dc.b $E7,$9A,$04,$E6,$02,$E7,$9A,$04,$E6<br />
dc.w $02F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp56: dc.b $0D,$06,$00,$00,$E5,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$27,$80,$80,$80<br />
<br />
<br />
Sound57: dc.w z80_ptr(ssamp57),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$CA,$15,$F2<br />
ssamp57: dc.b $04,$09,$70,$00,$30,$1C,$1F,$DF,$1F,$15,$12,$0B<br />
dc.b $0F,$0C,$0D,$00,$0D,$07,$2F,$FA,$FA,$00,$29,$00,$00<br />
<br />
; CNZ bonusy bumper sound<br />
Sound58: dc.w z80_ptr(ssamp58),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$B3,$06,$B3,$15,$F2<br />
ssamp58: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
<br />
; CNZ baaang bumper sound<br />
Sound59: dc.w z80_ptr(ssamp59),$0103<br />
dc.w $8004,z80_ptr(+),$0000<br />
dc.w $8002,z80_ptr(++),$0002<br />
dc.w $8005,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$E1,$0C,$B5,$14,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
+ dc.b $EF,$00,$B6,$14,$F2<br />
ssamp59: dc.b $32,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $0D,$00,$01,$01,$0C,$00,$23,$C3,$F6,$08,$07,$1C,$03<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; CNZ gloop / water droplet sound<br />
Sound5A: dc.w z80_ptr(ssamp5A),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$7F,$F1,$AA,$0A,$F2<br />
ssamp5A: dc.b $47,$03,$02,$02,$04,$5F,$5F,$5F,$5F,$0E,$1A,$11<br />
dc.b $0A,$09,$0A,$0A,$0A,$4F,$3F,$3F,$3F,$7F,$80,$80,$A3<br />
<br />
<br />
Sound5B: dc.w z80_ptr(ssamp5B),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$02,$A5,$01,$E7<br />
- dc.b $01,$E7,$E6<br />
dc.w $02F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5B: dc.b $38,$0F,$0F,$0F,$0F,$1F,$1F,$1F,$0E,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$1F,$00,$00,$00,$80<br />
<br />
<br />
Sound5C: dc.w z80_ptr(ssamp5C),$0102<br />
dc.w $8004,z80_ptr(+),$000E<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$85,$40<br />
- dc.b $E7,$04,$E6<br />
dc.w $04F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$40<br />
- dc.b $E7,$08,$E6<br />
dc.w $01F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5C: dc.b $FA,$12,$01,$01,$01,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$81,$8E,$14,$80<br />
<br />
; chain clink<br />
Sound5D: dc.w z80_ptr(ssamp5D),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$C0,$04,$F2<br />
ssamp5D: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; helicopter<br />
Sound5E: dc.w z80_ptr(ssamp5E),$0101<br />
dc.w $8002,z80_ptr(+),$1405<br />
+ dc.b $EF,$00<br />
- dc.b $95,$02,$95<br />
dc.w $01F7,$0013,z80_ptr(-)<br />
- dc.b $95,$02,$95,$01,$E6<br />
dc.w $01F7,$001B,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5E: dc.b $35,$30,$44,$40,$51,$1F,$1F,$1F,$1F,$10,$00,$13<br />
dc.b $15,$1F,$00,$1F,$1A,$7F,$0F,$7F,$5F,$02,$A8,$80,$80<br />
<br />
<br />
Sound5F: dc.w z80_ptr(ssamp5F),$0103<br />
dc.w $8005,z80_ptr(s5Fs1),$0000<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
s5Fs1 dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$E6,$0A,$80<br />
dc.b $06,$EF,$01,$F0,$01,$01,$11,$FF,$A2,$28<br />
- dc.b $E7,$03,$E6<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs2 dc.b $80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$1D<br />
- dc.b $E7,$07,$EC<br />
dc.w $01F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs3 dc.b $80,$16,$F5,$03<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $FFF7,$0005,z80_ptr(-)<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $01F7,$0007,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5F: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
dc.b $3A,$70,$30,$04,$01,$0F,$14,$19,$16,$08,$0A,$0B<br />
dc.b $05,$03,$03,$03,$05,$1F,$6F,$8F,$5F,$1F,$22,$1F,$80<br />
<br />
; spindash charge<br />
Sound60: dc.w z80_ptr(ssamp60),$0101<br />
dc.w $8005,z80_ptr(+),$FE00<br />
+ dc.b $EF,$00,$F0,$00,$01,$20,$F6,$C4,$16,$E7,$F4,$D0,$18,$E7<br />
- dc.b $04,$E7,$E6<br />
dc.w $03F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp60: dc.b $34,$00,$03,$0C,$09,$9F,$8C,$8F,$95,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$00,$1D,$00,$00<br />
<br />
; rumbling<br />
Sound61: dc.w z80_ptr(ssamp61),$0101<br />
dc.w $8004,z80_ptr(+),$0004<br />
+ dc.b $80,$01,$EF,$00,$F0,$00,$01,$70,$06,$82,$06,$85,$08,$83<br />
dc.b $01,$82,$05,$86,$06,$89,$03,$82,$08,$88,$04,$82,$06,$E6<br />
dc.b $02,$85,$08,$E6,$02,$83,$01,$E6,$02,$82,$05,$E6,$02,$86<br />
dc.b $06,$E6,$02,$89,$03,$E6,$02,$82,$08,$E6,$02,$88,$04,$E6,$02,$F2<br />
ssamp61: dc.b $32,$30,$30,$50,$30,$1F,$0E,$19,$0E,$07,$12,$15<br />
dc.b $09,$0A,$09,$1D,$06,$E8,$03,$0A,$17,$07,$00,$00,$00<br />
<br />
<br />
Sound62: dc.w z80_ptr(ssamp62),$0101<br />
dc.w $8005,z80_ptr(+),$FF00<br />
+ dc.b $EF,$00,$A6,$05,$F0,$01,$01,$E7,$40<br />
- dc.b $C4,$02,$E7,$E6<br />
dc.w $01F7,$0012,z80_ptr(-)<br />
dc.b $F2<br />
ssamp62: dc.b $34,$0C,$10,$73,$0C,$AF,$AC,$FF,$D5,$06,$00,$02<br />
dc.b $01,$02,$0A,$04,$08,$BF,$BF,$BF,$BF,$00,$08,$80,$80<br />
<br />
; CNZ blooing bumper<br />
Sound63: dc.w z80_ptr(ssamp63),$0101<br />
dc.w $8005,z80_ptr(+),$0907<br />
+ dc.b $EF,$00,$F0,$01,$01,$04,$56,$92,$03,$9A,$25,$F2<br />
ssamp63: dc.b $3D,$12,$10,$77,$30,$5F,$5F,$5F,$5F,$0F,$0A,$00<br />
dc.b $01,$0A,$0A,$0D,$0D,$4F,$0F,$0F,$0F,$13,$80,$80,$80<br />
<br />
; HTZ track click sound<br />
Sound64: dc.w z80_ptr(ssamp64),$0101<br />
dc.w $8005,z80_ptr(+),$1100<br />
+ dc.b $EF,$00,$C7,$02,$F2<br />
ssamp64: dc.b $24,$2A,$02,$05,$01,$1A,$1F,$10,$1F,$0F,$1F,$1F<br />
dc.b $1F,$0C,$0D,$11,$11,$0C,$09,$09,$0F,$0E,$04,$80,$80<br />
<br />
; kicking up leaves sound<br />
Sound65: dc.w z80_ptr(ssamp65),$0101<br />
dc.w $80C0,z80_ptr(+),$F800<br />
+ dc.b $F5,$03,$F3,$E7,$CE,$03,$F5,$06,$CE,$04,$EC<br />
dc.b $02,$CE,$02,$F5,$03,$EC,$FE,$CE,$08,$CE,$18,$F2<br />
ssamp65: ; uhm... apparently they forgot to null out the pointer to here.<br />
; luckily, sound 65 doesn't really use its sample<br />
<br />
; leaf splash?<br />
Sound66: dc.w z80_ptr(ssamp66),$0102<br />
dc.w $8005,z80_ptr(++),$EE08<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$F5,$09,$C6,$36,$F2<br />
+ dc.b $EF,$00,$80,$01,$92,$02,$02,$02,$30,$F2<br />
ssamp66: dc.b $32,$33,$17,$34,$13,$0F,$0D,$1B,$17,$00,$04,$02<br />
dc.b $0B,$08,$00,$08,$09,$6F,$5F,$4F,$6F,$05,$00,$00,$80<br />
<br />
<br />
Sound67: dc.w z80_ptr(ssamp67),$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$06,$F3,$E7,$90,$0A,$94,$0A,$98,$0A,$9C<br />
dc.b $0A,$A0,$0A,$A4,$08,$A8,$08,$AC,$08,$B0,$08,$F2<br />
ssamp67: ; another not-really-used sample (like Sound65)<br />
<br />
; door slamming quickly (seems unused)<br />
Sound68: dc.w z80_ptr(ssamp68),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$A5,$06,$F2<br />
ssamp68: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
<br />
Sound69: dc.w z80_ptr(ssamp69),$0102<br />
dc.w $8005,z80_ptr(+),$F400<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$9B,$03,$A8,$06,$9E,$08,$F2<br />
+ dc.b $F5,$04,$F3,$E7,$C6,$03,$C6,$06,$C6,$08,$F2<br />
ssamp69: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; robotic laser burst<br />
Sound6A: dc.w z80_ptr(ssamp6A),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$DF,$14,$E6,$18,$06,$F2<br />
ssamp6A: dc.b $3D,$09,$34,$34,$28,$1F,$16,$16,$16,$00,$00,$00<br />
dc.b $04,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$15,$02,$02,$00<br />
<br />
; scatter<br />
Sound6B: dc.w z80_ptr(ssamp6B),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$81,$04,$80,$0C,$F2<br />
ssamp6B: dc.b $3A,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $07,$00,$01,$01,$03,$00,$23,$C3,$46,$08,$07,$1C,$03<br />
<br />
<br />
Sound6C: dc.w z80_ptr(ssamp6C),$0104<br />
dc.w $8005,z80_ptr(++),$0010<br />
dc.w $8004,z80_ptr(+),$0010<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
+ dc.b $E1,$10<br />
+ dc.b $EF,$01,$F0,$01,$01,$EC,$56,$C0,$24,$F4,$EF,$00,$E6,$F0<br />
- dc.b $BB,$02,$E7,$E6,$02,$E9<br />
dc.w $01F7,$0020,z80_ptr(-)<br />
dc.b $F2<br />
ssamp6C: dc.b $00,$53,$30,$03,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$06,$23,$80<br />
dc.b $3C,$72,$32,$32,$72,$14,$14,$0F,$0F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$02,$02,$08,$08,$35,$14,$00,$00<br />
<br />
; error sound<br />
Sound6D: dc.w z80_ptr(ssamp6D),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$B0,$06,$80,$06,$B0,$18,$F2<br />
ssamp6D: dc.b $38,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$1F,$0C,$17,$00<br />
<br />
; silver sonic buzz saw<br />
Sound6E: dc.w z80_ptr(ssamp6E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$C6,$24,$E7<br />
- dc.b $C6,$04,$E7,$E6<br />
dc.w $04F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F3,$E7,$C7,$44,$F2<br />
ssamp6E: dc.b $33,$00,$10,$00,$31,$1F,$1D,$1E,$0E,$00,$0C,$1D<br />
dc.b $00,$00,$00,$01,$00,$0F,$0F,$0F,$0F,$08,$06,$07,$80<br />
<br />
<br />
Sound6F: dc.w z80_ptr(ssamp6A),$0103<br />
dc.w $8005,z80_ptr(++),$000B<br />
dc.w $8004,z80_ptr(+),$0012<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $E1,$02,$80,$02<br />
+ dc.b $EF,$00,$E6,$0C,$DF,$06,$E7,$E6,$F4,$06,$E7<br />
dc.b $E6,$F4,$12,$E7,$E6,$0C,$06,$E7,$E6,$0C,$06,$F2<br />
+ dc.b $F3,$E7,$C6,$04,$C0,$BA,$B4,$AE,$E6<br />
dc.b $01,$AE,$E6,$01,$AE,$E6,$01,$AE,$F2<br />
<br />
<br />
Sound70: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$C6,$18<br />
- dc.b $E7,$03,$E6<br />
dc.w $01F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to the other bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
; share these symbols externally (WARNING: don't rename, move or remove these labels!)<br />
shared movewZ80CompSize<br />
</asm><br />
<br />
We want to replace it with this optimized code:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===sound playback routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #$GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
<br />
==Driver data files==<br />
then unpack this into the sound folder and optionally remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the music and sound effects==<br />
Now we will open s2.constants.asm.<br><br />
===music===<br />
go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
that may be good if you were using the sonic2 driver, but obviously you are not, we need to change it.<br />
<asm><br />
MusID__First = 0<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
;for compatibility with sonic2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
the original music IDs in the compat section can be set to which ever ones you want in the above (I wouldn't recommend editing the 2PResult one though)<br />
===sound effects===<br />
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.<br><br />
we want to start with '''SndID__First'''. you may notice that this area looks like this:<br />
<asm><br />
SndID__First = idstart<br />
SndID_Jump = id(SndPtr_Jump) ; A0<br />
SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1<br />
SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2<br />
SndID_Hurt = id(SndPtr_Hurt) ; A3<br />
SndID_Skidding = id(SndPtr_Skidding) ; A4<br />
SndID_BlockPush = id(SndPtr_BlockPush) ; A5<br />
SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6<br />
SndID_Sparkle = id(SndPtr_Sparkle) ; A7<br />
SndID_Beep = id(SndPtr_Beep) ; A8<br />
SndID_Bwoop = id(SndPtr_Bwoop) ; A9<br />
SndID_Splash = id(SndPtr_Splash) ; AA<br />
SndID_Swish = id(SndPtr_Swish) ; AB<br />
SndID_BossHit = id(SndPtr_BossHit) ; AC<br />
SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD<br />
SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE<br />
SndID_LavaBall = id(SndPtr_LavaBall) ; AE<br />
SndID_Shield = id(SndPtr_Shield) ; AF<br />
SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0<br />
SndID_Zap = id(SndPtr_Zap) ; B1<br />
SndID_Drown = id(SndPtr_Drown) ; B2<br />
SndID_FireBurn = id(SndPtr_FireBurn) ; B3<br />
SndID_Bumper = id(SndPtr_Bumper) ; B4<br />
SndID_Ring = id(SndPtr_Ring) ; B5<br />
SndID_RingRight = id(SndPtr_RingRight) ; B5<br />
SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6<br />
SndID_Rumbling = id(SndPtr_Rumbling) ; B7<br />
SndID_Smash = id(SndPtr_Smash) ; B9<br />
SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB<br />
SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC<br />
SndID_Hammer = id(SndPtr_Hammer) ; BD<br />
SndID_Roll = id(SndPtr_Roll) ; BE<br />
SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF<br />
SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0<br />
SndID_Explosion = id(SndPtr_Explosion) ; C1<br />
SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2<br />
SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3<br />
SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4<br />
SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5<br />
SndID_RingSpill = id(SndPtr_RingSpill) ; C6<br />
SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8<br />
SndID_Bonus = id(SndPtr_Bonus) ; C9<br />
SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA<br />
SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB<br />
SndID_Spring = id(SndPtr_Spring) ; CC<br />
SndID_Blip = id(SndPtr_Blip) ; CD<br />
SndID_RingLeft = id(SndPtr_RingLeft) ; CE<br />
SndID_Signpost = id(SndPtr_Signpost) ; CF<br />
SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0<br />
SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3<br />
SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4<br />
SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5<br />
SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6<br />
SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7<br />
SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8<br />
SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9<br />
SndID_Gloop = id(SndPtr_Gloop) ; DA<br />
SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB<br />
SndID_Fire = id(SndPtr_Fire) ; DC<br />
SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD<br />
SndID_Helicopter = id(SndPtr_Helicopter) ; DE<br />
SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF<br />
SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0<br />
SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1<br />
SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2<br />
SndID_Flipper = id(SndPtr_Flipper) ; E3<br />
SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4<br />
SndID_Leaves = id(SndPtr_Leaves) ; E5<br />
SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6<br />
SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7<br />
SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8<br />
SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9<br />
SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA<br />
SndID_Scatter = id(SndPtr_Scatter) ; EB<br />
SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB<br />
SndID_Teleport = id(SndPtr_Teleport) ; EC<br />
SndID_Error = id(SndPtr_Error) ; ED<br />
SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE<br />
SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF<br />
SndID_OilSlide = id(SndPtr_OilSlide) ; F0<br />
SndID__End = id(SndPtr__End) ; F1<br />
if MOMPASS == 2<br />
if SndID__End > MusID_StopSFX<br />
fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})."<br />
endif<br />
endif<br />
</asm><br />
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.</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208751
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-25T01:52:40Z
<p>Kram1024: /* Fixing the music and sound effects */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==<br />
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><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
move sr,-(sp)<br />
movem.l d0-a6,-(sp)<br />
move #$2700,sr<br />
lea (Z80_Bus_Request).l,a3<br />
lea (Z80_Reset).l,a2<br />
moveq #0,d2<br />
move.w #$100,d1<br />
move.w d1,(a3) ; get Z80 bus<br />
move.w d1,(a2) ; release Z80 reset (was held high by console on startup)<br />
- btst d2,(a3)<br />
bne.s - ; wait until the 68000 has the bus<br />
jsr DecompressSoundDriver(pc)<br />
btst #0,(VDP_control_port+1).l ; check video mode<br />
sne (Z80_RAM+zPalModeByte).l ; set if PAL<br />
move.w d2,(a2) ; hold Z80 reset<br />
move.w d2,(a3) ; release Z80 bus<br />
moveq #$E6,d0<br />
- dbf d0,- ; wait for 2,314 cycles<br />
move.w d1,(a2) ; release Z80 reset<br />
movem.l (sp)+,d0-a6<br />
move (sp)+,sr<br />
rts<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; slightly modified Saxman decompression of the sound driver<br />
; a4 == $A00000 (start of Z80 RAM)<br />
; a5 == current position in Z80 RAM?<br />
; a6 == current position in compressed sound driver?<br />
; d0 == data to decompress? (byte)<br />
; d4 == ???<br />
; d5 == ???<br />
; d6 == ???<br />
; d7 == bytes left to decompress<br />
; loc_EC04A:<br />
DecompressSoundDriver:<br />
lea Snd_Driver(pc),a6<br />
; WARNING: the build script needs editing if you rename this label<br />
movewZ80CompSize: move.w #Snd_Driver_End-Snd_Driver,d7 ; patched (by fixpointer.exe) after compression since the exact size can't be known beforehand<br />
moveq #0,d6<br />
lea (Z80_RAM).l,a5<br />
moveq #0,d5<br />
lea (Z80_RAM).l,a4<br />
<br />
loc_EC062:<br />
lsr.w #1,d6<br />
btst #8,d6<br />
bne.s +<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d6<br />
ori.w #$FF00,d6<br />
+<br />
btst #0,d6<br />
beq.s loc_EC086<br />
jsr sub_EC0DE(pc)<br />
move.b d0,(a5)+<br />
addq.w #1,d5<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC086:<br />
jsr sub_EC0DE(pc)<br />
moveq #0,d4<br />
move.b d0,d4<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d3<br />
andi.w #$F,d3<br />
addq.w #2,d3<br />
andi.w #$F0,d0<br />
lsl.w #4,d0<br />
add.w d0,d4<br />
addi.w #$12,d4<br />
andi.w #$FFF,d4<br />
move.w d5,d0<br />
andi.w #$F000,d0<br />
add.w d0,d4<br />
cmp.w d4,d5<br />
bhs.s loc_EC0CC<br />
subi.w #$1000,d4<br />
bcc.s loc_EC0CC<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b #0,(a5)+<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC0CC:<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b (a4,d4.w),(a5)+<br />
addq.w #1,d4<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; End of function DecompressSoundDriver<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_EC0DE:<br />
move.b (a6)+,d0<br />
subq.w #1,d7<br />
bne.s +<br />
addq.w #4,sp<br />
+<br />
rts<br />
; End of function sub_EC0DE<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; S2 sound driver (Sound driver compression (slightly modified Saxman))<br />
; ---------------------------------------------------------------------------<br />
; loc_EC0E8:<br />
Snd_Driver:<br />
save<br />
include "s2.sounddriver.asm" ; CPU Z80<br />
restore<br />
padding off<br />
!org (Snd_Driver+Size_of_Snd_driver_guess) ; don't worry; I know what I'm doing<br />
<br />
<br />
; loc_ED04C:<br />
Snd_Driver_End:<br />
<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ---------------------------------------------------------------------------<br />
; the DAC data has to line up with the end of the bank.<br />
<br />
; actually it only has to fit within one bank, but we'll line it up to the end anyway<br />
; because the padding gives the sound driver some room to grow<br />
cnop -Size_of_DAC_samples, $8000<br />
<br />
; ---------------------------------------------------------------------------<br />
; DAC samples<br />
; ---------------------------------------------------------------------------<br />
; loc_ED100:<br />
SndDAC_Start:<br />
<br />
SndDAC_Sample1:<br />
BINCLUDE "sound/DAC/Sample 1.bin"<br />
SndDAC_Sample1_End<br />
<br />
SndDAC_Sample2:<br />
BINCLUDE "sound/DAC/Sample 2.bin"<br />
SndDAC_Sample2_End<br />
<br />
SndDAC_Sample5:<br />
BINCLUDE "sound/DAC/Sample 5.bin"<br />
SndDAC_Sample5_End<br />
<br />
SndDAC_Sample6:<br />
BINCLUDE "sound/DAC/Sample 6.bin"<br />
SndDAC_Sample6_End<br />
<br />
SndDAC_Sample3:<br />
BINCLUDE "sound/DAC/Sample 3.bin"<br />
SndDAC_Sample3_End<br />
<br />
SndDAC_Sample4:<br />
BINCLUDE "sound/DAC/Sample 4.bin"<br />
SndDAC_Sample4_End<br />
<br />
SndDAC_Sample7:<br />
BINCLUDE "sound/DAC/Sample 7.bin"<br />
SndDAC_Sample7_End<br />
<br />
SndDAC_End<br />
<br />
if SndDAC_End - SndDAC_Start > $8000<br />
fatal "DAC samples must fit within $8000 bytes, but you have $\{SndDAC_End-SndDAC_Start } bytes of DAC samples."<br />
endif<br />
if SndDAC_End - SndDAC_Start > Size_of_DAC_samples<br />
fatal "Size_of_DAC_samples = $\{Size_of_DAC_samples}, but you have $\{SndDAC_End-SndDAC_Start} bytes of DAC samples."<br />
endif<br />
<br />
; ---------------------------------------------------------------------------<br />
; Music pointers<br />
; ---------------------------------------------------------------------------<br />
align $8000<br />
<br />
; loc_F0000:<br />
MusicPoint1:<br />
MusPtr_Continue: rom_ptr_z80 Mus_Continue-MusicPoint2<br />
<br />
<br />
Mus_Continue: BINCLUDE "sound/music/Continue.bin"<br />
<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ----------------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ----------------------------------------------------------------------------------<br />
; the PCM data has to line up with the end of the bank.<br />
cnop -Size_of_SEGA_sound, $8000<br />
<br />
; -------------------------------------------------------------------------------<br />
; Sega Intro Sound<br />
; 8-bit unsigned raw audio at 16Khz<br />
; -------------------------------------------------------------------------------<br />
; loc_F1E8C:<br />
Snd_Sega: BINCLUDE "sound/PCM/SEGA.bin"<br />
Snd_Sega_End:<br />
<br />
if Snd_Sega_End - Snd_Sega > $8000<br />
fatal "Sega sound must fit within $8000 bytes, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
if Snd_Sega_End - Snd_Sega > Size_of_SEGA_sound<br />
fatal "Size_of_SEGA_sound = $\{Size_of_SEGA_sound}, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
<br />
; ------------------------------------------------------------------------------<br />
; Music pointers<br />
; ------------------------------------------------------------------------------<br />
align $8000<br />
soundBankStart := *<br />
<br />
; loc_F8000:<br />
MusicPoint2:<br />
MusPtr_CNZ_2P: rom_ptr_z80 Mus_CNZ_2P<br />
MusPtr_EHZ: rom_ptr_z80 Mus_EHZ<br />
MusPtr_MTZ: rom_ptr_z80 Mus_MTZ<br />
MusPtr_CNZ: rom_ptr_z80 Mus_CNZ<br />
MusPtr_MCZ: rom_ptr_z80 Mus_MCZ<br />
MusPtr_MCZ_2P: rom_ptr_z80 Mus_MCZ_2P<br />
MusPtr_ARZ: rom_ptr_z80 Mus_ARZ<br />
MusPtr_DEZ: rom_ptr_z80 Mus_DEZ<br />
MusPtr_SpecStage: rom_ptr_z80 Mus_SpecStage<br />
MusPtr_Options: rom_ptr_z80 Mus_Options<br />
MusPtr_Ending: rom_ptr_z80 Mus_Ending<br />
MusPtr_EndBoss: rom_ptr_z80 Mus_EndBoss<br />
MusPtr_CPZ: rom_ptr_z80 Mus_CPZ<br />
MusPtr_Boss: rom_ptr_z80 Mus_Boss<br />
MusPtr_SCZ: rom_ptr_z80 Mus_SCZ<br />
MusPtr_OOZ: rom_ptr_z80 Mus_OOZ<br />
MusPtr_WFZ: rom_ptr_z80 Mus_WFZ<br />
MusPtr_EHZ_2P: rom_ptr_z80 Mus_EHZ_2P<br />
MusPtr_2PResult: rom_ptr_z80 Mus_2PResult<br />
MusPtr_SuperSonic: rom_ptr_z80 Mus_SuperSonic<br />
MusPtr_HTZ: rom_ptr_z80 Mus_HTZ<br />
MusPtr_ExtraLife: rom_ptr_z80 Mus_ExtraLife<br />
MusPtr_Title: rom_ptr_z80 Mus_Title<br />
MusPtr_EndLevel: rom_ptr_z80 Mus_EndLevel<br />
MusPtr_GameOver: rom_ptr_z80 Mus_GameOver<br />
MusPtr_Invincible: rom_ptr_z80 Mus_Invincible<br />
MusPtr_Emerald: rom_ptr_z80 Mus_Emerald<br />
MusPtr_HPZ: rom_ptr_z80 Mus_HPZ<br />
MusPtr_Drowning: rom_ptr_z80 Mus_Drowning<br />
MusPtr_Credits: rom_ptr_z80 Mus_Credits<br />
<br />
; loc_F803C:<br />
Mus_HPZ: BINCLUDE "sound/music/HPZ.bin"<br />
Mus_Drowning: BINCLUDE "sound/music/Drowning.bin"<br />
Mus_Invincible: BINCLUDE "sound/music/Invincible.bin"<br />
Mus_CNZ_2P: BINCLUDE "sound/music/CNZ_2p.bin"<br />
Mus_EHZ: BINCLUDE "sound/music/EHZ.bin"<br />
Mus_MTZ: BINCLUDE "sound/music/MTZ.bin"<br />
Mus_CNZ: BINCLUDE "sound/music/CNZ.bin"<br />
Mus_MCZ: BINCLUDE "sound/music/MCZ.bin"<br />
Mus_MCZ_2P: BINCLUDE "sound/music/MCZ_2p.bin"<br />
Mus_ARZ: BINCLUDE "sound/music/ARZ.bin"<br />
Mus_DEZ: BINCLUDE "sound/music/DEZ.bin"<br />
Mus_SpecStage: BINCLUDE "sound/music/SpecStg.bin"<br />
Mus_Options: BINCLUDE "sound/music/Options.bin"<br />
Mus_Ending: BINCLUDE "sound/music/Ending.bin"<br />
Mus_EndBoss: BINCLUDE "sound/music/End_Boss.bin"<br />
Mus_CPZ: BINCLUDE "sound/music/CPZ.bin"<br />
Mus_Boss: BINCLUDE "sound/music/Boss.bin"<br />
Mus_SCZ: BINCLUDE "sound/music/SCZ.bin"<br />
Mus_OOZ: BINCLUDE "sound/music/OOZ.bin"<br />
Mus_WFZ: BINCLUDE "sound/music/WFZ.bin"<br />
Mus_EHZ_2P: BINCLUDE "sound/music/EHZ_2p.bin"<br />
Mus_2PResult: BINCLUDE "sound/music/2player results screen.bin"<br />
Mus_SuperSonic: BINCLUDE "sound/music/Supersonic.bin"<br />
Mus_HTZ: BINCLUDE "sound/music/HTZ.bin"<br />
Mus_Title: BINCLUDE "sound/music/Title screen.bin"<br />
Mus_EndLevel: BINCLUDE "sound/music/End of level.bin"<br />
<br />
; The following act mostly like sound effects<br />
; despite being listed with the music.<br />
; This means they're uncompressed format with absolute pointers<br />
; instead of compressed with relative pointers.<br />
; Because they have absolute pointers,<br />
; they have to be assembled rather than BINCLUDE'd.<br />
; See below (right before Sound20) for other notes<br />
; about the sound format that apply to these too.<br />
<br />
;Mus_ExtraLife: BINCLUDE "sound/music/Extra life.bin"<br />
Mus_ExtraLife: dc.w z80_ptr(Mus_EL_Voices),$0603,$02CD<br />
dc.w z80_ptr(Mus_EL_DAC),$0000<br />
dc.w z80_ptr(Mus_EL_FM1),$E810<br />
dc.w z80_ptr(Mus_EL_FM2),$E810<br />
dc.w z80_ptr(Mus_EL_FM3),$E810<br />
dc.w z80_ptr(Mus_EL_FM4),$E810<br />
dc.w z80_ptr(Mus_EL_FM5),$E810<br />
dc.w z80_ptr(Mus_EL_PSG1),$D008,$0005<br />
dc.w z80_ptr(Mus_EL_PSG2),$DC08,$0005<br />
dc.w z80_ptr(Mus_EL_PSG3),$DC00,$0004<br />
Mus_EL_FM4: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM1: dc.b $E0,$80<br />
+ dc.b $EF,$00,$E8,$06,$D9,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$DB,$09,$D7,$D6,$06,$D9,$18,$F2<br />
Mus_EL_FM2: dc.b $EF,$01,$E8,$06,$E2,$01,$D6,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$D7,$09,$D4,$D2,$06,$D6,$18,$E2,$01,$F2<br />
Mus_EL_FM5: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM3: dc.b $E0,$80<br />
+ dc.b $EF,$02,$BA,$0C,$80,$06,$BA,$B8,$80,$03<br />
dc.b $B8,$06,$80,$03,$B8,$06,$BA,$18,$F2<br />
Mus_EL_PSG1: dc.b $E8,$06,$D6,$06,$03,$03,$06,$06,$E8,$00,$D7,$09<br />
dc.b $D4,$D2,$06,$D6,$18<br />
Mus_EL_PSG2:<br />
Mus_EL_PSG3: dc.b $F2<br />
Mus_EL_DAC: dc.b $88,$12,$06,$8B,$09,$09,$06,$88,$06,$8A,$88,$8A<br />
dc.b $88,$0C,$E4<br />
Mus_EL_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
<br />
<br />
;Mus_GameOver: BINCLUDE "sound/music/Game over.bin"<br />
Mus_GameOver: dc.w z80_ptr(MusGO_Voices),$0603,$02F2<br />
dc.w z80_ptr(MusGOver_DAC),$0000<br />
dc.w z80_ptr(MusGOver_FM1),$E80A<br />
dc.w z80_ptr(MusGOver_FM2),$F40F<br />
dc.w z80_ptr(MusGOver_FM3),$F40F<br />
dc.w z80_ptr(MusGOver_FM4),$F40D<br />
dc.w z80_ptr(MusGOver_FM5),$DC16<br />
dc.w z80_ptr(MusGOver_PSG),$D003,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC06,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC00,$0004<br />
MusGOver_FM1: dc.b $EF,$00<br />
dc.b $F0,$20,$01,$04,$05<br />
dc.b $80,$0C,$CA,$12,$80,$06,$CA,$80,$CB,$12,$C8,$1E<br />
dc.b $CA,$06,$80,$CA,$80,$CA,$80,$C6,$80,$C4,$12,$C8<br />
dc.b $0C,$80,$12,$C9,$04,$80,$C9,$C8,$06,$80,$C7,$80<br />
dc.b $C6,$80<br />
dc.b $F0,$28,$01,$18,$05<br />
dc.b $C5,$60,$F2<br />
MusGOver_FM2: dc.b $EF,$01,$80,$01,$D9,$06,$80,$D9,$80,$D6,$80,$D6<br />
dc.b $80,$D7,$15,$D7,$1B,$D9,$06,$80,$D9,$80,$D6,$80<br />
dc.b $D6,$80,$DC,$15,$DC,$1B,$F2<br />
MusGOver_FM3: dc.b $EF,$01,$D6,$0C,$D6,$D2,$D2,$D4,$15,$D4,$1B,$D6<br />
dc.b $0C,$D6,$D2,$D2,$D7,$15,$D7,$1B,$F2<br />
MusGOver_FM4: dc.b $EF,$02,$E2,$01,$AE,$06,$80,$AE,$80,$A9,$80,$A9<br />
dc.b $80,$AC,$15,$AB,$0C,$AC,$03,$AB,$0C,$AE,$06,$80<br />
dc.b $AE,$80,$A9,$80,$A9,$80,$B3,$15,$B2,$0C,$B3,$03<br />
dc.b $B2,$0C,$AE,$04,$80,$AE,$AD,$06,$80,$AC,$80,$AB<br />
dc.b $80,$AB,$60,$E2,$01,$F2<br />
MusGOver_FM5: dc.b $EF,$03,$80,$30,$D7,$12,$80,$03,$D7,$1B,$80,$30<br />
dc.b $DC,$12,$80,$03,$DC,$1B<br />
MusGOver_PSG: dc.b $F2<br />
MusGOver_DAC: dc.b $80,$18,$81<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(MusGOver_DAC)<br />
dc.b $F2<br />
MusGO_Voices: dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $3C,$33,$73,$30,$70,$94,$96,$9F,$9F,$12,$14,$00<br />
dc.b $0F,$04,$04,$0A,$0D,$2F,$4F,$0F,$2F,$33,$1A,$80,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$1C,$27,$28,$80<br />
dc.b $1F,$66,$53,$31,$22,$1C,$1F,$98,$1F,$12,$0F,$0F<br />
dc.b $0F,$00,$00,$00,$00,$FF,$0F,$0F,$0F,$8C,$8A,$8D,$8B<br />
<br />
;Mus_Emerald: BINCLUDE "sound/music/Got an emerald.bin"<br />
Mus_Emerald: dc.w z80_ptr(MusEmrldVoices),$0703,$01D5<br />
dc.w z80_ptr(MusEmeraldDAC),$0000<br />
dc.w z80_ptr(MusEmeraldFM1),$F408<br />
dc.w z80_ptr(MusEmeraldFM2),$F408<br />
dc.w z80_ptr(MusEmeraldFM3),$F407<br />
dc.w z80_ptr(MusEmeraldFM4),$F416<br />
dc.w z80_ptr(MusEmeraldFM5),$F416<br />
dc.w z80_ptr(MusEmeraldFM6),$F416<br />
dc.w z80_ptr(MusEmeraldPSG1),$F402,$0004<br />
dc.w z80_ptr(MusEmeraldPSG2),$F402,$0005<br />
dc.w z80_ptr(MusEmeraldPSG3),$F400,$0004<br />
MusEmeraldFM3: dc.b $E1,$02<br />
MusEmeraldFM1: dc.b $EF,$00,$C1,$06,$C4,$C9,$CD,$0C,$C9,$D0,$2A,$F2<br />
MusEmeraldFM2: dc.b $EF,$00,$BD,$06,$C1,$C4,$C9,$0C,$C6,$CB,$2A,$F2<br />
MusEmeraldFM4: dc.b $EF,$01,$C1,$0C,$C1,$06,$C4,$06,$80,$C4,$80,$C9<br />
dc.b $2A,$F2<br />
MusEmeraldFM5: dc.b $EF,$01,$C9,$0C,$C9,$06,$CD,$06,$80,$CD,$80,$D0<br />
dc.b $2A,$F2<br />
MusEmeraldFM6: dc.b $EF,$01,$C4,$0C,$C4,$06,$C9,$06,$80,$C9,$80,$CD<br />
dc.b $2A,$F2<br />
MusEmeraldPSG2: dc.b $80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusEmeraldPSG1: dc.b $E2,$01,$80,$02,$80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
MusEmeraldPSG3:<br />
MusEmeraldDAC: dc.b $E2,$01,$F2<br />
MusEmrldVoices: dc.b $04,$35,$54,$72,$46,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$1D,$14,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$07,$07,$1A,$16,$80,$80<br />
<br />
;Mus_Credits: BINCLUDE "sound/music/Credits.bin"<br />
Mus_Credits: dc.w z80_ptr(MusCred_Voices),$0603,$01F0<br />
dc.w z80_ptr(MusCred_DAC),$0000<br />
dc.w z80_ptr(MusCred_FM1),$000E<br />
dc.w z80_ptr(MusCred_FM2),$180A<br />
dc.w z80_ptr(MusCred_FM3),$0014<br />
dc.w z80_ptr(MusCred_FM4),$0016<br />
dc.w z80_ptr(MusCred_FM5),$0C16<br />
dc.w z80_ptr(MusCred_PSG1),$E806,$000B<br />
dc.w z80_ptr(MusCred_PSG2),$DC07,$000B<br />
dc.w z80_ptr(MusCred_PSG3),$0002,$0003<br />
MusCred_FM1: dc.b $E9,$F4,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$0C,$E6,$02<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$03,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $AE,$06,$A2,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $E6,$FD<br />
- dc.b $EF,$00,$B7,$06,$BA,$F8<br />
dc.w z80_ptr(MusCreditsDA13)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$06,$80,$80,$30,$80,$EF,$0B,$E9,$18,$E6,$02<br />
- dc.b $94,$0C,$8F,$92,$8F,$06,$94,$05,$94,$07,$06,$8F<br />
dc.b $0C,$92,$8F<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$30,$80,$EF,$0E,$E6,$FF,$E9,$E8,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$91,$94,$06,$80,$18,$96,$12,$9A,$06,$80<br />
dc.b $80,$12,$8F,$93,$08,$80,$16,$96,$06,$91,$92,$94<br />
dc.b $96,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$9D,$9A,$08,$80,$16,$96,$12,$9D,$08,$80<br />
dc.b $04,$EF,$12<br />
dc.b $F0,$18,$01,$0A,$04<br />
dc.b $80,$30,$80,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$24,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$EF,$01,$E9,$F4,$E6,$FA,$F4<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $80,$03,$80,$60,$E6,$04,$E1,$01,$EF,$1B,$E6,$06<br />
dc.b $C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80,$EF<br />
dc.b $1C,$E6,$FA,$E8,$00,$BC,$0C,$12,$06,$EF,$1B,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$80,$E8,$06,$C4,$06,$06,$C6,$C4,$E8<br />
dc.b $00,$C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80<br />
dc.b $E8,$00,$EF,$1C,$E6,$FA,$C1,$C4,$C1,$EF,$1A,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$06,$80,$80,$24,$80,$30,$80,$EF,$1F<br />
dc.b $E9,$18,$E6,$F7,$E1,$00,$80,$06,$AC,$AE,$80,$B1<br />
dc.b $80,$B3,$80,$B4,$80,$B3,$80,$B1,$B3,$80,$B1,$E9<br />
dc.b $F4,$EF,$00,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC<br />
dc.b $06,$AE,$B1,$80,$B4,$B1,$80,$B1,$E9,$0C,$EF,$1F<br />
dc.b $80,$06,$B8,$12,$B4,$06,$80,$B3,$80,$B4,$80,$B3<br />
dc.b $80,$B1,$AE,$80,$B1,$E9,$F4,$EF,$00,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$30,$80,$EF,$21,$E9,$0C,$80,$30,$80<br />
dc.b $08,$A0,$04,$9E,$0C,$9D,$9B,$99,$08,$04,$91,$0C<br />
dc.b $92,$93,$94,$98,$99,$9B,$9D,$98,$95,$93,$91,$98<br />
dc.b $9D,$91,$96,$98,$99,$98,$96,$99,$9D,$96,$95,$97<br />
dc.b $99,$97,$95,$96,$97,$98,$99,$98,$99,$9B,$9D,$08<br />
dc.b $04,$98,$0C,$91,$95,$96,$98,$99,$9D,$9E,$08,$96<br />
dc.b $10,$97,$0C,$98,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$08,$99,$04,$EF,$23,$E9,$E8,$E6,$07,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $80,$60,$E6,$FB,$80,$0C,$CD,$06,$80,$D4,$CD,$06<br />
dc.b $80,$0C,$CD,$06,$80,$D4,$CD,$06,$80,$18,$E6,$05<br />
dc.b $80,$0C,$AE,$80,$AE,$80,$24,$E1,$02,$E6,$08,$A2<br />
dc.b $6C,$F2<br />
MusCreditsD9D1: dc.b $A5,$0C,$B1,$06,$80,$B1,$0C,$AC,$B3,$12,$B1,$0C<br />
dc.b $AC,$06,$AE,$B1,$A7,$0C,$B3,$06,$80,$B3,$0C,$AE<br />
dc.b $B5,$12,$B3,$06,$80,$AE,$B0,$B3,$A3,$0C,$AF,$06<br />
dc.b $80,$AF,$0C,$AA,$B1,$12,$AF,$0C,$AA,$06,$AC,$AF<br />
dc.b $A2,$0C,$AE,$06,$A2,$A4,$0C,$B0,$06,$A4,$A5,$0C<br />
dc.b $B1,$06,$A5,$A2,$0C,$E3<br />
MusCreditsDA13: dc.b $BE,$0C,$BC,$06,$BA,$BC,$BA,$04,$E7,$08,$BA,$04<br />
dc.b $80,$0E,$EF,$07,$B7,$06,$B2,$B5,$B7,$EF,$00,$B7<br />
dc.b $BA,$BE,$0C,$BC,$06,$BA,$BC,$BA,$0C,$BC,$04,$80<br />
dc.b $08,$BA,$04,$80,$08,$BC,$04,$80,$08,$BE,$12,$BA<br />
dc.b $06,$B7,$80,$B7,$80,$24,$EF,$07,$B7,$06,$B2,$B5<br />
dc.b $B7,$80,$0C,$80,$30,$BE,$06,$BE,$BA,$04,$80,$08<br />
dc.b $BC,$06,$BE,$E3<br />
MusCreditsDA5F: dc.b $C3,$01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$02,$C3<br />
dc.b $01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01<br />
dc.b $E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$FC,$C3,$01,$E7<br />
dc.b $C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01,$E7,$C4<br />
dc.b $E7,$C5,$E7,$C6,$2D,$E7,$30,$E7,$30,$E3<br />
MusCreditsDA99: dc.b $A7,$0C,$B3,$06,$80,$B1,$80,$B3,$0C,$A7,$03,$80<br />
dc.b $06,$A7,$03,$B3,$0C,$B1,$B3,$09,$AE,$03,$AC,$06<br />
dc.b $80,$AC,$0C,$AE,$06,$80,$AE,$0C,$AF,$06,$80,$27<br />
dc.b $E3<br />
MusCreditsDABE: dc.b $80,$0C,$CA,$15,$80,$03,$CA,$06,$80,$CB,$0F,$80<br />
dc.b $03,$C8,$18,$80,$06,$CA,$80,$CA,$80,$CA,$80,$C6<br />
dc.b $80,$C4,$0F,$80,$03,$C8,$18,$80,$06<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E3<br />
MusCreditsDAE5: dc.b $80,$12,$94,$97,$06,$80,$18,$99,$12,$94,$06,$80<br />
dc.b $80,$12,$92,$96,$06,$80,$18,$97,$12,$92,$06,$80<br />
dc.b $E3<br />
MusCreditsDAFE: dc.b $80,$99,$80,$99,$80,$9E,$80,$E3<br />
MusCreditsDB06: dc.b $EF,$07,$80,$54,$C7,$04,$C8,$C9,$CA,$24,$CD,$D2<br />
dc.b $18,$D0,$24,$CF,$CB,$18,$CB,$0C,$CA,$80,$CD,$60<br />
dc.b $E7,$3C,$CA,$24,$CD,$D2,$18,$D4,$24,$D0,$D4,$18<br />
dc.b $D4,$24,$D6,$60,$E7,$3C,$E3<br />
MusCred_FM2: dc.b $80,$60,$EF,$01,$E8,$06,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $85,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8A,$87,$88,$89,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $88<br />
dc.b $F7,$00,$0B<br />
dc.w z80_ptr(-)<br />
- dc.b $8A<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$E6,$FC,$8A,$8B,$8C,$E6,$04,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$8D,$8A,$8B,$8C,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8D,$06,$99,$E8,$00,$8A,$0C,$8B,$8C,$E9,$E8,$E6<br />
dc.b $0C,$EF,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E6,$F9,$EF,$08<br />
MusCreditsDB93: dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $06,$9C,$12,$9D,$0C,$9E,$F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9D,$04,$80,$08,$9D,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $9C,$04,$80,$08,$9C,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(MusCreditsDB93)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$13,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$60,$EF,$0F,$E6,$F3<br />
dc.b $F0,$04,$02,$03,$02<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$30,$E7,$18,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$EF,$13,$E6,$F5,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$0C,$A9,$08,$A1,$10,$F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$08,$A9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E1,$02,$E9,$F4,$E6,$0A,$F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$EF,$1B,$E1,$00<br />
dc.b $E8,$06,$80,$3C,$B8,$06,$06,$BA,$BD,$BD,$BA,$EF<br />
dc.b $1D,$E6,$FA,$E8,$00,$F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $EF,$1C,$BD,$EF,$1D,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $80,$30,$80,$EF,$01,$E9,$18,$E6,$F9<br />
- dc.b $99,$0C,$A5,$06,$80,$96,$0C,$A2,$06,$80,$97,$0C<br />
dc.b $A3,$06,$80,$98,$0C,$A8,$06,$A7,$99,$06,$99,$12<br />
dc.b $96,$0C,$A2,$06,$80,$97,$0C,$A3,$06,$80,$98,$0C<br />
dc.b $A4,$06,$80<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$22,$E9,$E8,$E6,$03<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$AC,$04,$AE,$08,$B1,$04,$B5,$30,$80,$0C<br />
dc.b $B5,$08,$80,$04,$B6,$08,$B5,$10,$B9,$08,$04,$80<br />
dc.b $08,$B5,$34,$80,$0C,$B5,$BA,$08,$04,$80,$08,$B5<br />
dc.b $04,$B1,$24,$80,$0C,$B1,$08,$80,$04,$B3,$08,$B1<br />
dc.b $04,$B4,$0C,$B3,$08,$B1,$4C,$80,$0C,$B5,$08,$80<br />
dc.b $04,$B6,$08,$80,$04,$B5,$08,$80,$04,$B9,$08,$04<br />
dc.b $80,$08,$B5,$1C,$80,$0C,$BA,$18,$BC,$08,$BA,$04<br />
dc.b $BD,$18,$80,$0C,$BA,$04,$80,$08,$B8,$18,$B5,$B1<br />
dc.b $B3,$0C,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$0C,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$14,$B1,$04,$E6,$FF,$EF,$24,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $AC,$12,$AB,$0C,$AC,$06,$AB,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $B3,$12,$B2,$0C,$B3,$06,$B2,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $AC,$06,$80,$A9,$80,$AA,$80,$AB,$80,$AC,$AC,$A9<br />
dc.b $80,$AA,$80,$AC,$80,$A9,$80,$A9,$80,$AD,$80,$AD<br />
dc.b $80,$B0,$80,$B0,$80,$B3,$80,$B3,$80,$80,$0C,$A2<br />
dc.b $12,$80,$06,$A2,$12,$AD,$AE,$06,$80,$E6,$FD,$A2<br />
dc.b $6C,$F2<br />
MusCreditsDD59: dc.b $80,$0C,$C4,$06,$80,$C6,$80,$C4,$80,$C9,$80,$C9<br />
dc.b $80,$CB,$CD,$80,$0C,$80,$CB,$18,$C6,$06,$80,$C9<br />
dc.b $C9,$80,$CB,$0C,$80,$12,$80,$1E,$C7,$06,$C9,$C7<br />
dc.b $CB,$80,$C9,$80,$C7,$C9,$80,$C6,$E7,$C6,$30,$E7<br />
dc.b $18,$80,$18,$E3<br />
MusCreditsDD8D: dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
dc.b $06,$AB,$9F,$0C,$E3<br />
MusCreditsDD9D: dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$B6,$80,$18<br />
dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$30,$E7,$E3<br />
MusCreditsDDB5: dc.b $BF,$06,$BD,$BF,$12,$C2,$BF,$0C,$C1,$80,$06,$12<br />
dc.b $C4,$0C,$C2,$06,$80,$C9,$C6,$3C,$80,$06,$0C,$C7<br />
dc.b $12,$C6,$C4,$06,$C2,$C1,$18,$E3<br />
MusCreditsDDD5: dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$E3<br />
MusCreditsDDEA: dc.b $A2,$0C,$AE,$AC,$08,$AE,$04,$AC,$08,$A9,$04,$A7<br />
dc.b $08,$04,$E3<br />
MusCreditsDDF9: dc.b $80,$0C,$B1,$AE,$06,$06,$AC,$0C,$80,$B0,$AE,$06<br />
dc.b $06,$AC,$0C,$E3<br />
MusCreditsDE09: dc.b $AE,$AC,$06,$06,$AA,$0C,$80,$AC,$0C,$06,$06,$AE<br />
dc.b $AC,$E3<br />
MusCreditsDE17: dc.b $BA,$04,$80,$08,$B8,$18,$B5,$B1,$E3<br />
MusCreditsDE20: dc.b $AE,$06,$80,$AE,$80,$A9,$80,$A9,$80,$E3<br />
MusCreditsDE2A: dc.b $8A,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $E3<br />
MusCred_FM3: dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$18,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $B8,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $BD,$3C,$E9,$E8,$E6,$02,$E1,$03,$EF,$04,$E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$09,$E9,$0C,$E6,$FD,$E0,$40<br />
dc.b $F0,$06,$01,$05,$04<br />
dc.b $E1,$00<br />
- dc.b $9F,$0C,$AB,$06,$80,$A9,$80,$AB,$9F,$80,$9F,$AB<br />
dc.b $80,$A9,$80,$AB,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $9D,$0C,$A9,$06,$80,$A8,$80,$A9,$9C,$80,$9C,$A8<br />
dc.b $80,$A6,$80,$A8,$0C<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0D,$E6,$FB,$E0,$C0,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0F,$E0,$80,$E6,$0B,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$48,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$0C<br />
dc.b $F0,$18,$01,$03,$04<br />
dc.b $E6,$F3,$E0,$C0,$EF,$14,$A2,$14,$A4,$04,$A5,$04<br />
dc.b $80,$08,$A9,$04,$80,$08,$A8,$04,$80,$08,$A9,$04<br />
dc.b $80,$08,$AC,$08,$A9,$10<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$18,$E9,$F4,$E6,$08,$F4,$E0,$40,$80,$60,$80<br />
dc.b $30,$C6,$06,$80,$C2,$0C,$C4,$09,$C2,$03,$BF,$0C<br />
dc.b $80,$60,$80,$3C,$80,$60,$EF,$1B,$E6,$FB,$E0,$C0<br />
dc.b $E8,$06,$C4,$06,$06,$C6,$C9,$C9,$C6,$E8,$00,$CD<br />
dc.b $0C,$E8,$06,$C9,$06,$C6,$C9,$0C,$80,$80,$12,$EF<br />
dc.b $1C,$E8,$00,$BD,$BA,$0C,$E8,$06,$EF,$1B,$CE,$06<br />
dc.b $CE,$80,$CE,$80,$CE,$E8,$00,$CF,$0C,$D0,$80,$E8<br />
dc.b $06,$D0,$06,$06,$D2,$D0,$E8,$00,$CD,$0C,$E8,$06<br />
dc.b $C9,$06,$C6,$C9,$0C,$E8,$00,$EF,$1C,$80,$1E,$C2<br />
dc.b $0C,$C2,$BD,$06,$80,$60,$80,$60,$EF,$00,$E9,$18<br />
dc.b $80,$60,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC,$06<br />
dc.b $AE,$B1,$80,$B4,$B1,$80,$B1,$80,$60,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$60,$EF,$22,$E9,$DC,$E6,$FF,$E0,$80<br />
dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $CD,$30,$CB,$18,$CD,$0C,$CB,$C9,$30,$CE,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$FC,$80,$C4,$80,$C4,$80,$C6,$18,$08,$C4,$04<br />
dc.b $E9,$0C,$E6,$FF,$E0,$C0,$EF,$00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $CB,$12,$CB,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $D0,$12,$D0,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$CB,$12,$80,$06,$CB,$80,$CA,$12,$CB,$CA<br />
dc.b $0C,$C5,$18,$C8,$CB,$D1,$80,$0C,$CD,$80,$CD,$12<br />
dc.b $CC,$CD,$06,$80,$E6,$F8,$EF,$01,$E1,$03,$A2,$6C<br />
dc.b $F2<br />
MusCreditsDFF2: dc.b $80,$60,$BC,$06,$BD,$BC,$B8,$BA,$B6,$0C,$B8,$B3<br />
dc.b $B3,$06,$B6,$0C,$B8,$E3<br />
MusCreditsE004: dc.b $80,$0C,$CD,$04,$80,$10,$CD,$04,$80,$0C,$CD,$0C<br />
dc.b $CE,$08,$CD,$04,$80,$18,$80,$0C,$CB,$04,$80,$10<br />
dc.b $CB,$04,$80,$0C,$CB,$0C,$CD,$08,$CB,$04,$80,$18<br />
- dc.b $80,$0C,$C9,$04,$80,$10,$C9,$04,$80,$0C,$C9,$0C<br />
dc.b $CB,$08,$C9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E3<br />
MusCreditsE040: dc.b $80,$18,$B8,$0B,$80,$0D,$BA,$0C,$0B,$80,$19,$BD<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE051: dc.b $80,$0C,$C4,$80,$C4,$80,$C6,$80,$C6,$E3<br />
MusCreditsE05B: dc.b $CD,$06,$80,$CD,$80,$CA,$80,$CA,$80,$E3<br />
MusCreditsE065: dc.b $EF,$05,$E9,$F4,$C6,$60,$CB,$CD,$E7,$CD,$C6,$60<br />
dc.b $D0,$D0,$24,$D2,$60,$E7,$3C,$E3<br />
MusCred_FM4: dc.b $80,$60,$E9,$FB,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$1D,$E6,$02,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B5,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B8,$3C,$E6,$06,$EF,$05<br />
dc.b $F0,$02,$01,$FE,$04<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E9,$F4,$E6,$F7<br />
dc.b $F0,$0C,$01,$FB,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$25,$C3,$06,$C3,$80,$0C,$C3,$06,$C3,$05,$80<br />
dc.b $0D,$C3,$06,$C5,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$05,$F4,$E1,$02,$E0<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$0C,$80,$60,$EF,$10,$E6,$F7,$E1,$00,$E0<br />
dc.b $40,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $B3,$B7,$06,$AE,$0C,$B1,$B3,$B7,$06,$80,$B7,$AE<br />
dc.b $0C,$B1,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $EF,$15,$E6,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
- dc.b $EF,$14,$80,$4E,$E0,$40,$A1,$12,$A2,$06,$E0,$C0<br />
dc.b $EF,$16,$80,$30,$80,$06,$BA,$08,$B9,$04,$B8,$08<br />
dc.b $B7,$04,$B6,$08,$B5,$04<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E9,$F4,$E6,$02,$E0,$C0<br />
dc.b $F0,$01,$01,$03,$03<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$1E,$E0,$40,$E6,$FE,$E9,$F4,$F4,$E8<br />
dc.b $06,$80,$0C,$C1,$06,$12,$18,$C4,$06,$12,$0C,$EF<br />
dc.b $1C,$E0,$C0,$E6,$FA,$E8,$00,$C6,$E8,$06,$E6,$06<br />
dc.b $EF,$1E,$E0,$40,$C2,$06,$12,$18,$C4,$06,$12,$18<br />
dc.b $C1,$06,$12,$18,$C4,$06,$12,$0C,$EF,$1A,$E0,$C0<br />
dc.b $E9,$0C,$C6,$06,$C6,$80,$C6,$80,$C6,$E8,$00,$C7<br />
dc.b $0C,$C8,$06,$EF,$1E,$E0,$40,$E9,$F4,$E8,$06,$80<br />
dc.b $C4,$06,$12,$0C,$80,$60,$EF,$20,$E9,$18,$E6,$FA<br />
dc.b $E0,$C0,$E8,$00,$B4,$03,$E7,$B6,$5D,$B3,$03,$E7<br />
dc.b $B5,$5D,$B1,$03,$E7,$B3,$5D,$B3,$03,$E7,$B5,$5D<br />
dc.b $80,$60,$EF,$22,$E0,$40,$E9,$E8,$E6,$04,$80,$30<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $C9,$30,$C8,$18,$C9,$0C,$C8,$C6,$30,$C9,$80,$0C<br />
dc.b $C1,$80,$C1,$80,$C2,$80,$C2,$E6,$04,$80,$C1,$80<br />
dc.b $C1,$80,$C2,$80,$C2,$E6,$FC,$80,$C1,$80,$C1,$80<br />
dc.b $C2,$18,$08,$C1,$04,$E9,$0C,$E6,$FF,$E0,$C0,$EF<br />
dc.b $00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $C8,$12,$C8,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $CB,$12,$CB,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E1,$03,$E6,$08,$F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $E6,$F0,$EF,$01<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $A2,$6C,$F2<br />
MusCreditsE22D: dc.b $A2,$14,$A4,$04,$A5,$04,$80,$08,$A9,$04,$80,$08<br />
dc.b $A8,$04,$80,$08,$A9,$04,$80,$08,$AC,$08,$A9,$10<br />
dc.b $E3<br />
MusCreditsE246: dc.b $80,$0C<br />
dc.b $C9,$04,$80,$10<br />
dc.b $C9,$04,$80,$0C<br />
dc.b $C9,$0C<br />
dc.b $CB,$08<br />
dc.b $C9,$04,$80,$18,$80,$0C<br />
dc.b $C8,$04,$80,$10<br />
dc.b $C8,$04,$80,$0C<br />
dc.b $C8,$0C<br />
dc.b $C9,$08<br />
dc.b $C8,$04,$80,$18,$80,$0C<br />
<br />
if 1==1<br />
; this part of the original credits music (CNZ PSG) sounds buggy (dissonant)<br />
dc.b $C6,$04,$80,$10<br />
dc.b $C6,$04,$80,$0C<br />
dc.b $C6,$0C<br />
dc.b $C8,$08<br />
dc.b $C6,$04,$80,$18,$80,$0C<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $C7,$08<br />
else<br />
; replace the above block of notes with this to fix it.<br />
; (I'm not sure why, but the notes $C6 and $C7 are broken here,<br />
; so I've replaced them with pitch-shifted $C8s)<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$10 ; $C6<br />
dc.b $C8,$04,$80,$0C ; $C6<br />
dc.b $C8,$0C ; $C6<br />
dc.b $E1,0<br />
dc.b $C8,$08<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$24 ; $C6<br />
dc.b $E1,0<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $E1,-32<br />
dc.b $C8,$08 ; $C7<br />
dc.b $E1,0<br />
endif<br />
<br />
dc.b $C5,$04,$80,$18<br />
dc.b $E3<br />
MusCreditsE28F: dc.b $EF,$25,$80,$0C,$D0,$D4,$D7,$DB,$0C,$80,$06,$DB<br />
dc.b $0C,$DC,$06,$DB,$0C,$DD,$60,$DE,$0C,$80,$DE,$80<br />
dc.b $80,$06,$DD,$12,$DE,$0C,$E3<br />
MusCreditsE2AE: dc.b $80,$18,$B5,$0B,$80,$0D,$B7,$0C,$0B,$80,$19,$BA<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE2BF: dc.b $C3,$05,$80,$13,$C3,$12,$C3,$05,$E3<br />
MusCreditsE2C8: dc.b $CA,$06,$80,$CA,$80,$C6,$80,$C6,$80,$E3<br />
MusCreditsE2D2: dc.b $AF,$0C,$B3,$06,$B6,$0C,$AF,$B1,$06,$80,$B1,$0C<br />
dc.b $B5,$06,$B8,$0C,$B1,$06,$80,$B6,$0C,$BA,$06,$B1<br />
dc.b $0C,$B5,$B6,$BA,$06,$80,$BA,$AF,$0C,$B3,$B5,$B8<br />
dc.b $06,$B2,$0C,$B3,$B5,$B8,$06,$80,$B8,$B2,$0C,$B5<br />
dc.b $E3<br />
MusCred_FM5: dc.b $E9,$E8,$E6,$F8,$E1,$05,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$18,$E6,$08,$E1,$00,$EF,$02<br />
dc.b $F0,$0C,$01,$FC,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B1,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B5,$3C,$E9,$F4,$E6,$07<br />
dc.b $F0,$30,$01,$04,$04<br />
dc.b $EF,$06<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E6,$F6<br />
dc.b $F0,$0C,$01,$05,$04<br />
dc.b $E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$25,$C6,$06,$C6,$80,$0C,$C6,$06,$C6,$05,$80<br />
dc.b $0D,$C6,$06,$C8,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$E6,$05,$F4,$80,$01,$EF,$0C,$E1<br />
dc.b $FE,$E0,$40,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $23,$80,$0C,$80,$60,$EF,$11,$E9,$F4,$E6,$F4,$E1<br />
dc.b $00,$E0,$C0<br />
dc.b $F0,$06,$01,$06,$05<br />
dc.b $80,$60,$80,$30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60<br />
dc.b $80,$06,$CB,$80,$CB,$C9,$80,$C9,$80,$C7,$80,$C7<br />
dc.b $80,$C6,$03,$80,$C6,$80,$09,$80,$06,$80,$60,$80<br />
dc.b $30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60,$EF,$16,$E9<br />
dc.b $0C,$E6,$04,$F4,$E0,$80,$80,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
dc.b $80,$2F,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$30,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$60,$EF,$19,$E9,$F4,$E0,$C0,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$27,$B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$2A,$80,$60,$EF,$1E,$E9,$F4,$E8,$06<br />
- dc.b $80,$0C,$C4,$06,$12,$18,$C8,$06,$12,$0C,$80,$C6<br />
dc.b $06,$12,$18,$C8,$06,$12,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$20,$E8,$00,$E9,$18,$E6,$FA,$B8,$03<br />
dc.b $E7,$BA,$5D,$B6,$03,$E7,$B8,$5D,$B4,$03,$E7,$B6<br />
dc.b $5D,$B6,$03,$E7,$B8,$5D,$80,$60,$EF,$22,$E9,$F4<br />
dc.b $E6,$05<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$A7,$04,$A9,$08,$AC,$04,$B1,$30,$80,$0C<br />
dc.b $B1,$08,$80,$04,$B3,$08,$B1,$10,$B5,$08,$B5,$04<br />
dc.b $80,$08,$B0,$34,$80,$0C,$B0,$B5,$08,$04,$80,$08<br />
dc.b $B1,$04,$AE,$24,$80,$0C,$AE,$08,$80,$04,$B0,$08<br />
dc.b $AE,$04,$B1,$0C,$AF,$08,$AD,$4C,$80,$0C,$B1,$08<br />
dc.b $80,$04,$B3,$08,$80,$04,$B1,$08,$80,$04,$B5,$08<br />
dc.b $B5,$04,$80,$08,$B0,$1C,$80,$0C,$B5,$18,$B8,$08<br />
dc.b $B5,$04,$BA,$18,$80,$0C,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$04,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$F8,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$AA,$14,$A9,$04,$E6,$0C,$EF,$23,$E1,$03<br />
dc.b $E6,$F7,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E6,$09<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $F2<br />
MusCreditsE4CD: dc.b $80,$1E,$EF,$14,$A4,$12,$A5,$06,$EF,$16,$80,$30<br />
dc.b $80,$06,$BD,$08,$BC,$04,$BB,$08,$BA,$04,$B9,$08<br />
dc.b $B8,$04,$E3<br />
MusCreditsE4E8: dc.b $80,$18,$B1,$0B,$80,$0D,$B3,$0C,$0B,$80,$19,$B6<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE4F9: dc.b $C6,$05,$80,$13,$C6,$12,$C6,$05,$E3<br />
MusCreditsE502: dc.b $80,$60,$AC,$06,$80,$AC,$0C,$AE,$06,$80,$AE,$0C<br />
dc.b $AF,$06,$E3<br />
MusCred_PSG1: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG1)<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$F4,$E6,$FE,$F5,$01,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $AE,$B3,$06,$AC,$0C,$AE,$AE,$B3,$06,$80,$B3,$AB<br />
dc.b $0C,$AE,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $F5,$0B,$80,$04,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$20,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$F5,$00,$E8,$06,$E9,$F4,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$80,$C2,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$04,$80,$C2,$80,$0C,$C2,$80,$60,$F5,$08,$E9<br />
dc.b $04,$EC,$02,$E8,$06<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F0,$EC,$FF,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $E9,$18,$EC,$02,$B5,$30,$B3,$18,$B5,$0C,$B3,$B1<br />
dc.b $30,$B6,$EC,$FE,$80,$0C,$B8,$80,$B8,$80,$BA,$80<br />
dc.b $BA,$EC,$03,$C4,$18,$C1,$BD,$BF,$0C,$80,$EC,$FC<br />
dc.b $80,$B8,$80,$B8,$80,$BA,$18,$08,$B8,$04,$E9,$F4<br />
dc.b $EC,$01,$F5,$05<br />
- dc.b $80,$60<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$C8,$12,$80,$06,$C8,$80,$C6,$12,$C8,$C6<br />
dc.b $0C,$C1,$18,$C5,$C8,$CB,$80,$0C,$CA,$80,$CA,$12<br />
dc.b $C9,$CA,$06,$80,$09,$E9,$30,$EC,$FC,$F6<br />
dc.w z80_ptr(MusCreditsE770)<br />
dc.b $F2<br />
MusCreditsE618: dc.b $80,$0C,$BD,$06,$12,$18,$C4,$06,$12,$0C,$80,$C2<br />
dc.b $06,$12,$18,$C4,$06,$12,$0C,$E3<br />
MusCreditsE62C: dc.b $80,$60,$80,$0C,$C2,$80,$C2,$80,$E3<br />
MusCreditsE635: dc.b $AC,$0C,$AF,$06,$B3,$0C,$AC,$AC,$06,$80,$AC,$0C<br />
dc.b $AF,$06,$B5,$0C,$AC,$06,$80,$06,$B1,$0C,$B6,$06<br />
dc.b $AE,$0C,$B1,$B3,$B6,$06,$80,$B6,$AA,$0C,$AF,$AF<br />
dc.b $B5,$06,$AC,$0C,$AF,$B2,$B5,$06,$80,$B5,$AE,$0C<br />
dc.b $B2,$E3<br />
MusCred_PSG2: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG2)<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$0C,$EC,$FD,$F5,$04,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
dc.b $F0,$03,$02,$01,$05<br />
dc.b $F5,$0A,$E9,$E8,$EC,$02,$80,$30,$80,$80,$BD,$06<br />
dc.b $BF,$C6,$C2,$1E,$80,$60,$80,$06,$C6,$80,$C6,$C4<br />
dc.b $80,$C4,$80,$C3,$80,$C3,$80,$BF,$03,$80,$BF,$80<br />
dc.b $09,$80,$06,$80,$30,$80,$80,$BD,$06,$BF,$C6,$C2<br />
dc.b $1E,$80,$60,$F4<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$00,$EC,$FE,$E8,$06,$80,$60,$80,$0C,$BF,$80<br />
dc.b $BF,$80,$BF,$80,$BF,$80,$60,$80,$0C,$BF,$80,$BF<br />
dc.b $80,$BF,$04,$80,$BF,$80,$0C,$BF,$80,$60,$EC,$02<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F4,$EC,$FF,$E9,$E8,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $E9,$18,$EC,$02,$B1,$30,$B0,$18,$B1,$0C,$B0,$AE<br />
dc.b $30,$B1,$EC,$FE,$80,$0C,$B5,$80,$B5,$80,$B6,$80<br />
dc.b $B6,$EC,$03,$80,$B1,$80,$B1,$80,$B1,$80,$B1,$EC<br />
dc.b $FC,$80,$B1,$80,$B1,$80,$B1,$18,$08,$B1,$04,$EC<br />
dc.b $01,$E9,$18,$F5,$05,$E1,$01,$80,$60,$80,$80,$80<br />
dc.b $80,$80,$80,$0C,$CD,$06,$80,$D4,$CD,$80,$0C,$CD<br />
dc.b $06,$80,$D4,$CD,$80,$18,$80,$54,$E9,$24,$EC,$FD<br />
MusCreditsE770: dc.b $F5,$03,$80,$06<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$FF<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$01<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusCred_PSG3: dc.b $F3,$E7,$80,$60,$F5,$02<br />
- dc.b $C6,$0C,$0C,$0C,$06,$06,$0C,$0C,$06,$06,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$1F<br />
dc.w z80_ptr(-)<br />
dc.b $0C,$F5,$03,$C6,$F5,$02<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $06,$06,$06,$06<br />
dc.b $F7,$01,$04<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$04,$EC,$02<br />
- dc.b $E8,$03,$C6,$06,$06,$E8,$00,$0C<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$02,$EC,$FD<br />
- dc.b $80,$0C,$C6,$06,$80,$07,$C6,$06,$80,$11,$C6,$0C<br />
dc.b $80,$06,$C6,$0C,$80,$06,$C6,$80<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$02<br />
- dc.b $C6,$0C,$08,$04<br />
dc.b $F7,$00,$18<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$0C,$0C,$08,$04<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$04,$EC,$02<br />
- dc.b $C6,$06,$06,$0C<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EC,$FF<br />
- dc.b $F5,$01,$C6,$0C,$F5,$02,$EC,$FF,$08,$F5,$01,$EC<br />
dc.b $01,$04<br />
dc.b $F7,$00,$27<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$FF,$F5,$04<br />
- dc.b $E8,$03,$C6,$0C,$E8,$0C,$0C<br />
dc.b $F7,$00,$1E<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$03,$C6,$06,$E8,$0E,$12,$E8,$03,$0C,$E8,$0F<br />
dc.b $0C,$F2<br />
MusCred_DAC: dc.b $82,$06,$82,$82,$82,$82,$0C,$06,$0C,$06,$0C,$0C<br />
dc.b $0C<br />
- dc.b $81,$18,$82<br />
dc.b $F7,$00,$0E<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C<br />
- dc.b $82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EA,$EA,$F8<br />
dc.w z80_ptr(MusCreditsEA6E)<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$82,$06,$82,$82,$82,$81,$0C,$82,$06,$82<br />
dc.b $81,$81,$82,$82,$82,$82<br />
- dc.b $81,$18,$82,$81,$82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$82,$82,$82,$06,$82,$8C,$8C,$8D,$8D<br />
dc.b $8E,$8E,$F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$18,$82,$0C,$81,$18,$82,$0C,$82,$82,$06,$82<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$0C,$82,$82,$82,$8D,$06,$8D,$8E,$8E,$82,$06<br />
dc.b $82,$8D,$0C,$82,$0C,$82,$06,$82,$80,$82,$82,$0C<br />
MusCreditsE8E5: dc.b $82,$0C,$82,$82,$06,$82,$8D,$8D<br />
- dc.b $81,$0C,$8F,$06,$90,$82,$0C,$90,$06,$91,$81,$0C<br />
dc.b $8F,$06,$91,$82,$0C,$8F,$06,$91<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$8F,$06,$91,$82,$0C,$8F,$06,$91,$8C,$06<br />
dc.b $03,$03,$8D,$06,$8D,$8D,$8E,$8E,$8E,$81,$06,$0C<br />
dc.b $82,$06,$80,$0C,$81,$82,$8E,$82,$06,$82,$82,$82<br />
- dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$12,$8C,$06<br />
dc.b $82,$0C,$83,$06,$81,$80<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$06,$82,$06<br />
dc.b $81,$0C,$06,$82,$0C,$08,$04,$EA,$CD,$82,$30,$82<br />
dc.b $0C,$82,$82,$82,$08,$04,$F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$04,$82,$08,$04<br />
dc.b $08,$04,$04,$04,$04,$08,$04,$EA,$C5<br />
- dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82,$0C,$06<br />
dc.b $06,$81,$0C,$82,$06,$82,$82,$82,$8D,$0C,$82,$0C<br />
dc.b $0C,$0C,$06,$06<br />
- dc.b $81,$0C,$81,$82,$80,$81,$81,$82,$83<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$82,$82,$82,$82,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $81,$06,$81,$82,$82,$81,$82,$81,$81,$82,$02,$82<br />
dc.b $04,$81,$0C,$06,$82,$0C,$06,$06,$81,$18,$82,$0C<br />
dc.b $81,$81,$18,$82,$81,$06,$81,$12,$82,$0C,$81,$81<br />
dc.b $18,$82,$81,$18,$82,$0C,$81,$81,$18,$82,$81,$06<br />
dc.b $81,$12,$82,$0C,$0C,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $82,$02,$04,$81,$0C,$06,$0C,$82,$02,$04,$81,$0C<br />
dc.b $06,$0C,$82,$06,$82,$82,$82,$EA,$C0,$81,$0C,$82<br />
dc.b $81,$82,$81,$82,$81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$0F<br />
dc.w z80_ptr(-)<br />
dc.b $81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$13<br />
dc.w z80_ptr(-)<br />
dc.b $82,$08,$0C,$04,$81,$0C,$82,$81,$82,$81,$0C,$82<br />
dc.b $81,$06,$80,$02,$82,$82,$82,$09,$82,$03<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$06,$80,$02,$82,$82,$82,$09,$82<br />
dc.b $03<br />
dc.b $F7,$01,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$82,$81,$06,$82,$12,$82,$0C,$81<br />
dc.b $F2<br />
MusCreditsEA6E: dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$83,$E3<br />
MusCreditsEA84: dc.b $81,$18,$82,$0C,$81,$18,$0C,$82,$81,$81,$18,$82<br />
dc.b $0C,$81,$12,$81,$82,$18,$81,$82,$0C,$81,$18,$0C<br />
dc.b $82,$81,$E3<br />
MusCreditsEA9F: dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$0C,$82,$04,$81<br />
dc.b $0C,$82,$81,$81,$08,$0C,$04,$82,$0C,$81,$08,$0C<br />
dc.b $82,$04,$81,$0C,$82,$82,$08,$04,$E3,$81,$06,$80<br />
dc.b $03,$81,$81,$06,$82,$81,$06,$80,$03,$81,$81,$06<br />
dc.b $82,$03,$82,$81,$06,$80,$03,$81,$81,$06,$82,$E3<br />
MusCred_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$01,$1F,$1F,$FF,$0F,$17,$27,$28,$80<br />
dc.b $08,$09,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$25,$0E,$30,$84<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$0B,$0D,$19,$0B,$80,$80<br />
dc.b $08,$0A,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$24,$13,$2D,$80<br />
dc.b $3D,$01,$51,$21,$01,$12,$14,$14,$0F,$0A,$05,$05<br />
dc.b $05,$00,$00,$00,$00,$2B,$2B,$2B,$1B,$19,$80,$80,$80<br />
dc.b $04,$57,$70,$02,$50,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$06,$00,$0A,$0A,$00,$00,$0F,$0F,$1A,$10,$80,$80<br />
dc.b $35,$01,$13,$01,$00,$1F,$18,$1D,$19,$00,$06,$09<br />
dc.b $0D,$00,$02,$00,$03,$00,$15,$06,$16,$1E,$83,$80,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1A,$16,$88,$88<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$14,$0F,$37,$80<br />
dc.b $3B,$0F,$01,$06,$02,$DF,$1F,$1F,$DF,$0C,$0A,$00<br />
dc.b $03,$0F,$00,$00,$01,$F3,$55,$05,$5C,$22,$22,$20,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1C,$14,$84,$80<br />
dc.b $3A,$69,$50,$70,$60,$1C,$1A,$18,$18,$10,$02,$0C<br />
dc.b $09,$08,$06,$06,$03,$F9,$06,$56,$06,$28,$14,$15,$00<br />
dc.b $3D,$00,$02,$01,$01,$4C,$50,$0F,$12,$0C,$00,$02<br />
dc.b $05,$01,$00,$00,$00,$28,$2A,$29,$19,$1A,$06,$00,$00<br />
dc.b $2C,$71,$31,$71,$31,$1F,$1F,$16,$16,$00,$00,$0F<br />
dc.b $0F,$00,$00,$0F,$0F,$00,$00,$FA,$FA,$15,$14,$00,$00<br />
dc.b $18,$37,$31,$32,$31,$9E,$1C,$DC,$9C,$0D,$04,$06<br />
dc.b $01,$08,$03,$0A,$05,$B6,$36,$B6,$28,$2C,$14,$22,$00<br />
dc.b $3D,$01,$02,$02,$02,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$24,$18,$18,$18,$1C,$82,$82,$82<br />
dc.b $32,$71,$33,$0D,$01,$5F,$5F,$99,$94,$05,$05,$05<br />
dc.b $07,$02,$02,$02,$02,$11,$11,$11,$72,$23,$26,$2D,$80<br />
dc.b $3A,$32,$52,$01,$31,$1F,$1F,$1F,$18,$01,$00,$1F<br />
dc.b $00,$00,$00,$0F,$00,$5A,$03,$0F,$1A,$3B,$4F,$30,$00<br />
dc.b $3C,$42,$32,$41,$41,$12,$12,$12,$12,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$06,$06,$08,$08,$24,$24,$08,$08<br />
dc.b $31,$34,$30,$35,$31,$DF,$9F,$DF,$9F,$0C,$0C,$07<br />
dc.b $09,$07,$07,$07,$08,$2F,$1F,$1F,$2F,$17,$14,$32,$80<br />
dc.b $3D,$01,$01,$01,$01,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$20,$1A,$1A,$1A,$19,$84,$84,$84<br />
dc.b $24,$70,$30,$74,$38,$12,$1F,$1F,$1F,$05,$05,$03<br />
dc.b $03,$05,$05,$03,$03,$36,$26,$2C,$2C,$0A,$06,$08,$08<br />
dc.b $3A,$01,$01,$01,$02,$8D,$07,$07,$52,$09,$00,$00<br />
dc.b $03,$01,$02,$02,$00,$5F,$0F,$0F,$2F,$18,$18,$22,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$03,$03,$08,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$17,$20,$28,$80<br />
dc.b $20,$7A,$00,$31,$00,$9F,$DC,$D8,$DF,$10,$04,$0A<br />
dc.b $04,$0F,$08,$08,$08,$5F,$BF,$5F,$BF,$14,$17,$2B,$80<br />
dc.b $3A,$61,$51,$08,$02,$5D,$5D,$5D,$50,$04,$1F,$0F<br />
dc.b $1F,$00,$00,$00,$00,$1F,$0F,$5F,$0F,$22,$22,$1E,$80<br />
dc.b $02,$01,$02,$55,$04,$92,$8E,$8D,$54,$0D,$00,$0C<br />
dc.b $03,$00,$00,$00,$00,$FF,$0F,$2F,$5F,$16,$1D,$2A,$80<br />
dc.b $02,$75,$73,$71,$31,$1F,$96,$58,$9F,$01,$03,$1B<br />
dc.b $08,$01,$01,$04,$05,$FF,$3F,$2F,$2F,$24,$30,$29,$80<br />
dc.b $20,$66,$60,$65,$60,$DF,$9F,$DF,$1F,$00,$09,$06<br />
dc.b $0C,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$1C,$16,$3A,$80<br />
dc.b $0D,$32,$06,$08,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$86,$80,$8D<br />
dc.b $38,$3A,$11,$0A,$02,$D4,$50,$14,$0E,$05,$02,$08<br />
dc.b $88,$00,$00,$00,$00,$99,$09,$09,$1A,$2D,$19,$2C,$86<br />
dc.b $0D,$32,$02,$04,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$8B,$86,$93<br />
dc.b $3A,$20,$60,$23,$01,$1E,$1F,$1F,$1F,$0A,$0B,$0A<br />
dc.b $0A,$05,$0A,$07,$08,$A4,$96,$85,$78,$21,$28,$25,$00<br />
dc.b $3A,$32,$32,$56,$42,$8D,$15,$4F,$52,$06,$07,$08<br />
dc.b $04,$02,$00,$00,$00,$18,$28,$18,$28,$19,$2A,$20,$00<br />
dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$19,$13,$37,$80<br />
dc.b $3D,$01,$02,$02,$02,$14,$8C,$0E,$0E,$08,$02,$05<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$1A,$80,$80,$80<br />
; end of Mus_Credits<br />
<br />
; ------------------------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ------------------------------------------------------------------------------------------<br />
; WARNING the sound driver treats certain sounds specially<br />
; going by the ID of the sound.<br />
; SndID_Ring, SndID_RingLeft, SndID_Gloop, SndID_SpindashRev<br />
; are referenced by the sound driver directly.<br />
; If needed you can change this in s2.sounddriver.asm<br />
<br />
<br />
; NOTE: the exact order of this list determines the priority of each sound, since it determines the sound's SndID.<br />
; a sound can get dropped if a higher-priority sound is already playing.<br />
; the rules for sound priority are currently unknown, but you can generally swap pointer lines around to resolve priority conflicts.<br />
; loc_FEE91: SoundPoint:<br />
SoundIndex:<br />
SndPtr_Jump: rom_ptr_z80 Sound20 ; jumping sound<br />
SndPtr_Checkpoint: rom_ptr_z80 Sound21 ; checkpoint ding-dong sound<br />
SndPtr_SpikeSwitch: rom_ptr_z80 Sound22 ; spike switch sound<br />
SndPtr_Hurt: rom_ptr_z80 Sound23 ; hurt sound<br />
SndPtr_Skidding: rom_ptr_z80 Sound24 ; skidding sound<br />
SndPtr_BlockPush: rom_ptr_z80 Sound25 ; block push sound<br />
SndPtr_HurtBySpikes: rom_ptr_z80 Sound26 ; spiky impalement sound<br />
SndPtr_Sparkle: rom_ptr_z80 Sound27 ; sparkling sound<br />
SndPtr_Beep: rom_ptr_z80 Sound28 ; short beep<br />
SndPtr_Bwoop: rom_ptr_z80 Sound29 ; bwoop<br />
SndPtr_Splash: rom_ptr_z80 Sound2A ; splash sound<br />
SndPtr_Swish: rom_ptr_z80 Sound2B ; swish<br />
SndPtr_BossHit: rom_ptr_z80 Sound2C ; boss hit<br />
SndPtr_InhalingBubble: rom_ptr_z80 Sound2D ; inhaling a bubble<br />
SndPtr_ArrowFiring:<br />
SndPtr_LavaBall: rom_ptr_z80 Sound2E ; arrow firing<br />
SndPtr_Shield: rom_ptr_z80 Sound2F ; shield sound<br />
SndPtr_LaserBeam: rom_ptr_z80 Sound30 ; laser beam<br />
SndPtr_Zap: rom_ptr_z80 Sound31 ; zap<br />
SndPtr_Drown: rom_ptr_z80 Sound32 ; drownage<br />
SndPtr_FireBurn: rom_ptr_z80 Sound33 ; fire + burn<br />
SndPtr_Bumper: rom_ptr_z80 Sound34 ; bumper bing<br />
SndPtr_Ring:<br />
SndPtr_RingRight: rom_ptr_z80 Sound35 ; ring sound<br />
SndPtr_SpikesMove: rom_ptr_z80 Sound36<br />
SndPtr_Rumbling: rom_ptr_z80 Sound37 ; rumbling<br />
rom_ptr_z80 Sound38<br />
SndPtr_Smash: rom_ptr_z80 Sound39 ; smash/breaking<br />
rom_ptr_z80 Sound3A ; nondescript ding<br />
SndPtr_DoorSlam: rom_ptr_z80 Sound3B ; door slamming shut<br />
SndPtr_SpindashRelease: rom_ptr_z80 Sound3C ; spindash unleashed<br />
SndPtr_Hammer: rom_ptr_z80 Sound3D ; slide-thunk<br />
SndPtr_Roll: rom_ptr_z80 Sound3E ; rolling sound<br />
SndPtr_ContinueJingle: rom_ptr_z80 Sound3F ; got continue<br />
SndPtr_CasinoBonus: rom_ptr_z80 Sound40 ; short bonus ding<br />
SndPtr_Explosion: rom_ptr_z80 Sound41 ; badnik bust<br />
SndPtr_WaterWarning: rom_ptr_z80 Sound42 ; warning ding-ding<br />
SndPtr_EnterGiantRing: rom_ptr_z80 Sound43 ; special stage ring flash (unused)<br />
SndPtr_BossExplosion: rom_ptr_z80 Sound44 ; thunk<br />
SndPtr_TallyEnd: rom_ptr_z80 Sound45 ; cha-ching<br />
SndPtr_RingSpill: rom_ptr_z80 Sound46 ; losing rings<br />
rom_ptr_z80 Sound47 ; chain pull chink-chink<br />
SndPtr_Flamethrower: rom_ptr_z80 Sound48 ; flamethrower<br />
SndPtr_Bonus: rom_ptr_z80 Sound49 ; bonus pwoieeew (unused)<br />
SndPtr_SpecStageEntry: rom_ptr_z80 Sound4A ; special stage entry<br />
SndPtr_SlowSmash: rom_ptr_z80 Sound4B ; slower smash/crumble<br />
SndPtr_Spring: rom_ptr_z80 Sound4C ; spring boing<br />
SndPtr_Blip: rom_ptr_z80 Sound4D ; selection blip<br />
SndPtr_RingLeft: rom_ptr_z80 Sound4E ; another ring sound (only plays in the left speaker?)<br />
SndPtr_Signpost: rom_ptr_z80 Sound4F ; signpost spin sound<br />
SndPtr_CNZBossZap: rom_ptr_z80 Sound50 ; mosquito zapper<br />
rom_ptr_z80 Sound51<br />
rom_ptr_z80 Sound52<br />
SndPtr_Signpost2P: rom_ptr_z80 Sound53<br />
SndPtr_OOZLidPop: rom_ptr_z80 Sound54 ; OOZ lid pop sound<br />
SndPtr_SlidingSpike: rom_ptr_z80 Sound55<br />
SndPtr_CNZElevator: rom_ptr_z80 Sound56<br />
SndPtr_PlatformKnock: rom_ptr_z80 Sound57<br />
SndPtr_BonusBumper: rom_ptr_z80 Sound58 ; CNZ bonusy bumper sound<br />
SndPtr_LargeBumper: rom_ptr_z80 Sound59 ; CNZ baaang bumper sound<br />
SndPtr_Gloop: rom_ptr_z80 Sound5A ; CNZ gloop / water droplet sound<br />
SndPtr_PreArrowFiring: rom_ptr_z80 Sound5B<br />
SndPtr_Fire: rom_ptr_z80 Sound5C<br />
SndPtr_ArrowStick: rom_ptr_z80 Sound5D ; chain clink<br />
SndPtr_Helicopter:<br />
SndPtr_WingFortress: rom_ptr_z80 Sound5E ; helicopter<br />
SndPtr_SuperTransform: rom_ptr_z80 Sound5F<br />
SndPtr_SpindashRev: rom_ptr_z80 Sound60 ; spindash charge<br />
SndPtr_Rumbling2: rom_ptr_z80 Sound61 ; rumbling<br />
SndPtr_CNZLaunch: rom_ptr_z80 Sound62<br />
SndPtr_Flipper: rom_ptr_z80 Sound63 ; CNZ blooing bumper<br />
SndPtr_HTZLiftClick: rom_ptr_z80 Sound64 ; HTZ track click sound<br />
SndPtr_Leaves: rom_ptr_z80 Sound65 ; kicking up leaves sound<br />
SndPtr_MegaMackDrop: rom_ptr_z80 Sound66 ; leaf splash?<br />
SndPtr_DrawbridgeMove: rom_ptr_z80 Sound67<br />
SndPtr_QuickDoorSlam: rom_ptr_z80 Sound68 ; door slamming quickly (seems unused)<br />
SndPtr_DrawbridgeDown: rom_ptr_z80 Sound69<br />
SndPtr_LaserBurst: rom_ptr_z80 Sound6A ; robotic laser burst<br />
SndPtr_Scatter:<br />
SndPtr_LaserFloor: rom_ptr_z80 Sound6B ; scatter<br />
SndPtr_Teleport: rom_ptr_z80 Sound6C<br />
SndPtr_Error: rom_ptr_z80 Sound6D ; error sound<br />
SndPtr_MechaSonicBuzz: rom_ptr_z80 Sound6E ; silver sonic buzz saw<br />
SndPtr_LargeLaser: rom_ptr_z80 Sound6F<br />
SndPtr_OilSlide: rom_ptr_z80 Sound70<br />
SndPtr__End:<br />
<br />
; There are many non-relative pointers in these sound effects,<br />
; so the sounds shouldn't simply be BINCLUDE'd.<br />
; They could be included as separate .asm files using "include" instead of "binclude",<br />
; but I wanted to minimize the number of included asm files.<br />
<br />
; some comments on what the various script commands do (after the header):<br />
; 0x00-0x7F sets the note duration (of the previous note and following notes)<br />
; 0x81-0xDF plays a note (the valid range may be smaller for PSG or DAC)<br />
; 0x80 plays silence<br />
; 0xE0-0xFF does special things. I won't list them here... search for "Coordination flags" sonic 2.<br />
<br />
; the FM voices (poorly named "ssamp" or "samples" below)<br />
; are 25 bytes each and go directly to YM2612 registers.<br />
; they can be hard to edit (there's an art to it)<br />
; but search for sonic "Voice editing" for more info if you want to try.<br />
<br />
; jumping sound<br />
Sound20: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$F400<br />
+ dc.b $F5,$00,$9E,$05,$F0,$02,$01,$F8,$65,$A3,$15,$F2<br />
<br />
; checkpoint ding-dong sound<br />
Sound21: dc.w z80_ptr(ssamp21),$0101<br />
dc.w $8005,z80_ptr(+),$0001<br />
ssamp21: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
+ dc.b $EF,$00,$BD,$06,$BA,$16,$F2<br />
<br />
; spike switch sound<br />
Sound22: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C0,$04,$CA,$04<br />
- dc.b $C0,$01,$EC<br />
dc.w $01F7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; hurt sound<br />
Sound23: dc.w z80_ptr(ssamp23),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B0,$07,$E7,$AD<br />
- dc.b $01,$E6<br />
dc.w $01F7,$002F,z80_ptr(-)<br />
dc.b $F2<br />
ssamp23: dc.b $30,$30,$30,$30,$30,$9E,$DC,$D8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$14,$14,$3C,$80<br />
<br />
; skidding sound<br />
Sound24: dc.w $0000,$0102 ; sound header... no sample and 2 script entries<br />
dc.w $80A0,z80_ptr(+),$F400 ; entry 1 header<br />
dc.w $80C0,z80_ptr(++),$F400 ; entry 2 header<br />
+ dc.b $F5,$00,$AF,$01,$80,$AF,$80,$03 ; script entry 1<br />
- dc.b $AF,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 1 end<br />
+ dc.b $F5,$00,$80,$01,$AD,$80,$AD,$80,$03 ; script entry 2<br />
- dc.b $AD,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 2 end<br />
<br />
; block push sound<br />
Sound25: dc.w z80_ptr(ssamp25),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$01,$8B,$0A,$80,$02,$F2<br />
ssamp25: dc.b $FA,$21,$10,$30,$32,$2F,$2F,$1F,$2F,$05,$09,$08<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
; spiky impalement sound<br />
Sound26: dc.w z80_ptr(ssamp26),$0101<br />
dc.w $8005,z80_ptr(+),$F200<br />
+ dc.b $EF,$00,$F0,$01,$01,$10,$FF,$CF,$05,$D7,$25,$F2<br />
ssamp26: dc.b $3B,$3C,$30,$39,$31,$DF,$1F,$1F,$DF,$04,$04,$05<br />
dc.b $01,$04,$04,$04,$02,$FF,$1F,$0F,$AF,$29,$0F,$20,$80<br />
<br />
; sparkling sound<br />
Sound27: dc.w z80_ptr(ssamp27),$0101<br />
dc.w $8004,z80_ptr(+),$0C1C<br />
+ dc.b $EF,$00,$C1,$05,$C4,$05,$C9,$2B,$F2<br />
ssamp27: dc.b $07,$73,$33,$33,$73,$0F,$19,$14,$1A,$0A,$0A,$0A<br />
dc.b $0A,$0A,$0A,$0A,$0A,$57,$57,$57,$57,$00,$00,$00,$00<br />
<br />
; short beep<br />
Sound28: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$E803<br />
+ dc.b $F5,$04,$CB,$04,$F2<br />
<br />
; bwoop<br />
Sound29: dc.w $0000,$0101<br />
dc.w $80A0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$E6,$35,$8E,$06,$F2<br />
<br />
; splash sound<br />
Sound2A: dc.w z80_ptr(ssamp2A),$0102<br />
dc.w $80C0,z80_ptr(+),$0000<br />
dc.w $8005,z80_ptr(++),$0003<br />
+ dc.b $F5,$00,$F3,$E7,$C2,$05,$C6,$05,$E7<br />
- dc.b $07,$EC,$01<br />
dc.w $E7F7,$000F,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$A6,$14,$F2<br />
ssamp2A: dc.b $00,$00,$02,$03,$00,$D9,$1F,$DF,$1F,$12,$14,$11<br />
dc.b $0F,$0A,$0A,$00,$0D,$FF,$FF,$FF,$FF,$22,$27,$07,$80<br />
<br />
; swish<br />
Sound2B: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$C6,$03,$80,$03,$C6,$01,$E7<br />
- dc.b $01,$EC,$01<br />
dc.w $E7F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; boss hit<br />
Sound2C: dc.w z80_ptr(smashsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$0C,$01<br />
- dc.b $81,$0A,$E6<br />
dc.w $10F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
smashsamp: dc.b $F9,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
<br />
; inhaling a bubble<br />
Sound2D: dc.w z80_ptr(ssamp2D),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$21,$6E,$A6,$07<br />
dc.b $80,$06,$F0,$01,$01,$44,$1E,$AD,$08,$F2<br />
ssamp2D: dc.b $35,$05,$08,$09,$07,$1E,$0D,$0D,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$1F,$2F,$1F,$15,$12,$12,$80<br />
<br />
; arrow firing<br />
Sound2E: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$C6,$01,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp2E: dc.b $FA,$02,$00,$03,$05,$12,$0F,$11,$13,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$2F,$0E,$1A,$80<br />
<br />
; shield sound<br />
Sound2F: dc.w z80_ptr(ssamp2F),$0101<br />
dc.w $8005,z80_ptr(+),$0C00<br />
+ dc.b $EF,$00,$80,$01,$A3,$05,$E7,$A4,$26,$F2<br />
ssamp2F: dc.b $30,$30,$30,$30,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$04,$14,$2C,$80<br />
<br />
; laser beam<br />
Sound30: dc.w z80_ptr(ssamp30),$0101 ; sound header... a voice and 1 script entry<br />
dc.w $8005,z80_ptr(+),$FB05 ; script entry header<br />
+ dc.b $EF,$00,$DF,$7F ; script start<br />
- dc.b $DF,$02,$E6 ; script continued<br />
dc.w $01F7,$001B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script end<br />
ssamp30: dc.b $83,$1F,$1F,$15,$1F,$1F,$1F,$1F,$1F,$00,$00,$00 ; voice<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$0B,$01,$16,$82 ; (fixed length)<br />
<br />
; zap<br />
Sound31: dc.w z80_ptr(ssamp31),$0101<br />
dc.w $8005,z80_ptr(+),$FB02<br />
+ dc.b $EF,$00,$B3,$05,$80,$01,$B3,$09,$F2<br />
ssamp31: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$05,$34,$10,$87<br />
<br />
; drownage<br />
Sound32: dc.w z80_ptr(ssamp32),$0102<br />
dc.w $8004,z80_ptr(++),$0C04<br />
dc.w $8005,z80_ptr(+),$0E02<br />
+ dc.b $EF,$00,$F0,$01,$01,$83,$0C<br />
- dc.b $8A,$05,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $80,$06,$EF,$00,$F0,$01,$01,$6F,$0E<br />
- dc.b $8D,$04,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp32: dc.b $35,$14,$04,$1A,$09,$0E,$11,$10,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$4F,$2F,$4F,$2F,$12,$12,$80<br />
<br />
; fire + burn<br />
Sound33: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$A7,$25,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; bumper bing<br />
Sound34: dc.w z80_ptr(ssamp34),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $8002,z80_ptr(+++),$0002<br />
+ dc.b $EF,$00,$F6<br />
dc.w z80_ptr(Sound34_3)<br />
+ dc.b $EF,$00,$E1,$07,$80,$01<br />
Sound34_3:<br />
dc.b $BA,$20,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
ssamp34: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$1F,$2B,$80,$80<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; ring sound<br />
Sound35: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$40,$C1,$05,$C4,$05,$C9,$1B,$F2<br />
<br />
<br />
Sound36: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C1,$07<br />
- dc.b $D0,$01,$EC<br />
dc.w $01F7,$000C,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; rumbling<br />
Sound37: dc.w z80_ptr(ssamp37),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$20,$08<br />
- dc.b $8B<br />
dc.w $0AF7,$0008,z80_ptr(-)<br />
- dc.b $8B,$10,$E6<br />
dc.w $03F7,$0009,z80_ptr(-)<br />
dc.b $F2<br />
ssamp37: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
<br />
Sound38: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$B4,$08<br />
- dc.b $B0,$02,$EC<br />
dc.w $01F7,$0003,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; smash/breaking<br />
Sound39: dc.w z80_ptr(smashsamp),$0104<br />
dc.w $8002,z80_ptr(+),$1000<br />
dc.w $8004,z80_ptr(+++),$0000<br />
dc.w $8005,z80_ptr(++),$1000<br />
dc.w $80C0,z80_ptr(s39s4),$0000<br />
+ dc.b $E0,$40,$80,$02,$F6<br />
dc.w z80_ptr(++)<br />
+ dc.b $E0,$80,$80,$01<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
s39s4: dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; nondescript ding<br />
Sound3A: dc.w z80_ptr(ssamp3A),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$AE,$08,$F2<br />
ssamp3A: dc.b $1C,$2E,$0F,$02,$02,$1F,$1F,$1F,$1F,$18,$14,$0F<br />
dc.b $0E,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$20,$1B,$80,$80<br />
<br />
; door slamming shut<br />
Sound3B: dc.w z80_ptr(ssamp3B),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$80,$A0,$06,$F2<br />
ssamp3B: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; spindash unleashed<br />
Sound3C: dc.w z80_ptr(ssamp3C),$0102<br />
dc.w $8005,z80_ptr(+),$9000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$F2<br />
+ dc.b $F5,$07,$80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$4F,$F2<br />
ssamp3C: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
<br />
; slide-thunk<br />
Sound3D: dc.w z80_ptr(ssamp3D),$0102<br />
dc.w $8005,z80_ptr(+),$100A<br />
dc.w $8004,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$60,$01,$A7,$08,$F2<br />
+ dc.b $80,$08,$EF,$01,$84,$22,$F2<br />
ssamp3D: dc.b $FA,$21,$19,$3A,$30,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
dc.b $FA,$31,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$1F,$2F,$2F,$0D,$01,$00,$80<br />
<br />
; rolling sound<br />
Sound3E: dc.w z80_ptr(ssamp3E),$0101<br />
dc.w $8004,z80_ptr(+),$0C05<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$09,$FF,$CA,$25,$F4<br />
- dc.b $E7,$E6,$01,$D0<br />
dc.w $02F7,$002A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3E: dc.b $3C,$00,$02,$44,$02,$1F,$1F,$1F,$15,$00,$00,$1F<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0D,$28,$00,$00<br />
<br />
; got continue<br />
Sound3F: dc.w z80_ptr(ssamp3F),$0103<br />
dc.w $8002,z80_ptr(+),$F406<br />
dc.w $8004,z80_ptr(++),$F406<br />
dc.w $8005,z80_ptr(+++),$F406<br />
+ dc.b $EF,$00,$C9,$07,$CD,$D0,$CB,$CE,$D2,$CD,$D0,$D4,$CE,$D2,$D5<br />
- dc.b $D0,$07,$D4,$D7,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$80,$07,$CD,$15,$CE,$D0,$D2<br />
- dc.b $D4,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$C9,$15,$CB,$CD,$CE<br />
- dc.b $D0,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3F: dc.b $14,$25,$36,$33,$11,$1F,$1F,$1F,$1F,$15,$1C,$18<br />
dc.b $13,$0B,$0D,$08,$09,$0F,$8F,$9F,$0F,$24,$0A,$05,$80<br />
<br />
; short bonus ding<br />
Sound40: dc.w z80_ptr(ssamp3F),$0102<br />
dc.w $8005,z80_ptr(++),$0008<br />
dc.w $8004,z80_ptr(+),$0008<br />
+ dc.b $E1,$03,$80,$02<br />
+ dc.b $EF,$00,$C4,$16,$F2<br />
<br />
; badnik bust<br />
Sound41: dc.w z80_ptr(ssamp41),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0002<br />
+ dc.b $F0,$03,$01,$72,$0B,$EF,$00,$BA,$16,$F2<br />
+ dc.b $F5,$01,$F3,$E7,$B0,$1B,$F2<br />
ssamp41: dc.b $3C,$0F,$03,$01,$01,$1F,$1F,$1F,$1F,$19,$19,$12<br />
dc.b $0E,$05,$00,$12,$0F,$0F,$FF,$7F,$FF,$00,$00,$80,$80<br />
<br />
; warning ding-ding<br />
Sound42: dc.w z80_ptr(ssamp3F),$0101<br />
dc.w $8005,z80_ptr(+),$0C08<br />
+ dc.b $EF,$00,$BA,$08,$BA,$25,$F2<br />
<br />
; special stage ring flash (unused)<br />
Sound43: dc.w z80_ptr(ssamp43),$0102<br />
dc.w $8004,z80_ptr(+),$0C00<br />
dc.w $8005,z80_ptr(++),$0013<br />
+ dc.b $EF,$01,$80,$01,$A2,$08,$EF,$00,$E7,$AD,$26,$F2<br />
+ dc.b $EF,$02,$F0,$06,$01,$03,$FF,$80,$0A<br />
- dc.b $C3<br />
dc.w $06F7,$0005,z80_ptr(-)<br />
dc.b $C3,$17,$F2<br />
ssamp43: dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$1C,$80<br />
dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$2C,$80<br />
dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$13,$13,$81,$88<br />
<br />
; thunk<br />
Sound44: dc.w z80_ptr(ssamp44),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$8A,$22,$F2<br />
ssamp44: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$4F,$2F,$2F,$0D,$04,$07,$80<br />
<br />
; cha-ching<br />
Sound45: dc.w z80_ptr(ssamp45),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$8A,$08,$80,$02,$8A,$08,$F2<br />
+ dc.b $EF,$01,$80,$12,$C6,$55,$F2<br />
+ dc.b $F5,$02,$F3,$E7,$80,$02,$C2,$05,$C4,$04,$C2,$05,$C4,$04,$F2<br />
ssamp45: dc.b $3B,$03,$02,$02,$06,$18,$1A,$1A,$96,$17,$0A,$0E<br />
dc.b $10,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$39,$28,$80<br />
ringsamp: dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$23,$80,$80<br />
<br />
; losing rings (scatter)<br />
Sound46: dc.w z80_ptr(ringsamp),$0102<br />
dc.w $8004,z80_ptr(+),$0005<br />
dc.w $8005,z80_ptr(++),$0008<br />
+ dc.b $EF,$00,$C6,$02,$05,$05,$05,$05,$05,$05,$3A,$F2<br />
+ dc.b $EF,$00,$80,$02,$C4,$02,$05,$15,$02,$05,$32,$F2<br />
<br />
; chain pull chink-chink<br />
Sound47: dc.w z80_ptr(ssamp47),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$BE,$05,$80,$04,$BE,$04,$80,$04,$F2<br />
ssamp47: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; flamethrower<br />
Sound48: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$25,$F2<br />
<br />
; bonus pwoieeew (unused)<br />
Sound49: dc.w z80_ptr(ssamp49),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$33,$18,$B9,$1A,$F2<br />
ssamp49: dc.b $3B,$0A,$05,$31,$02,$5F,$5F,$5F,$5F,$04,$16,$14<br />
dc.b $0C,$00,$00,$04,$00,$1F,$D8,$6F,$FF,$03,$00,$25,$80<br />
<br />
; special stage entry<br />
Sound4A: dc.w z80_ptr(ssamp4A),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$F0,$01,$01,$5B,$02,$CC,$65,$F2<br />
ssamp4A: dc.b $20,$36,$30,$35,$31,$41,$3B,$49,$4B,$09,$09,$06<br />
dc.b $08,$01,$02,$03,$A9,$0F,$0F,$0F,$0F,$29,$23,$27,$80<br />
<br />
; slower smash/crumble<br />
Sound4B: dc.w z80_ptr(smashsamp),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; spring boing<br />
Sound4C: dc.w z80_ptr(ssamp4C),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$5D,$0F,$B0,$0C,$F4<br />
- dc.b $E7,$E6,$02,$BD<br />
dc.w $02F7,$0019,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4C: dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$16,$13,$30,$80<br />
<br />
; selection blip<br />
Sound4D: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $BB,$02,$F2<br />
<br />
; another ring sound (only plays in the left speaker?)<br />
Sound4E: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8004,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$80,$C1,$04,$C4,$05,$C9,$1B,$F2<br />
<br />
; signpost spin sound<br />
Sound4F: dc.w z80_ptr(ssamp4F),$0102<br />
dc.w $8004,z80_ptr(+),$2703<br />
dc.w $8005,z80_ptr(++),$2700<br />
+ dc.b $80,$04<br />
+ dc.b $EF,$00<br />
- dc.b $B4,$05,$E6<br />
dc.w $02F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4F: dc.b $F4,$06,$0F,$04,$0E,$1F,$1F,$1F,$1F,$00,$0B,$00<br />
dc.b $0B,$00,$05,$00,$08,$0F,$FF,$0F,$FF,$0C,$03,$8B,$80<br />
<br />
; mosquito zapper<br />
Sound50: dc.w z80_ptr(ssamp50),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B3,$04,$80,$01<br />
- dc.b $B4,$04,$80<br />
dc.w $01F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
ssamp50: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$06,$34,$10,$87<br />
<br />
<br />
Sound51: dc.w z80_ptr(ssamp51),$0102<br />
dc.w $80C0,z80_ptr(+),$0001<br />
dc.w $8005,z80_ptr(++),$000B<br />
+ dc.b $F5,$02,$F3,$E4,$B0,$04,$85,$02,$F2<br />
+ dc.b $EF,$00,$E8,$04,$A5,$06,$F2<br />
ssamp51: dc.b $3C,$02,$01,$00,$01,$1F,$1F,$1F,$1F,$00,$19,$0E<br />
dc.b $10,$00,$00,$0C,$0F,$0F,$FF,$EF,$FF,$05,$00,$80,$80<br />
<br />
<br />
Sound52: dc.w z80_ptr(ssamp52),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $F0,$01,$01,$2A,$07,$EF,$00<br />
- dc.b $A5,$03<br />
dc.w $E7F7,$0013,z80_ptr(-)<br />
- dc.b $A5,$03,$E7,$E6<br />
dc.w $02F7,$0013,z80_ptr(-)<br />
dc.b $F2<br />
ssamp52: dc.b $28,$21,$21,$21,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$29,$20,$29,$80<br />
<br />
<br />
Sound53: dc.w z80_ptr(ssamp53),$0101<br />
dc.w $8005,z80_ptr(+),$F503<br />
+ dc.b $EF,$00,$F0,$01,$01,$46,$09,$A7,$14,$E7,$14,$E7,$E6,$04<br />
dc.b $14,$E7,$E6,$04,$14,$E7,$E6,$04,$0A,$E7,$E6,$04,$0A,$F2<br />
ssamp53: dc.b $07,$0A,$0C,$0C,$0C,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$2A,$0F,$0F,$80<br />
<br />
; OOZ lid pop sound<br />
Sound54: dc.w z80_ptr(ssamp54),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0006<br />
+ dc.b $EF,$00,$B6,$15,$F2<br />
+ dc.b $F3,$E7,$F5,$04,$C6,$03,$E7,$C5,$E7<br />
dc.b $C4,$E7,$C3,$E7,$C2,$E7,$C1,$E7,$C0,$F2<br />
ssamp54: dc.b $07,$03,$02,$03,$00,$FF,$6F,$6F,$3F,$12,$14,$11<br />
dc.b $0E,$1A,$0A,$03,$0D,$FF,$FF,$FF,$FF,$03,$07,$07,$80<br />
<br />
<br />
Sound55: dc.w z80_ptr(ssamp55),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$AA,$07,$B6,$15,$F2<br />
ssamp55: dc.b $42,$20,$0E,$0F,$0F,$1F,$1F,$1F,$1F,$1F,$1F,$1F<br />
dc.b $1F,$0F,$0E,$0F,$0E,$0F,$0F,$0F,$0F,$2E,$80,$20,$80<br />
<br />
<br />
Sound56: dc.w z80_ptr(ssamp56),$0101<br />
dc.w $8005,z80_ptr(+),$100E<br />
+ dc.b $EF,$00,$F0,$01,$01,$1E,$FF,$8F,$1C,$F4<br />
- dc.b $E7,$9A<br />
dc.w $05F7,$0009,z80_ptr(-)<br />
- dc.b $E7,$9A,$04,$E6,$02,$E7,$9A,$04,$E6<br />
dc.w $02F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp56: dc.b $0D,$06,$00,$00,$E5,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$27,$80,$80,$80<br />
<br />
<br />
Sound57: dc.w z80_ptr(ssamp57),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$CA,$15,$F2<br />
ssamp57: dc.b $04,$09,$70,$00,$30,$1C,$1F,$DF,$1F,$15,$12,$0B<br />
dc.b $0F,$0C,$0D,$00,$0D,$07,$2F,$FA,$FA,$00,$29,$00,$00<br />
<br />
; CNZ bonusy bumper sound<br />
Sound58: dc.w z80_ptr(ssamp58),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$B3,$06,$B3,$15,$F2<br />
ssamp58: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
<br />
; CNZ baaang bumper sound<br />
Sound59: dc.w z80_ptr(ssamp59),$0103<br />
dc.w $8004,z80_ptr(+),$0000<br />
dc.w $8002,z80_ptr(++),$0002<br />
dc.w $8005,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$E1,$0C,$B5,$14,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
+ dc.b $EF,$00,$B6,$14,$F2<br />
ssamp59: dc.b $32,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $0D,$00,$01,$01,$0C,$00,$23,$C3,$F6,$08,$07,$1C,$03<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; CNZ gloop / water droplet sound<br />
Sound5A: dc.w z80_ptr(ssamp5A),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$7F,$F1,$AA,$0A,$F2<br />
ssamp5A: dc.b $47,$03,$02,$02,$04,$5F,$5F,$5F,$5F,$0E,$1A,$11<br />
dc.b $0A,$09,$0A,$0A,$0A,$4F,$3F,$3F,$3F,$7F,$80,$80,$A3<br />
<br />
<br />
Sound5B: dc.w z80_ptr(ssamp5B),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$02,$A5,$01,$E7<br />
- dc.b $01,$E7,$E6<br />
dc.w $02F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5B: dc.b $38,$0F,$0F,$0F,$0F,$1F,$1F,$1F,$0E,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$1F,$00,$00,$00,$80<br />
<br />
<br />
Sound5C: dc.w z80_ptr(ssamp5C),$0102<br />
dc.w $8004,z80_ptr(+),$000E<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$85,$40<br />
- dc.b $E7,$04,$E6<br />
dc.w $04F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$40<br />
- dc.b $E7,$08,$E6<br />
dc.w $01F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5C: dc.b $FA,$12,$01,$01,$01,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$81,$8E,$14,$80<br />
<br />
; chain clink<br />
Sound5D: dc.w z80_ptr(ssamp5D),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$C0,$04,$F2<br />
ssamp5D: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; helicopter<br />
Sound5E: dc.w z80_ptr(ssamp5E),$0101<br />
dc.w $8002,z80_ptr(+),$1405<br />
+ dc.b $EF,$00<br />
- dc.b $95,$02,$95<br />
dc.w $01F7,$0013,z80_ptr(-)<br />
- dc.b $95,$02,$95,$01,$E6<br />
dc.w $01F7,$001B,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5E: dc.b $35,$30,$44,$40,$51,$1F,$1F,$1F,$1F,$10,$00,$13<br />
dc.b $15,$1F,$00,$1F,$1A,$7F,$0F,$7F,$5F,$02,$A8,$80,$80<br />
<br />
<br />
Sound5F: dc.w z80_ptr(ssamp5F),$0103<br />
dc.w $8005,z80_ptr(s5Fs1),$0000<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
s5Fs1 dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$E6,$0A,$80<br />
dc.b $06,$EF,$01,$F0,$01,$01,$11,$FF,$A2,$28<br />
- dc.b $E7,$03,$E6<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs2 dc.b $80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$1D<br />
- dc.b $E7,$07,$EC<br />
dc.w $01F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs3 dc.b $80,$16,$F5,$03<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $FFF7,$0005,z80_ptr(-)<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $01F7,$0007,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5F: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
dc.b $3A,$70,$30,$04,$01,$0F,$14,$19,$16,$08,$0A,$0B<br />
dc.b $05,$03,$03,$03,$05,$1F,$6F,$8F,$5F,$1F,$22,$1F,$80<br />
<br />
; spindash charge<br />
Sound60: dc.w z80_ptr(ssamp60),$0101<br />
dc.w $8005,z80_ptr(+),$FE00<br />
+ dc.b $EF,$00,$F0,$00,$01,$20,$F6,$C4,$16,$E7,$F4,$D0,$18,$E7<br />
- dc.b $04,$E7,$E6<br />
dc.w $03F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp60: dc.b $34,$00,$03,$0C,$09,$9F,$8C,$8F,$95,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$00,$1D,$00,$00<br />
<br />
; rumbling<br />
Sound61: dc.w z80_ptr(ssamp61),$0101<br />
dc.w $8004,z80_ptr(+),$0004<br />
+ dc.b $80,$01,$EF,$00,$F0,$00,$01,$70,$06,$82,$06,$85,$08,$83<br />
dc.b $01,$82,$05,$86,$06,$89,$03,$82,$08,$88,$04,$82,$06,$E6<br />
dc.b $02,$85,$08,$E6,$02,$83,$01,$E6,$02,$82,$05,$E6,$02,$86<br />
dc.b $06,$E6,$02,$89,$03,$E6,$02,$82,$08,$E6,$02,$88,$04,$E6,$02,$F2<br />
ssamp61: dc.b $32,$30,$30,$50,$30,$1F,$0E,$19,$0E,$07,$12,$15<br />
dc.b $09,$0A,$09,$1D,$06,$E8,$03,$0A,$17,$07,$00,$00,$00<br />
<br />
<br />
Sound62: dc.w z80_ptr(ssamp62),$0101<br />
dc.w $8005,z80_ptr(+),$FF00<br />
+ dc.b $EF,$00,$A6,$05,$F0,$01,$01,$E7,$40<br />
- dc.b $C4,$02,$E7,$E6<br />
dc.w $01F7,$0012,z80_ptr(-)<br />
dc.b $F2<br />
ssamp62: dc.b $34,$0C,$10,$73,$0C,$AF,$AC,$FF,$D5,$06,$00,$02<br />
dc.b $01,$02,$0A,$04,$08,$BF,$BF,$BF,$BF,$00,$08,$80,$80<br />
<br />
; CNZ blooing bumper<br />
Sound63: dc.w z80_ptr(ssamp63),$0101<br />
dc.w $8005,z80_ptr(+),$0907<br />
+ dc.b $EF,$00,$F0,$01,$01,$04,$56,$92,$03,$9A,$25,$F2<br />
ssamp63: dc.b $3D,$12,$10,$77,$30,$5F,$5F,$5F,$5F,$0F,$0A,$00<br />
dc.b $01,$0A,$0A,$0D,$0D,$4F,$0F,$0F,$0F,$13,$80,$80,$80<br />
<br />
; HTZ track click sound<br />
Sound64: dc.w z80_ptr(ssamp64),$0101<br />
dc.w $8005,z80_ptr(+),$1100<br />
+ dc.b $EF,$00,$C7,$02,$F2<br />
ssamp64: dc.b $24,$2A,$02,$05,$01,$1A,$1F,$10,$1F,$0F,$1F,$1F<br />
dc.b $1F,$0C,$0D,$11,$11,$0C,$09,$09,$0F,$0E,$04,$80,$80<br />
<br />
; kicking up leaves sound<br />
Sound65: dc.w z80_ptr(ssamp65),$0101<br />
dc.w $80C0,z80_ptr(+),$F800<br />
+ dc.b $F5,$03,$F3,$E7,$CE,$03,$F5,$06,$CE,$04,$EC<br />
dc.b $02,$CE,$02,$F5,$03,$EC,$FE,$CE,$08,$CE,$18,$F2<br />
ssamp65: ; uhm... apparently they forgot to null out the pointer to here.<br />
; luckily, sound 65 doesn't really use its sample<br />
<br />
; leaf splash?<br />
Sound66: dc.w z80_ptr(ssamp66),$0102<br />
dc.w $8005,z80_ptr(++),$EE08<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$F5,$09,$C6,$36,$F2<br />
+ dc.b $EF,$00,$80,$01,$92,$02,$02,$02,$30,$F2<br />
ssamp66: dc.b $32,$33,$17,$34,$13,$0F,$0D,$1B,$17,$00,$04,$02<br />
dc.b $0B,$08,$00,$08,$09,$6F,$5F,$4F,$6F,$05,$00,$00,$80<br />
<br />
<br />
Sound67: dc.w z80_ptr(ssamp67),$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$06,$F3,$E7,$90,$0A,$94,$0A,$98,$0A,$9C<br />
dc.b $0A,$A0,$0A,$A4,$08,$A8,$08,$AC,$08,$B0,$08,$F2<br />
ssamp67: ; another not-really-used sample (like Sound65)<br />
<br />
; door slamming quickly (seems unused)<br />
Sound68: dc.w z80_ptr(ssamp68),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$A5,$06,$F2<br />
ssamp68: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
<br />
Sound69: dc.w z80_ptr(ssamp69),$0102<br />
dc.w $8005,z80_ptr(+),$F400<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$9B,$03,$A8,$06,$9E,$08,$F2<br />
+ dc.b $F5,$04,$F3,$E7,$C6,$03,$C6,$06,$C6,$08,$F2<br />
ssamp69: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; robotic laser burst<br />
Sound6A: dc.w z80_ptr(ssamp6A),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$DF,$14,$E6,$18,$06,$F2<br />
ssamp6A: dc.b $3D,$09,$34,$34,$28,$1F,$16,$16,$16,$00,$00,$00<br />
dc.b $04,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$15,$02,$02,$00<br />
<br />
; scatter<br />
Sound6B: dc.w z80_ptr(ssamp6B),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$81,$04,$80,$0C,$F2<br />
ssamp6B: dc.b $3A,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $07,$00,$01,$01,$03,$00,$23,$C3,$46,$08,$07,$1C,$03<br />
<br />
<br />
Sound6C: dc.w z80_ptr(ssamp6C),$0104<br />
dc.w $8005,z80_ptr(++),$0010<br />
dc.w $8004,z80_ptr(+),$0010<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
+ dc.b $E1,$10<br />
+ dc.b $EF,$01,$F0,$01,$01,$EC,$56,$C0,$24,$F4,$EF,$00,$E6,$F0<br />
- dc.b $BB,$02,$E7,$E6,$02,$E9<br />
dc.w $01F7,$0020,z80_ptr(-)<br />
dc.b $F2<br />
ssamp6C: dc.b $00,$53,$30,$03,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$06,$23,$80<br />
dc.b $3C,$72,$32,$32,$72,$14,$14,$0F,$0F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$02,$02,$08,$08,$35,$14,$00,$00<br />
<br />
; error sound<br />
Sound6D: dc.w z80_ptr(ssamp6D),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$B0,$06,$80,$06,$B0,$18,$F2<br />
ssamp6D: dc.b $38,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$1F,$0C,$17,$00<br />
<br />
; silver sonic buzz saw<br />
Sound6E: dc.w z80_ptr(ssamp6E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$C6,$24,$E7<br />
- dc.b $C6,$04,$E7,$E6<br />
dc.w $04F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F3,$E7,$C7,$44,$F2<br />
ssamp6E: dc.b $33,$00,$10,$00,$31,$1F,$1D,$1E,$0E,$00,$0C,$1D<br />
dc.b $00,$00,$00,$01,$00,$0F,$0F,$0F,$0F,$08,$06,$07,$80<br />
<br />
<br />
Sound6F: dc.w z80_ptr(ssamp6A),$0103<br />
dc.w $8005,z80_ptr(++),$000B<br />
dc.w $8004,z80_ptr(+),$0012<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $E1,$02,$80,$02<br />
+ dc.b $EF,$00,$E6,$0C,$DF,$06,$E7,$E6,$F4,$06,$E7<br />
dc.b $E6,$F4,$12,$E7,$E6,$0C,$06,$E7,$E6,$0C,$06,$F2<br />
+ dc.b $F3,$E7,$C6,$04,$C0,$BA,$B4,$AE,$E6<br />
dc.b $01,$AE,$E6,$01,$AE,$E6,$01,$AE,$F2<br />
<br />
<br />
Sound70: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$C6,$18<br />
- dc.b $E7,$03,$E6<br />
dc.w $01F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to the other bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
; share these symbols externally (WARNING: don't rename, move or remove these labels!)<br />
shared movewZ80CompSize<br />
</asm><br />
<br />
We want to replace it with this optimized code:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===sound playback routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #$GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
<br />
==Driver data files==<br />
then unpack this into the sound folder and optionally remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the music and sound effects==<br />
Now we will open s2.constants.asm.<br><br />
===music===<br />
go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
that may be good if you were using the sonic2 driver, but obviously you are not, we need to change it.<br />
<asm><br />
MusID__First = 0<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
;for compatibility with sonic2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm><br />
the original music IDs in the compat section can be set to which ever ones you want in the above (I wouldn't recommend editing the 2PResult one though)<br />
===sound effects===</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208750
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-25T01:48:50Z
<p>Kram1024: /* Fixing the Music Playlist */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==<br />
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><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
move sr,-(sp)<br />
movem.l d0-a6,-(sp)<br />
move #$2700,sr<br />
lea (Z80_Bus_Request).l,a3<br />
lea (Z80_Reset).l,a2<br />
moveq #0,d2<br />
move.w #$100,d1<br />
move.w d1,(a3) ; get Z80 bus<br />
move.w d1,(a2) ; release Z80 reset (was held high by console on startup)<br />
- btst d2,(a3)<br />
bne.s - ; wait until the 68000 has the bus<br />
jsr DecompressSoundDriver(pc)<br />
btst #0,(VDP_control_port+1).l ; check video mode<br />
sne (Z80_RAM+zPalModeByte).l ; set if PAL<br />
move.w d2,(a2) ; hold Z80 reset<br />
move.w d2,(a3) ; release Z80 bus<br />
moveq #$E6,d0<br />
- dbf d0,- ; wait for 2,314 cycles<br />
move.w d1,(a2) ; release Z80 reset<br />
movem.l (sp)+,d0-a6<br />
move (sp)+,sr<br />
rts<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; slightly modified Saxman decompression of the sound driver<br />
; a4 == $A00000 (start of Z80 RAM)<br />
; a5 == current position in Z80 RAM?<br />
; a6 == current position in compressed sound driver?<br />
; d0 == data to decompress? (byte)<br />
; d4 == ???<br />
; d5 == ???<br />
; d6 == ???<br />
; d7 == bytes left to decompress<br />
; loc_EC04A:<br />
DecompressSoundDriver:<br />
lea Snd_Driver(pc),a6<br />
; WARNING: the build script needs editing if you rename this label<br />
movewZ80CompSize: move.w #Snd_Driver_End-Snd_Driver,d7 ; patched (by fixpointer.exe) after compression since the exact size can't be known beforehand<br />
moveq #0,d6<br />
lea (Z80_RAM).l,a5<br />
moveq #0,d5<br />
lea (Z80_RAM).l,a4<br />
<br />
loc_EC062:<br />
lsr.w #1,d6<br />
btst #8,d6<br />
bne.s +<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d6<br />
ori.w #$FF00,d6<br />
+<br />
btst #0,d6<br />
beq.s loc_EC086<br />
jsr sub_EC0DE(pc)<br />
move.b d0,(a5)+<br />
addq.w #1,d5<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC086:<br />
jsr sub_EC0DE(pc)<br />
moveq #0,d4<br />
move.b d0,d4<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d3<br />
andi.w #$F,d3<br />
addq.w #2,d3<br />
andi.w #$F0,d0<br />
lsl.w #4,d0<br />
add.w d0,d4<br />
addi.w #$12,d4<br />
andi.w #$FFF,d4<br />
move.w d5,d0<br />
andi.w #$F000,d0<br />
add.w d0,d4<br />
cmp.w d4,d5<br />
bhs.s loc_EC0CC<br />
subi.w #$1000,d4<br />
bcc.s loc_EC0CC<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b #0,(a5)+<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC0CC:<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b (a4,d4.w),(a5)+<br />
addq.w #1,d4<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; End of function DecompressSoundDriver<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_EC0DE:<br />
move.b (a6)+,d0<br />
subq.w #1,d7<br />
bne.s +<br />
addq.w #4,sp<br />
+<br />
rts<br />
; End of function sub_EC0DE<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; S2 sound driver (Sound driver compression (slightly modified Saxman))<br />
; ---------------------------------------------------------------------------<br />
; loc_EC0E8:<br />
Snd_Driver:<br />
save<br />
include "s2.sounddriver.asm" ; CPU Z80<br />
restore<br />
padding off<br />
!org (Snd_Driver+Size_of_Snd_driver_guess) ; don't worry; I know what I'm doing<br />
<br />
<br />
; loc_ED04C:<br />
Snd_Driver_End:<br />
<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ---------------------------------------------------------------------------<br />
; the DAC data has to line up with the end of the bank.<br />
<br />
; actually it only has to fit within one bank, but we'll line it up to the end anyway<br />
; because the padding gives the sound driver some room to grow<br />
cnop -Size_of_DAC_samples, $8000<br />
<br />
; ---------------------------------------------------------------------------<br />
; DAC samples<br />
; ---------------------------------------------------------------------------<br />
; loc_ED100:<br />
SndDAC_Start:<br />
<br />
SndDAC_Sample1:<br />
BINCLUDE "sound/DAC/Sample 1.bin"<br />
SndDAC_Sample1_End<br />
<br />
SndDAC_Sample2:<br />
BINCLUDE "sound/DAC/Sample 2.bin"<br />
SndDAC_Sample2_End<br />
<br />
SndDAC_Sample5:<br />
BINCLUDE "sound/DAC/Sample 5.bin"<br />
SndDAC_Sample5_End<br />
<br />
SndDAC_Sample6:<br />
BINCLUDE "sound/DAC/Sample 6.bin"<br />
SndDAC_Sample6_End<br />
<br />
SndDAC_Sample3:<br />
BINCLUDE "sound/DAC/Sample 3.bin"<br />
SndDAC_Sample3_End<br />
<br />
SndDAC_Sample4:<br />
BINCLUDE "sound/DAC/Sample 4.bin"<br />
SndDAC_Sample4_End<br />
<br />
SndDAC_Sample7:<br />
BINCLUDE "sound/DAC/Sample 7.bin"<br />
SndDAC_Sample7_End<br />
<br />
SndDAC_End<br />
<br />
if SndDAC_End - SndDAC_Start > $8000<br />
fatal "DAC samples must fit within $8000 bytes, but you have $\{SndDAC_End-SndDAC_Start } bytes of DAC samples."<br />
endif<br />
if SndDAC_End - SndDAC_Start > Size_of_DAC_samples<br />
fatal "Size_of_DAC_samples = $\{Size_of_DAC_samples}, but you have $\{SndDAC_End-SndDAC_Start} bytes of DAC samples."<br />
endif<br />
<br />
; ---------------------------------------------------------------------------<br />
; Music pointers<br />
; ---------------------------------------------------------------------------<br />
align $8000<br />
<br />
; loc_F0000:<br />
MusicPoint1:<br />
MusPtr_Continue: rom_ptr_z80 Mus_Continue-MusicPoint2<br />
<br />
<br />
Mus_Continue: BINCLUDE "sound/music/Continue.bin"<br />
<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ----------------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ----------------------------------------------------------------------------------<br />
; the PCM data has to line up with the end of the bank.<br />
cnop -Size_of_SEGA_sound, $8000<br />
<br />
; -------------------------------------------------------------------------------<br />
; Sega Intro Sound<br />
; 8-bit unsigned raw audio at 16Khz<br />
; -------------------------------------------------------------------------------<br />
; loc_F1E8C:<br />
Snd_Sega: BINCLUDE "sound/PCM/SEGA.bin"<br />
Snd_Sega_End:<br />
<br />
if Snd_Sega_End - Snd_Sega > $8000<br />
fatal "Sega sound must fit within $8000 bytes, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
if Snd_Sega_End - Snd_Sega > Size_of_SEGA_sound<br />
fatal "Size_of_SEGA_sound = $\{Size_of_SEGA_sound}, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
<br />
; ------------------------------------------------------------------------------<br />
; Music pointers<br />
; ------------------------------------------------------------------------------<br />
align $8000<br />
soundBankStart := *<br />
<br />
; loc_F8000:<br />
MusicPoint2:<br />
MusPtr_CNZ_2P: rom_ptr_z80 Mus_CNZ_2P<br />
MusPtr_EHZ: rom_ptr_z80 Mus_EHZ<br />
MusPtr_MTZ: rom_ptr_z80 Mus_MTZ<br />
MusPtr_CNZ: rom_ptr_z80 Mus_CNZ<br />
MusPtr_MCZ: rom_ptr_z80 Mus_MCZ<br />
MusPtr_MCZ_2P: rom_ptr_z80 Mus_MCZ_2P<br />
MusPtr_ARZ: rom_ptr_z80 Mus_ARZ<br />
MusPtr_DEZ: rom_ptr_z80 Mus_DEZ<br />
MusPtr_SpecStage: rom_ptr_z80 Mus_SpecStage<br />
MusPtr_Options: rom_ptr_z80 Mus_Options<br />
MusPtr_Ending: rom_ptr_z80 Mus_Ending<br />
MusPtr_EndBoss: rom_ptr_z80 Mus_EndBoss<br />
MusPtr_CPZ: rom_ptr_z80 Mus_CPZ<br />
MusPtr_Boss: rom_ptr_z80 Mus_Boss<br />
MusPtr_SCZ: rom_ptr_z80 Mus_SCZ<br />
MusPtr_OOZ: rom_ptr_z80 Mus_OOZ<br />
MusPtr_WFZ: rom_ptr_z80 Mus_WFZ<br />
MusPtr_EHZ_2P: rom_ptr_z80 Mus_EHZ_2P<br />
MusPtr_2PResult: rom_ptr_z80 Mus_2PResult<br />
MusPtr_SuperSonic: rom_ptr_z80 Mus_SuperSonic<br />
MusPtr_HTZ: rom_ptr_z80 Mus_HTZ<br />
MusPtr_ExtraLife: rom_ptr_z80 Mus_ExtraLife<br />
MusPtr_Title: rom_ptr_z80 Mus_Title<br />
MusPtr_EndLevel: rom_ptr_z80 Mus_EndLevel<br />
MusPtr_GameOver: rom_ptr_z80 Mus_GameOver<br />
MusPtr_Invincible: rom_ptr_z80 Mus_Invincible<br />
MusPtr_Emerald: rom_ptr_z80 Mus_Emerald<br />
MusPtr_HPZ: rom_ptr_z80 Mus_HPZ<br />
MusPtr_Drowning: rom_ptr_z80 Mus_Drowning<br />
MusPtr_Credits: rom_ptr_z80 Mus_Credits<br />
<br />
; loc_F803C:<br />
Mus_HPZ: BINCLUDE "sound/music/HPZ.bin"<br />
Mus_Drowning: BINCLUDE "sound/music/Drowning.bin"<br />
Mus_Invincible: BINCLUDE "sound/music/Invincible.bin"<br />
Mus_CNZ_2P: BINCLUDE "sound/music/CNZ_2p.bin"<br />
Mus_EHZ: BINCLUDE "sound/music/EHZ.bin"<br />
Mus_MTZ: BINCLUDE "sound/music/MTZ.bin"<br />
Mus_CNZ: BINCLUDE "sound/music/CNZ.bin"<br />
Mus_MCZ: BINCLUDE "sound/music/MCZ.bin"<br />
Mus_MCZ_2P: BINCLUDE "sound/music/MCZ_2p.bin"<br />
Mus_ARZ: BINCLUDE "sound/music/ARZ.bin"<br />
Mus_DEZ: BINCLUDE "sound/music/DEZ.bin"<br />
Mus_SpecStage: BINCLUDE "sound/music/SpecStg.bin"<br />
Mus_Options: BINCLUDE "sound/music/Options.bin"<br />
Mus_Ending: BINCLUDE "sound/music/Ending.bin"<br />
Mus_EndBoss: BINCLUDE "sound/music/End_Boss.bin"<br />
Mus_CPZ: BINCLUDE "sound/music/CPZ.bin"<br />
Mus_Boss: BINCLUDE "sound/music/Boss.bin"<br />
Mus_SCZ: BINCLUDE "sound/music/SCZ.bin"<br />
Mus_OOZ: BINCLUDE "sound/music/OOZ.bin"<br />
Mus_WFZ: BINCLUDE "sound/music/WFZ.bin"<br />
Mus_EHZ_2P: BINCLUDE "sound/music/EHZ_2p.bin"<br />
Mus_2PResult: BINCLUDE "sound/music/2player results screen.bin"<br />
Mus_SuperSonic: BINCLUDE "sound/music/Supersonic.bin"<br />
Mus_HTZ: BINCLUDE "sound/music/HTZ.bin"<br />
Mus_Title: BINCLUDE "sound/music/Title screen.bin"<br />
Mus_EndLevel: BINCLUDE "sound/music/End of level.bin"<br />
<br />
; The following act mostly like sound effects<br />
; despite being listed with the music.<br />
; This means they're uncompressed format with absolute pointers<br />
; instead of compressed with relative pointers.<br />
; Because they have absolute pointers,<br />
; they have to be assembled rather than BINCLUDE'd.<br />
; See below (right before Sound20) for other notes<br />
; about the sound format that apply to these too.<br />
<br />
;Mus_ExtraLife: BINCLUDE "sound/music/Extra life.bin"<br />
Mus_ExtraLife: dc.w z80_ptr(Mus_EL_Voices),$0603,$02CD<br />
dc.w z80_ptr(Mus_EL_DAC),$0000<br />
dc.w z80_ptr(Mus_EL_FM1),$E810<br />
dc.w z80_ptr(Mus_EL_FM2),$E810<br />
dc.w z80_ptr(Mus_EL_FM3),$E810<br />
dc.w z80_ptr(Mus_EL_FM4),$E810<br />
dc.w z80_ptr(Mus_EL_FM5),$E810<br />
dc.w z80_ptr(Mus_EL_PSG1),$D008,$0005<br />
dc.w z80_ptr(Mus_EL_PSG2),$DC08,$0005<br />
dc.w z80_ptr(Mus_EL_PSG3),$DC00,$0004<br />
Mus_EL_FM4: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM1: dc.b $E0,$80<br />
+ dc.b $EF,$00,$E8,$06,$D9,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$DB,$09,$D7,$D6,$06,$D9,$18,$F2<br />
Mus_EL_FM2: dc.b $EF,$01,$E8,$06,$E2,$01,$D6,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$D7,$09,$D4,$D2,$06,$D6,$18,$E2,$01,$F2<br />
Mus_EL_FM5: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM3: dc.b $E0,$80<br />
+ dc.b $EF,$02,$BA,$0C,$80,$06,$BA,$B8,$80,$03<br />
dc.b $B8,$06,$80,$03,$B8,$06,$BA,$18,$F2<br />
Mus_EL_PSG1: dc.b $E8,$06,$D6,$06,$03,$03,$06,$06,$E8,$00,$D7,$09<br />
dc.b $D4,$D2,$06,$D6,$18<br />
Mus_EL_PSG2:<br />
Mus_EL_PSG3: dc.b $F2<br />
Mus_EL_DAC: dc.b $88,$12,$06,$8B,$09,$09,$06,$88,$06,$8A,$88,$8A<br />
dc.b $88,$0C,$E4<br />
Mus_EL_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
<br />
<br />
;Mus_GameOver: BINCLUDE "sound/music/Game over.bin"<br />
Mus_GameOver: dc.w z80_ptr(MusGO_Voices),$0603,$02F2<br />
dc.w z80_ptr(MusGOver_DAC),$0000<br />
dc.w z80_ptr(MusGOver_FM1),$E80A<br />
dc.w z80_ptr(MusGOver_FM2),$F40F<br />
dc.w z80_ptr(MusGOver_FM3),$F40F<br />
dc.w z80_ptr(MusGOver_FM4),$F40D<br />
dc.w z80_ptr(MusGOver_FM5),$DC16<br />
dc.w z80_ptr(MusGOver_PSG),$D003,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC06,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC00,$0004<br />
MusGOver_FM1: dc.b $EF,$00<br />
dc.b $F0,$20,$01,$04,$05<br />
dc.b $80,$0C,$CA,$12,$80,$06,$CA,$80,$CB,$12,$C8,$1E<br />
dc.b $CA,$06,$80,$CA,$80,$CA,$80,$C6,$80,$C4,$12,$C8<br />
dc.b $0C,$80,$12,$C9,$04,$80,$C9,$C8,$06,$80,$C7,$80<br />
dc.b $C6,$80<br />
dc.b $F0,$28,$01,$18,$05<br />
dc.b $C5,$60,$F2<br />
MusGOver_FM2: dc.b $EF,$01,$80,$01,$D9,$06,$80,$D9,$80,$D6,$80,$D6<br />
dc.b $80,$D7,$15,$D7,$1B,$D9,$06,$80,$D9,$80,$D6,$80<br />
dc.b $D6,$80,$DC,$15,$DC,$1B,$F2<br />
MusGOver_FM3: dc.b $EF,$01,$D6,$0C,$D6,$D2,$D2,$D4,$15,$D4,$1B,$D6<br />
dc.b $0C,$D6,$D2,$D2,$D7,$15,$D7,$1B,$F2<br />
MusGOver_FM4: dc.b $EF,$02,$E2,$01,$AE,$06,$80,$AE,$80,$A9,$80,$A9<br />
dc.b $80,$AC,$15,$AB,$0C,$AC,$03,$AB,$0C,$AE,$06,$80<br />
dc.b $AE,$80,$A9,$80,$A9,$80,$B3,$15,$B2,$0C,$B3,$03<br />
dc.b $B2,$0C,$AE,$04,$80,$AE,$AD,$06,$80,$AC,$80,$AB<br />
dc.b $80,$AB,$60,$E2,$01,$F2<br />
MusGOver_FM5: dc.b $EF,$03,$80,$30,$D7,$12,$80,$03,$D7,$1B,$80,$30<br />
dc.b $DC,$12,$80,$03,$DC,$1B<br />
MusGOver_PSG: dc.b $F2<br />
MusGOver_DAC: dc.b $80,$18,$81<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(MusGOver_DAC)<br />
dc.b $F2<br />
MusGO_Voices: dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $3C,$33,$73,$30,$70,$94,$96,$9F,$9F,$12,$14,$00<br />
dc.b $0F,$04,$04,$0A,$0D,$2F,$4F,$0F,$2F,$33,$1A,$80,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$1C,$27,$28,$80<br />
dc.b $1F,$66,$53,$31,$22,$1C,$1F,$98,$1F,$12,$0F,$0F<br />
dc.b $0F,$00,$00,$00,$00,$FF,$0F,$0F,$0F,$8C,$8A,$8D,$8B<br />
<br />
;Mus_Emerald: BINCLUDE "sound/music/Got an emerald.bin"<br />
Mus_Emerald: dc.w z80_ptr(MusEmrldVoices),$0703,$01D5<br />
dc.w z80_ptr(MusEmeraldDAC),$0000<br />
dc.w z80_ptr(MusEmeraldFM1),$F408<br />
dc.w z80_ptr(MusEmeraldFM2),$F408<br />
dc.w z80_ptr(MusEmeraldFM3),$F407<br />
dc.w z80_ptr(MusEmeraldFM4),$F416<br />
dc.w z80_ptr(MusEmeraldFM5),$F416<br />
dc.w z80_ptr(MusEmeraldFM6),$F416<br />
dc.w z80_ptr(MusEmeraldPSG1),$F402,$0004<br />
dc.w z80_ptr(MusEmeraldPSG2),$F402,$0005<br />
dc.w z80_ptr(MusEmeraldPSG3),$F400,$0004<br />
MusEmeraldFM3: dc.b $E1,$02<br />
MusEmeraldFM1: dc.b $EF,$00,$C1,$06,$C4,$C9,$CD,$0C,$C9,$D0,$2A,$F2<br />
MusEmeraldFM2: dc.b $EF,$00,$BD,$06,$C1,$C4,$C9,$0C,$C6,$CB,$2A,$F2<br />
MusEmeraldFM4: dc.b $EF,$01,$C1,$0C,$C1,$06,$C4,$06,$80,$C4,$80,$C9<br />
dc.b $2A,$F2<br />
MusEmeraldFM5: dc.b $EF,$01,$C9,$0C,$C9,$06,$CD,$06,$80,$CD,$80,$D0<br />
dc.b $2A,$F2<br />
MusEmeraldFM6: dc.b $EF,$01,$C4,$0C,$C4,$06,$C9,$06,$80,$C9,$80,$CD<br />
dc.b $2A,$F2<br />
MusEmeraldPSG2: dc.b $80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusEmeraldPSG1: dc.b $E2,$01,$80,$02,$80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
MusEmeraldPSG3:<br />
MusEmeraldDAC: dc.b $E2,$01,$F2<br />
MusEmrldVoices: dc.b $04,$35,$54,$72,$46,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$1D,$14,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$07,$07,$1A,$16,$80,$80<br />
<br />
;Mus_Credits: BINCLUDE "sound/music/Credits.bin"<br />
Mus_Credits: dc.w z80_ptr(MusCred_Voices),$0603,$01F0<br />
dc.w z80_ptr(MusCred_DAC),$0000<br />
dc.w z80_ptr(MusCred_FM1),$000E<br />
dc.w z80_ptr(MusCred_FM2),$180A<br />
dc.w z80_ptr(MusCred_FM3),$0014<br />
dc.w z80_ptr(MusCred_FM4),$0016<br />
dc.w z80_ptr(MusCred_FM5),$0C16<br />
dc.w z80_ptr(MusCred_PSG1),$E806,$000B<br />
dc.w z80_ptr(MusCred_PSG2),$DC07,$000B<br />
dc.w z80_ptr(MusCred_PSG3),$0002,$0003<br />
MusCred_FM1: dc.b $E9,$F4,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$0C,$E6,$02<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$03,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $AE,$06,$A2,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $E6,$FD<br />
- dc.b $EF,$00,$B7,$06,$BA,$F8<br />
dc.w z80_ptr(MusCreditsDA13)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$06,$80,$80,$30,$80,$EF,$0B,$E9,$18,$E6,$02<br />
- dc.b $94,$0C,$8F,$92,$8F,$06,$94,$05,$94,$07,$06,$8F<br />
dc.b $0C,$92,$8F<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$30,$80,$EF,$0E,$E6,$FF,$E9,$E8,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$91,$94,$06,$80,$18,$96,$12,$9A,$06,$80<br />
dc.b $80,$12,$8F,$93,$08,$80,$16,$96,$06,$91,$92,$94<br />
dc.b $96,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$9D,$9A,$08,$80,$16,$96,$12,$9D,$08,$80<br />
dc.b $04,$EF,$12<br />
dc.b $F0,$18,$01,$0A,$04<br />
dc.b $80,$30,$80,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$24,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$EF,$01,$E9,$F4,$E6,$FA,$F4<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $80,$03,$80,$60,$E6,$04,$E1,$01,$EF,$1B,$E6,$06<br />
dc.b $C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80,$EF<br />
dc.b $1C,$E6,$FA,$E8,$00,$BC,$0C,$12,$06,$EF,$1B,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$80,$E8,$06,$C4,$06,$06,$C6,$C4,$E8<br />
dc.b $00,$C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80<br />
dc.b $E8,$00,$EF,$1C,$E6,$FA,$C1,$C4,$C1,$EF,$1A,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$06,$80,$80,$24,$80,$30,$80,$EF,$1F<br />
dc.b $E9,$18,$E6,$F7,$E1,$00,$80,$06,$AC,$AE,$80,$B1<br />
dc.b $80,$B3,$80,$B4,$80,$B3,$80,$B1,$B3,$80,$B1,$E9<br />
dc.b $F4,$EF,$00,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC<br />
dc.b $06,$AE,$B1,$80,$B4,$B1,$80,$B1,$E9,$0C,$EF,$1F<br />
dc.b $80,$06,$B8,$12,$B4,$06,$80,$B3,$80,$B4,$80,$B3<br />
dc.b $80,$B1,$AE,$80,$B1,$E9,$F4,$EF,$00,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$30,$80,$EF,$21,$E9,$0C,$80,$30,$80<br />
dc.b $08,$A0,$04,$9E,$0C,$9D,$9B,$99,$08,$04,$91,$0C<br />
dc.b $92,$93,$94,$98,$99,$9B,$9D,$98,$95,$93,$91,$98<br />
dc.b $9D,$91,$96,$98,$99,$98,$96,$99,$9D,$96,$95,$97<br />
dc.b $99,$97,$95,$96,$97,$98,$99,$98,$99,$9B,$9D,$08<br />
dc.b $04,$98,$0C,$91,$95,$96,$98,$99,$9D,$9E,$08,$96<br />
dc.b $10,$97,$0C,$98,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$08,$99,$04,$EF,$23,$E9,$E8,$E6,$07,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $80,$60,$E6,$FB,$80,$0C,$CD,$06,$80,$D4,$CD,$06<br />
dc.b $80,$0C,$CD,$06,$80,$D4,$CD,$06,$80,$18,$E6,$05<br />
dc.b $80,$0C,$AE,$80,$AE,$80,$24,$E1,$02,$E6,$08,$A2<br />
dc.b $6C,$F2<br />
MusCreditsD9D1: dc.b $A5,$0C,$B1,$06,$80,$B1,$0C,$AC,$B3,$12,$B1,$0C<br />
dc.b $AC,$06,$AE,$B1,$A7,$0C,$B3,$06,$80,$B3,$0C,$AE<br />
dc.b $B5,$12,$B3,$06,$80,$AE,$B0,$B3,$A3,$0C,$AF,$06<br />
dc.b $80,$AF,$0C,$AA,$B1,$12,$AF,$0C,$AA,$06,$AC,$AF<br />
dc.b $A2,$0C,$AE,$06,$A2,$A4,$0C,$B0,$06,$A4,$A5,$0C<br />
dc.b $B1,$06,$A5,$A2,$0C,$E3<br />
MusCreditsDA13: dc.b $BE,$0C,$BC,$06,$BA,$BC,$BA,$04,$E7,$08,$BA,$04<br />
dc.b $80,$0E,$EF,$07,$B7,$06,$B2,$B5,$B7,$EF,$00,$B7<br />
dc.b $BA,$BE,$0C,$BC,$06,$BA,$BC,$BA,$0C,$BC,$04,$80<br />
dc.b $08,$BA,$04,$80,$08,$BC,$04,$80,$08,$BE,$12,$BA<br />
dc.b $06,$B7,$80,$B7,$80,$24,$EF,$07,$B7,$06,$B2,$B5<br />
dc.b $B7,$80,$0C,$80,$30,$BE,$06,$BE,$BA,$04,$80,$08<br />
dc.b $BC,$06,$BE,$E3<br />
MusCreditsDA5F: dc.b $C3,$01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$02,$C3<br />
dc.b $01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01<br />
dc.b $E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$FC,$C3,$01,$E7<br />
dc.b $C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01,$E7,$C4<br />
dc.b $E7,$C5,$E7,$C6,$2D,$E7,$30,$E7,$30,$E3<br />
MusCreditsDA99: dc.b $A7,$0C,$B3,$06,$80,$B1,$80,$B3,$0C,$A7,$03,$80<br />
dc.b $06,$A7,$03,$B3,$0C,$B1,$B3,$09,$AE,$03,$AC,$06<br />
dc.b $80,$AC,$0C,$AE,$06,$80,$AE,$0C,$AF,$06,$80,$27<br />
dc.b $E3<br />
MusCreditsDABE: dc.b $80,$0C,$CA,$15,$80,$03,$CA,$06,$80,$CB,$0F,$80<br />
dc.b $03,$C8,$18,$80,$06,$CA,$80,$CA,$80,$CA,$80,$C6<br />
dc.b $80,$C4,$0F,$80,$03,$C8,$18,$80,$06<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E3<br />
MusCreditsDAE5: dc.b $80,$12,$94,$97,$06,$80,$18,$99,$12,$94,$06,$80<br />
dc.b $80,$12,$92,$96,$06,$80,$18,$97,$12,$92,$06,$80<br />
dc.b $E3<br />
MusCreditsDAFE: dc.b $80,$99,$80,$99,$80,$9E,$80,$E3<br />
MusCreditsDB06: dc.b $EF,$07,$80,$54,$C7,$04,$C8,$C9,$CA,$24,$CD,$D2<br />
dc.b $18,$D0,$24,$CF,$CB,$18,$CB,$0C,$CA,$80,$CD,$60<br />
dc.b $E7,$3C,$CA,$24,$CD,$D2,$18,$D4,$24,$D0,$D4,$18<br />
dc.b $D4,$24,$D6,$60,$E7,$3C,$E3<br />
MusCred_FM2: dc.b $80,$60,$EF,$01,$E8,$06,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $85,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8A,$87,$88,$89,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $88<br />
dc.b $F7,$00,$0B<br />
dc.w z80_ptr(-)<br />
- dc.b $8A<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$E6,$FC,$8A,$8B,$8C,$E6,$04,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$8D,$8A,$8B,$8C,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8D,$06,$99,$E8,$00,$8A,$0C,$8B,$8C,$E9,$E8,$E6<br />
dc.b $0C,$EF,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E6,$F9,$EF,$08<br />
MusCreditsDB93: dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $06,$9C,$12,$9D,$0C,$9E,$F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9D,$04,$80,$08,$9D,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $9C,$04,$80,$08,$9C,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(MusCreditsDB93)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$13,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$60,$EF,$0F,$E6,$F3<br />
dc.b $F0,$04,$02,$03,$02<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$30,$E7,$18,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$EF,$13,$E6,$F5,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$0C,$A9,$08,$A1,$10,$F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$08,$A9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E1,$02,$E9,$F4,$E6,$0A,$F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$EF,$1B,$E1,$00<br />
dc.b $E8,$06,$80,$3C,$B8,$06,$06,$BA,$BD,$BD,$BA,$EF<br />
dc.b $1D,$E6,$FA,$E8,$00,$F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $EF,$1C,$BD,$EF,$1D,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $80,$30,$80,$EF,$01,$E9,$18,$E6,$F9<br />
- dc.b $99,$0C,$A5,$06,$80,$96,$0C,$A2,$06,$80,$97,$0C<br />
dc.b $A3,$06,$80,$98,$0C,$A8,$06,$A7,$99,$06,$99,$12<br />
dc.b $96,$0C,$A2,$06,$80,$97,$0C,$A3,$06,$80,$98,$0C<br />
dc.b $A4,$06,$80<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$22,$E9,$E8,$E6,$03<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$AC,$04,$AE,$08,$B1,$04,$B5,$30,$80,$0C<br />
dc.b $B5,$08,$80,$04,$B6,$08,$B5,$10,$B9,$08,$04,$80<br />
dc.b $08,$B5,$34,$80,$0C,$B5,$BA,$08,$04,$80,$08,$B5<br />
dc.b $04,$B1,$24,$80,$0C,$B1,$08,$80,$04,$B3,$08,$B1<br />
dc.b $04,$B4,$0C,$B3,$08,$B1,$4C,$80,$0C,$B5,$08,$80<br />
dc.b $04,$B6,$08,$80,$04,$B5,$08,$80,$04,$B9,$08,$04<br />
dc.b $80,$08,$B5,$1C,$80,$0C,$BA,$18,$BC,$08,$BA,$04<br />
dc.b $BD,$18,$80,$0C,$BA,$04,$80,$08,$B8,$18,$B5,$B1<br />
dc.b $B3,$0C,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$0C,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$14,$B1,$04,$E6,$FF,$EF,$24,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $AC,$12,$AB,$0C,$AC,$06,$AB,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $B3,$12,$B2,$0C,$B3,$06,$B2,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $AC,$06,$80,$A9,$80,$AA,$80,$AB,$80,$AC,$AC,$A9<br />
dc.b $80,$AA,$80,$AC,$80,$A9,$80,$A9,$80,$AD,$80,$AD<br />
dc.b $80,$B0,$80,$B0,$80,$B3,$80,$B3,$80,$80,$0C,$A2<br />
dc.b $12,$80,$06,$A2,$12,$AD,$AE,$06,$80,$E6,$FD,$A2<br />
dc.b $6C,$F2<br />
MusCreditsDD59: dc.b $80,$0C,$C4,$06,$80,$C6,$80,$C4,$80,$C9,$80,$C9<br />
dc.b $80,$CB,$CD,$80,$0C,$80,$CB,$18,$C6,$06,$80,$C9<br />
dc.b $C9,$80,$CB,$0C,$80,$12,$80,$1E,$C7,$06,$C9,$C7<br />
dc.b $CB,$80,$C9,$80,$C7,$C9,$80,$C6,$E7,$C6,$30,$E7<br />
dc.b $18,$80,$18,$E3<br />
MusCreditsDD8D: dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
dc.b $06,$AB,$9F,$0C,$E3<br />
MusCreditsDD9D: dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$B6,$80,$18<br />
dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$30,$E7,$E3<br />
MusCreditsDDB5: dc.b $BF,$06,$BD,$BF,$12,$C2,$BF,$0C,$C1,$80,$06,$12<br />
dc.b $C4,$0C,$C2,$06,$80,$C9,$C6,$3C,$80,$06,$0C,$C7<br />
dc.b $12,$C6,$C4,$06,$C2,$C1,$18,$E3<br />
MusCreditsDDD5: dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$E3<br />
MusCreditsDDEA: dc.b $A2,$0C,$AE,$AC,$08,$AE,$04,$AC,$08,$A9,$04,$A7<br />
dc.b $08,$04,$E3<br />
MusCreditsDDF9: dc.b $80,$0C,$B1,$AE,$06,$06,$AC,$0C,$80,$B0,$AE,$06<br />
dc.b $06,$AC,$0C,$E3<br />
MusCreditsDE09: dc.b $AE,$AC,$06,$06,$AA,$0C,$80,$AC,$0C,$06,$06,$AE<br />
dc.b $AC,$E3<br />
MusCreditsDE17: dc.b $BA,$04,$80,$08,$B8,$18,$B5,$B1,$E3<br />
MusCreditsDE20: dc.b $AE,$06,$80,$AE,$80,$A9,$80,$A9,$80,$E3<br />
MusCreditsDE2A: dc.b $8A,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $E3<br />
MusCred_FM3: dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$18,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $B8,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $BD,$3C,$E9,$E8,$E6,$02,$E1,$03,$EF,$04,$E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$09,$E9,$0C,$E6,$FD,$E0,$40<br />
dc.b $F0,$06,$01,$05,$04<br />
dc.b $E1,$00<br />
- dc.b $9F,$0C,$AB,$06,$80,$A9,$80,$AB,$9F,$80,$9F,$AB<br />
dc.b $80,$A9,$80,$AB,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $9D,$0C,$A9,$06,$80,$A8,$80,$A9,$9C,$80,$9C,$A8<br />
dc.b $80,$A6,$80,$A8,$0C<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0D,$E6,$FB,$E0,$C0,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0F,$E0,$80,$E6,$0B,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$48,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$0C<br />
dc.b $F0,$18,$01,$03,$04<br />
dc.b $E6,$F3,$E0,$C0,$EF,$14,$A2,$14,$A4,$04,$A5,$04<br />
dc.b $80,$08,$A9,$04,$80,$08,$A8,$04,$80,$08,$A9,$04<br />
dc.b $80,$08,$AC,$08,$A9,$10<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$18,$E9,$F4,$E6,$08,$F4,$E0,$40,$80,$60,$80<br />
dc.b $30,$C6,$06,$80,$C2,$0C,$C4,$09,$C2,$03,$BF,$0C<br />
dc.b $80,$60,$80,$3C,$80,$60,$EF,$1B,$E6,$FB,$E0,$C0<br />
dc.b $E8,$06,$C4,$06,$06,$C6,$C9,$C9,$C6,$E8,$00,$CD<br />
dc.b $0C,$E8,$06,$C9,$06,$C6,$C9,$0C,$80,$80,$12,$EF<br />
dc.b $1C,$E8,$00,$BD,$BA,$0C,$E8,$06,$EF,$1B,$CE,$06<br />
dc.b $CE,$80,$CE,$80,$CE,$E8,$00,$CF,$0C,$D0,$80,$E8<br />
dc.b $06,$D0,$06,$06,$D2,$D0,$E8,$00,$CD,$0C,$E8,$06<br />
dc.b $C9,$06,$C6,$C9,$0C,$E8,$00,$EF,$1C,$80,$1E,$C2<br />
dc.b $0C,$C2,$BD,$06,$80,$60,$80,$60,$EF,$00,$E9,$18<br />
dc.b $80,$60,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC,$06<br />
dc.b $AE,$B1,$80,$B4,$B1,$80,$B1,$80,$60,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$60,$EF,$22,$E9,$DC,$E6,$FF,$E0,$80<br />
dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $CD,$30,$CB,$18,$CD,$0C,$CB,$C9,$30,$CE,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$FC,$80,$C4,$80,$C4,$80,$C6,$18,$08,$C4,$04<br />
dc.b $E9,$0C,$E6,$FF,$E0,$C0,$EF,$00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $CB,$12,$CB,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $D0,$12,$D0,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$CB,$12,$80,$06,$CB,$80,$CA,$12,$CB,$CA<br />
dc.b $0C,$C5,$18,$C8,$CB,$D1,$80,$0C,$CD,$80,$CD,$12<br />
dc.b $CC,$CD,$06,$80,$E6,$F8,$EF,$01,$E1,$03,$A2,$6C<br />
dc.b $F2<br />
MusCreditsDFF2: dc.b $80,$60,$BC,$06,$BD,$BC,$B8,$BA,$B6,$0C,$B8,$B3<br />
dc.b $B3,$06,$B6,$0C,$B8,$E3<br />
MusCreditsE004: dc.b $80,$0C,$CD,$04,$80,$10,$CD,$04,$80,$0C,$CD,$0C<br />
dc.b $CE,$08,$CD,$04,$80,$18,$80,$0C,$CB,$04,$80,$10<br />
dc.b $CB,$04,$80,$0C,$CB,$0C,$CD,$08,$CB,$04,$80,$18<br />
- dc.b $80,$0C,$C9,$04,$80,$10,$C9,$04,$80,$0C,$C9,$0C<br />
dc.b $CB,$08,$C9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E3<br />
MusCreditsE040: dc.b $80,$18,$B8,$0B,$80,$0D,$BA,$0C,$0B,$80,$19,$BD<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE051: dc.b $80,$0C,$C4,$80,$C4,$80,$C6,$80,$C6,$E3<br />
MusCreditsE05B: dc.b $CD,$06,$80,$CD,$80,$CA,$80,$CA,$80,$E3<br />
MusCreditsE065: dc.b $EF,$05,$E9,$F4,$C6,$60,$CB,$CD,$E7,$CD,$C6,$60<br />
dc.b $D0,$D0,$24,$D2,$60,$E7,$3C,$E3<br />
MusCred_FM4: dc.b $80,$60,$E9,$FB,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$1D,$E6,$02,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B5,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B8,$3C,$E6,$06,$EF,$05<br />
dc.b $F0,$02,$01,$FE,$04<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E9,$F4,$E6,$F7<br />
dc.b $F0,$0C,$01,$FB,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$25,$C3,$06,$C3,$80,$0C,$C3,$06,$C3,$05,$80<br />
dc.b $0D,$C3,$06,$C5,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$05,$F4,$E1,$02,$E0<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$0C,$80,$60,$EF,$10,$E6,$F7,$E1,$00,$E0<br />
dc.b $40,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $B3,$B7,$06,$AE,$0C,$B1,$B3,$B7,$06,$80,$B7,$AE<br />
dc.b $0C,$B1,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $EF,$15,$E6,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
- dc.b $EF,$14,$80,$4E,$E0,$40,$A1,$12,$A2,$06,$E0,$C0<br />
dc.b $EF,$16,$80,$30,$80,$06,$BA,$08,$B9,$04,$B8,$08<br />
dc.b $B7,$04,$B6,$08,$B5,$04<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E9,$F4,$E6,$02,$E0,$C0<br />
dc.b $F0,$01,$01,$03,$03<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$1E,$E0,$40,$E6,$FE,$E9,$F4,$F4,$E8<br />
dc.b $06,$80,$0C,$C1,$06,$12,$18,$C4,$06,$12,$0C,$EF<br />
dc.b $1C,$E0,$C0,$E6,$FA,$E8,$00,$C6,$E8,$06,$E6,$06<br />
dc.b $EF,$1E,$E0,$40,$C2,$06,$12,$18,$C4,$06,$12,$18<br />
dc.b $C1,$06,$12,$18,$C4,$06,$12,$0C,$EF,$1A,$E0,$C0<br />
dc.b $E9,$0C,$C6,$06,$C6,$80,$C6,$80,$C6,$E8,$00,$C7<br />
dc.b $0C,$C8,$06,$EF,$1E,$E0,$40,$E9,$F4,$E8,$06,$80<br />
dc.b $C4,$06,$12,$0C,$80,$60,$EF,$20,$E9,$18,$E6,$FA<br />
dc.b $E0,$C0,$E8,$00,$B4,$03,$E7,$B6,$5D,$B3,$03,$E7<br />
dc.b $B5,$5D,$B1,$03,$E7,$B3,$5D,$B3,$03,$E7,$B5,$5D<br />
dc.b $80,$60,$EF,$22,$E0,$40,$E9,$E8,$E6,$04,$80,$30<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $C9,$30,$C8,$18,$C9,$0C,$C8,$C6,$30,$C9,$80,$0C<br />
dc.b $C1,$80,$C1,$80,$C2,$80,$C2,$E6,$04,$80,$C1,$80<br />
dc.b $C1,$80,$C2,$80,$C2,$E6,$FC,$80,$C1,$80,$C1,$80<br />
dc.b $C2,$18,$08,$C1,$04,$E9,$0C,$E6,$FF,$E0,$C0,$EF<br />
dc.b $00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $C8,$12,$C8,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $CB,$12,$CB,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E1,$03,$E6,$08,$F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $E6,$F0,$EF,$01<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $A2,$6C,$F2<br />
MusCreditsE22D: dc.b $A2,$14,$A4,$04,$A5,$04,$80,$08,$A9,$04,$80,$08<br />
dc.b $A8,$04,$80,$08,$A9,$04,$80,$08,$AC,$08,$A9,$10<br />
dc.b $E3<br />
MusCreditsE246: dc.b $80,$0C<br />
dc.b $C9,$04,$80,$10<br />
dc.b $C9,$04,$80,$0C<br />
dc.b $C9,$0C<br />
dc.b $CB,$08<br />
dc.b $C9,$04,$80,$18,$80,$0C<br />
dc.b $C8,$04,$80,$10<br />
dc.b $C8,$04,$80,$0C<br />
dc.b $C8,$0C<br />
dc.b $C9,$08<br />
dc.b $C8,$04,$80,$18,$80,$0C<br />
<br />
if 1==1<br />
; this part of the original credits music (CNZ PSG) sounds buggy (dissonant)<br />
dc.b $C6,$04,$80,$10<br />
dc.b $C6,$04,$80,$0C<br />
dc.b $C6,$0C<br />
dc.b $C8,$08<br />
dc.b $C6,$04,$80,$18,$80,$0C<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $C7,$08<br />
else<br />
; replace the above block of notes with this to fix it.<br />
; (I'm not sure why, but the notes $C6 and $C7 are broken here,<br />
; so I've replaced them with pitch-shifted $C8s)<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$10 ; $C6<br />
dc.b $C8,$04,$80,$0C ; $C6<br />
dc.b $C8,$0C ; $C6<br />
dc.b $E1,0<br />
dc.b $C8,$08<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$24 ; $C6<br />
dc.b $E1,0<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $E1,-32<br />
dc.b $C8,$08 ; $C7<br />
dc.b $E1,0<br />
endif<br />
<br />
dc.b $C5,$04,$80,$18<br />
dc.b $E3<br />
MusCreditsE28F: dc.b $EF,$25,$80,$0C,$D0,$D4,$D7,$DB,$0C,$80,$06,$DB<br />
dc.b $0C,$DC,$06,$DB,$0C,$DD,$60,$DE,$0C,$80,$DE,$80<br />
dc.b $80,$06,$DD,$12,$DE,$0C,$E3<br />
MusCreditsE2AE: dc.b $80,$18,$B5,$0B,$80,$0D,$B7,$0C,$0B,$80,$19,$BA<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE2BF: dc.b $C3,$05,$80,$13,$C3,$12,$C3,$05,$E3<br />
MusCreditsE2C8: dc.b $CA,$06,$80,$CA,$80,$C6,$80,$C6,$80,$E3<br />
MusCreditsE2D2: dc.b $AF,$0C,$B3,$06,$B6,$0C,$AF,$B1,$06,$80,$B1,$0C<br />
dc.b $B5,$06,$B8,$0C,$B1,$06,$80,$B6,$0C,$BA,$06,$B1<br />
dc.b $0C,$B5,$B6,$BA,$06,$80,$BA,$AF,$0C,$B3,$B5,$B8<br />
dc.b $06,$B2,$0C,$B3,$B5,$B8,$06,$80,$B8,$B2,$0C,$B5<br />
dc.b $E3<br />
MusCred_FM5: dc.b $E9,$E8,$E6,$F8,$E1,$05,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$18,$E6,$08,$E1,$00,$EF,$02<br />
dc.b $F0,$0C,$01,$FC,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B1,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B5,$3C,$E9,$F4,$E6,$07<br />
dc.b $F0,$30,$01,$04,$04<br />
dc.b $EF,$06<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E6,$F6<br />
dc.b $F0,$0C,$01,$05,$04<br />
dc.b $E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$25,$C6,$06,$C6,$80,$0C,$C6,$06,$C6,$05,$80<br />
dc.b $0D,$C6,$06,$C8,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$E6,$05,$F4,$80,$01,$EF,$0C,$E1<br />
dc.b $FE,$E0,$40,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $23,$80,$0C,$80,$60,$EF,$11,$E9,$F4,$E6,$F4,$E1<br />
dc.b $00,$E0,$C0<br />
dc.b $F0,$06,$01,$06,$05<br />
dc.b $80,$60,$80,$30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60<br />
dc.b $80,$06,$CB,$80,$CB,$C9,$80,$C9,$80,$C7,$80,$C7<br />
dc.b $80,$C6,$03,$80,$C6,$80,$09,$80,$06,$80,$60,$80<br />
dc.b $30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60,$EF,$16,$E9<br />
dc.b $0C,$E6,$04,$F4,$E0,$80,$80,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
dc.b $80,$2F,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$30,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$60,$EF,$19,$E9,$F4,$E0,$C0,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$27,$B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$2A,$80,$60,$EF,$1E,$E9,$F4,$E8,$06<br />
- dc.b $80,$0C,$C4,$06,$12,$18,$C8,$06,$12,$0C,$80,$C6<br />
dc.b $06,$12,$18,$C8,$06,$12,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$20,$E8,$00,$E9,$18,$E6,$FA,$B8,$03<br />
dc.b $E7,$BA,$5D,$B6,$03,$E7,$B8,$5D,$B4,$03,$E7,$B6<br />
dc.b $5D,$B6,$03,$E7,$B8,$5D,$80,$60,$EF,$22,$E9,$F4<br />
dc.b $E6,$05<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$A7,$04,$A9,$08,$AC,$04,$B1,$30,$80,$0C<br />
dc.b $B1,$08,$80,$04,$B3,$08,$B1,$10,$B5,$08,$B5,$04<br />
dc.b $80,$08,$B0,$34,$80,$0C,$B0,$B5,$08,$04,$80,$08<br />
dc.b $B1,$04,$AE,$24,$80,$0C,$AE,$08,$80,$04,$B0,$08<br />
dc.b $AE,$04,$B1,$0C,$AF,$08,$AD,$4C,$80,$0C,$B1,$08<br />
dc.b $80,$04,$B3,$08,$80,$04,$B1,$08,$80,$04,$B5,$08<br />
dc.b $B5,$04,$80,$08,$B0,$1C,$80,$0C,$B5,$18,$B8,$08<br />
dc.b $B5,$04,$BA,$18,$80,$0C,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$04,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$F8,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$AA,$14,$A9,$04,$E6,$0C,$EF,$23,$E1,$03<br />
dc.b $E6,$F7,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E6,$09<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $F2<br />
MusCreditsE4CD: dc.b $80,$1E,$EF,$14,$A4,$12,$A5,$06,$EF,$16,$80,$30<br />
dc.b $80,$06,$BD,$08,$BC,$04,$BB,$08,$BA,$04,$B9,$08<br />
dc.b $B8,$04,$E3<br />
MusCreditsE4E8: dc.b $80,$18,$B1,$0B,$80,$0D,$B3,$0C,$0B,$80,$19,$B6<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE4F9: dc.b $C6,$05,$80,$13,$C6,$12,$C6,$05,$E3<br />
MusCreditsE502: dc.b $80,$60,$AC,$06,$80,$AC,$0C,$AE,$06,$80,$AE,$0C<br />
dc.b $AF,$06,$E3<br />
MusCred_PSG1: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG1)<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$F4,$E6,$FE,$F5,$01,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $AE,$B3,$06,$AC,$0C,$AE,$AE,$B3,$06,$80,$B3,$AB<br />
dc.b $0C,$AE,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $F5,$0B,$80,$04,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$20,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$F5,$00,$E8,$06,$E9,$F4,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$80,$C2,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$04,$80,$C2,$80,$0C,$C2,$80,$60,$F5,$08,$E9<br />
dc.b $04,$EC,$02,$E8,$06<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F0,$EC,$FF,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $E9,$18,$EC,$02,$B5,$30,$B3,$18,$B5,$0C,$B3,$B1<br />
dc.b $30,$B6,$EC,$FE,$80,$0C,$B8,$80,$B8,$80,$BA,$80<br />
dc.b $BA,$EC,$03,$C4,$18,$C1,$BD,$BF,$0C,$80,$EC,$FC<br />
dc.b $80,$B8,$80,$B8,$80,$BA,$18,$08,$B8,$04,$E9,$F4<br />
dc.b $EC,$01,$F5,$05<br />
- dc.b $80,$60<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$C8,$12,$80,$06,$C8,$80,$C6,$12,$C8,$C6<br />
dc.b $0C,$C1,$18,$C5,$C8,$CB,$80,$0C,$CA,$80,$CA,$12<br />
dc.b $C9,$CA,$06,$80,$09,$E9,$30,$EC,$FC,$F6<br />
dc.w z80_ptr(MusCreditsE770)<br />
dc.b $F2<br />
MusCreditsE618: dc.b $80,$0C,$BD,$06,$12,$18,$C4,$06,$12,$0C,$80,$C2<br />
dc.b $06,$12,$18,$C4,$06,$12,$0C,$E3<br />
MusCreditsE62C: dc.b $80,$60,$80,$0C,$C2,$80,$C2,$80,$E3<br />
MusCreditsE635: dc.b $AC,$0C,$AF,$06,$B3,$0C,$AC,$AC,$06,$80,$AC,$0C<br />
dc.b $AF,$06,$B5,$0C,$AC,$06,$80,$06,$B1,$0C,$B6,$06<br />
dc.b $AE,$0C,$B1,$B3,$B6,$06,$80,$B6,$AA,$0C,$AF,$AF<br />
dc.b $B5,$06,$AC,$0C,$AF,$B2,$B5,$06,$80,$B5,$AE,$0C<br />
dc.b $B2,$E3<br />
MusCred_PSG2: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG2)<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$0C,$EC,$FD,$F5,$04,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
dc.b $F0,$03,$02,$01,$05<br />
dc.b $F5,$0A,$E9,$E8,$EC,$02,$80,$30,$80,$80,$BD,$06<br />
dc.b $BF,$C6,$C2,$1E,$80,$60,$80,$06,$C6,$80,$C6,$C4<br />
dc.b $80,$C4,$80,$C3,$80,$C3,$80,$BF,$03,$80,$BF,$80<br />
dc.b $09,$80,$06,$80,$30,$80,$80,$BD,$06,$BF,$C6,$C2<br />
dc.b $1E,$80,$60,$F4<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$00,$EC,$FE,$E8,$06,$80,$60,$80,$0C,$BF,$80<br />
dc.b $BF,$80,$BF,$80,$BF,$80,$60,$80,$0C,$BF,$80,$BF<br />
dc.b $80,$BF,$04,$80,$BF,$80,$0C,$BF,$80,$60,$EC,$02<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F4,$EC,$FF,$E9,$E8,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $E9,$18,$EC,$02,$B1,$30,$B0,$18,$B1,$0C,$B0,$AE<br />
dc.b $30,$B1,$EC,$FE,$80,$0C,$B5,$80,$B5,$80,$B6,$80<br />
dc.b $B6,$EC,$03,$80,$B1,$80,$B1,$80,$B1,$80,$B1,$EC<br />
dc.b $FC,$80,$B1,$80,$B1,$80,$B1,$18,$08,$B1,$04,$EC<br />
dc.b $01,$E9,$18,$F5,$05,$E1,$01,$80,$60,$80,$80,$80<br />
dc.b $80,$80,$80,$0C,$CD,$06,$80,$D4,$CD,$80,$0C,$CD<br />
dc.b $06,$80,$D4,$CD,$80,$18,$80,$54,$E9,$24,$EC,$FD<br />
MusCreditsE770: dc.b $F5,$03,$80,$06<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$FF<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$01<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusCred_PSG3: dc.b $F3,$E7,$80,$60,$F5,$02<br />
- dc.b $C6,$0C,$0C,$0C,$06,$06,$0C,$0C,$06,$06,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$1F<br />
dc.w z80_ptr(-)<br />
dc.b $0C,$F5,$03,$C6,$F5,$02<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $06,$06,$06,$06<br />
dc.b $F7,$01,$04<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$04,$EC,$02<br />
- dc.b $E8,$03,$C6,$06,$06,$E8,$00,$0C<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$02,$EC,$FD<br />
- dc.b $80,$0C,$C6,$06,$80,$07,$C6,$06,$80,$11,$C6,$0C<br />
dc.b $80,$06,$C6,$0C,$80,$06,$C6,$80<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$02<br />
- dc.b $C6,$0C,$08,$04<br />
dc.b $F7,$00,$18<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$0C,$0C,$08,$04<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$04,$EC,$02<br />
- dc.b $C6,$06,$06,$0C<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EC,$FF<br />
- dc.b $F5,$01,$C6,$0C,$F5,$02,$EC,$FF,$08,$F5,$01,$EC<br />
dc.b $01,$04<br />
dc.b $F7,$00,$27<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$FF,$F5,$04<br />
- dc.b $E8,$03,$C6,$0C,$E8,$0C,$0C<br />
dc.b $F7,$00,$1E<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$03,$C6,$06,$E8,$0E,$12,$E8,$03,$0C,$E8,$0F<br />
dc.b $0C,$F2<br />
MusCred_DAC: dc.b $82,$06,$82,$82,$82,$82,$0C,$06,$0C,$06,$0C,$0C<br />
dc.b $0C<br />
- dc.b $81,$18,$82<br />
dc.b $F7,$00,$0E<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C<br />
- dc.b $82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EA,$EA,$F8<br />
dc.w z80_ptr(MusCreditsEA6E)<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$82,$06,$82,$82,$82,$81,$0C,$82,$06,$82<br />
dc.b $81,$81,$82,$82,$82,$82<br />
- dc.b $81,$18,$82,$81,$82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$82,$82,$82,$06,$82,$8C,$8C,$8D,$8D<br />
dc.b $8E,$8E,$F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$18,$82,$0C,$81,$18,$82,$0C,$82,$82,$06,$82<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$0C,$82,$82,$82,$8D,$06,$8D,$8E,$8E,$82,$06<br />
dc.b $82,$8D,$0C,$82,$0C,$82,$06,$82,$80,$82,$82,$0C<br />
MusCreditsE8E5: dc.b $82,$0C,$82,$82,$06,$82,$8D,$8D<br />
- dc.b $81,$0C,$8F,$06,$90,$82,$0C,$90,$06,$91,$81,$0C<br />
dc.b $8F,$06,$91,$82,$0C,$8F,$06,$91<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$8F,$06,$91,$82,$0C,$8F,$06,$91,$8C,$06<br />
dc.b $03,$03,$8D,$06,$8D,$8D,$8E,$8E,$8E,$81,$06,$0C<br />
dc.b $82,$06,$80,$0C,$81,$82,$8E,$82,$06,$82,$82,$82<br />
- dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$12,$8C,$06<br />
dc.b $82,$0C,$83,$06,$81,$80<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$06,$82,$06<br />
dc.b $81,$0C,$06,$82,$0C,$08,$04,$EA,$CD,$82,$30,$82<br />
dc.b $0C,$82,$82,$82,$08,$04,$F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$04,$82,$08,$04<br />
dc.b $08,$04,$04,$04,$04,$08,$04,$EA,$C5<br />
- dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82,$0C,$06<br />
dc.b $06,$81,$0C,$82,$06,$82,$82,$82,$8D,$0C,$82,$0C<br />
dc.b $0C,$0C,$06,$06<br />
- dc.b $81,$0C,$81,$82,$80,$81,$81,$82,$83<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$82,$82,$82,$82,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $81,$06,$81,$82,$82,$81,$82,$81,$81,$82,$02,$82<br />
dc.b $04,$81,$0C,$06,$82,$0C,$06,$06,$81,$18,$82,$0C<br />
dc.b $81,$81,$18,$82,$81,$06,$81,$12,$82,$0C,$81,$81<br />
dc.b $18,$82,$81,$18,$82,$0C,$81,$81,$18,$82,$81,$06<br />
dc.b $81,$12,$82,$0C,$0C,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $82,$02,$04,$81,$0C,$06,$0C,$82,$02,$04,$81,$0C<br />
dc.b $06,$0C,$82,$06,$82,$82,$82,$EA,$C0,$81,$0C,$82<br />
dc.b $81,$82,$81,$82,$81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$0F<br />
dc.w z80_ptr(-)<br />
dc.b $81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$13<br />
dc.w z80_ptr(-)<br />
dc.b $82,$08,$0C,$04,$81,$0C,$82,$81,$82,$81,$0C,$82<br />
dc.b $81,$06,$80,$02,$82,$82,$82,$09,$82,$03<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$06,$80,$02,$82,$82,$82,$09,$82<br />
dc.b $03<br />
dc.b $F7,$01,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$82,$81,$06,$82,$12,$82,$0C,$81<br />
dc.b $F2<br />
MusCreditsEA6E: dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$83,$E3<br />
MusCreditsEA84: dc.b $81,$18,$82,$0C,$81,$18,$0C,$82,$81,$81,$18,$82<br />
dc.b $0C,$81,$12,$81,$82,$18,$81,$82,$0C,$81,$18,$0C<br />
dc.b $82,$81,$E3<br />
MusCreditsEA9F: dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$0C,$82,$04,$81<br />
dc.b $0C,$82,$81,$81,$08,$0C,$04,$82,$0C,$81,$08,$0C<br />
dc.b $82,$04,$81,$0C,$82,$82,$08,$04,$E3,$81,$06,$80<br />
dc.b $03,$81,$81,$06,$82,$81,$06,$80,$03,$81,$81,$06<br />
dc.b $82,$03,$82,$81,$06,$80,$03,$81,$81,$06,$82,$E3<br />
MusCred_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$01,$1F,$1F,$FF,$0F,$17,$27,$28,$80<br />
dc.b $08,$09,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$25,$0E,$30,$84<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$0B,$0D,$19,$0B,$80,$80<br />
dc.b $08,$0A,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$24,$13,$2D,$80<br />
dc.b $3D,$01,$51,$21,$01,$12,$14,$14,$0F,$0A,$05,$05<br />
dc.b $05,$00,$00,$00,$00,$2B,$2B,$2B,$1B,$19,$80,$80,$80<br />
dc.b $04,$57,$70,$02,$50,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$06,$00,$0A,$0A,$00,$00,$0F,$0F,$1A,$10,$80,$80<br />
dc.b $35,$01,$13,$01,$00,$1F,$18,$1D,$19,$00,$06,$09<br />
dc.b $0D,$00,$02,$00,$03,$00,$15,$06,$16,$1E,$83,$80,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1A,$16,$88,$88<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$14,$0F,$37,$80<br />
dc.b $3B,$0F,$01,$06,$02,$DF,$1F,$1F,$DF,$0C,$0A,$00<br />
dc.b $03,$0F,$00,$00,$01,$F3,$55,$05,$5C,$22,$22,$20,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1C,$14,$84,$80<br />
dc.b $3A,$69,$50,$70,$60,$1C,$1A,$18,$18,$10,$02,$0C<br />
dc.b $09,$08,$06,$06,$03,$F9,$06,$56,$06,$28,$14,$15,$00<br />
dc.b $3D,$00,$02,$01,$01,$4C,$50,$0F,$12,$0C,$00,$02<br />
dc.b $05,$01,$00,$00,$00,$28,$2A,$29,$19,$1A,$06,$00,$00<br />
dc.b $2C,$71,$31,$71,$31,$1F,$1F,$16,$16,$00,$00,$0F<br />
dc.b $0F,$00,$00,$0F,$0F,$00,$00,$FA,$FA,$15,$14,$00,$00<br />
dc.b $18,$37,$31,$32,$31,$9E,$1C,$DC,$9C,$0D,$04,$06<br />
dc.b $01,$08,$03,$0A,$05,$B6,$36,$B6,$28,$2C,$14,$22,$00<br />
dc.b $3D,$01,$02,$02,$02,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$24,$18,$18,$18,$1C,$82,$82,$82<br />
dc.b $32,$71,$33,$0D,$01,$5F,$5F,$99,$94,$05,$05,$05<br />
dc.b $07,$02,$02,$02,$02,$11,$11,$11,$72,$23,$26,$2D,$80<br />
dc.b $3A,$32,$52,$01,$31,$1F,$1F,$1F,$18,$01,$00,$1F<br />
dc.b $00,$00,$00,$0F,$00,$5A,$03,$0F,$1A,$3B,$4F,$30,$00<br />
dc.b $3C,$42,$32,$41,$41,$12,$12,$12,$12,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$06,$06,$08,$08,$24,$24,$08,$08<br />
dc.b $31,$34,$30,$35,$31,$DF,$9F,$DF,$9F,$0C,$0C,$07<br />
dc.b $09,$07,$07,$07,$08,$2F,$1F,$1F,$2F,$17,$14,$32,$80<br />
dc.b $3D,$01,$01,$01,$01,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$20,$1A,$1A,$1A,$19,$84,$84,$84<br />
dc.b $24,$70,$30,$74,$38,$12,$1F,$1F,$1F,$05,$05,$03<br />
dc.b $03,$05,$05,$03,$03,$36,$26,$2C,$2C,$0A,$06,$08,$08<br />
dc.b $3A,$01,$01,$01,$02,$8D,$07,$07,$52,$09,$00,$00<br />
dc.b $03,$01,$02,$02,$00,$5F,$0F,$0F,$2F,$18,$18,$22,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$03,$03,$08,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$17,$20,$28,$80<br />
dc.b $20,$7A,$00,$31,$00,$9F,$DC,$D8,$DF,$10,$04,$0A<br />
dc.b $04,$0F,$08,$08,$08,$5F,$BF,$5F,$BF,$14,$17,$2B,$80<br />
dc.b $3A,$61,$51,$08,$02,$5D,$5D,$5D,$50,$04,$1F,$0F<br />
dc.b $1F,$00,$00,$00,$00,$1F,$0F,$5F,$0F,$22,$22,$1E,$80<br />
dc.b $02,$01,$02,$55,$04,$92,$8E,$8D,$54,$0D,$00,$0C<br />
dc.b $03,$00,$00,$00,$00,$FF,$0F,$2F,$5F,$16,$1D,$2A,$80<br />
dc.b $02,$75,$73,$71,$31,$1F,$96,$58,$9F,$01,$03,$1B<br />
dc.b $08,$01,$01,$04,$05,$FF,$3F,$2F,$2F,$24,$30,$29,$80<br />
dc.b $20,$66,$60,$65,$60,$DF,$9F,$DF,$1F,$00,$09,$06<br />
dc.b $0C,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$1C,$16,$3A,$80<br />
dc.b $0D,$32,$06,$08,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$86,$80,$8D<br />
dc.b $38,$3A,$11,$0A,$02,$D4,$50,$14,$0E,$05,$02,$08<br />
dc.b $88,$00,$00,$00,$00,$99,$09,$09,$1A,$2D,$19,$2C,$86<br />
dc.b $0D,$32,$02,$04,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$8B,$86,$93<br />
dc.b $3A,$20,$60,$23,$01,$1E,$1F,$1F,$1F,$0A,$0B,$0A<br />
dc.b $0A,$05,$0A,$07,$08,$A4,$96,$85,$78,$21,$28,$25,$00<br />
dc.b $3A,$32,$32,$56,$42,$8D,$15,$4F,$52,$06,$07,$08<br />
dc.b $04,$02,$00,$00,$00,$18,$28,$18,$28,$19,$2A,$20,$00<br />
dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$19,$13,$37,$80<br />
dc.b $3D,$01,$02,$02,$02,$14,$8C,$0E,$0E,$08,$02,$05<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$1A,$80,$80,$80<br />
; end of Mus_Credits<br />
<br />
; ------------------------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ------------------------------------------------------------------------------------------<br />
; WARNING the sound driver treats certain sounds specially<br />
; going by the ID of the sound.<br />
; SndID_Ring, SndID_RingLeft, SndID_Gloop, SndID_SpindashRev<br />
; are referenced by the sound driver directly.<br />
; If needed you can change this in s2.sounddriver.asm<br />
<br />
<br />
; NOTE: the exact order of this list determines the priority of each sound, since it determines the sound's SndID.<br />
; a sound can get dropped if a higher-priority sound is already playing.<br />
; the rules for sound priority are currently unknown, but you can generally swap pointer lines around to resolve priority conflicts.<br />
; loc_FEE91: SoundPoint:<br />
SoundIndex:<br />
SndPtr_Jump: rom_ptr_z80 Sound20 ; jumping sound<br />
SndPtr_Checkpoint: rom_ptr_z80 Sound21 ; checkpoint ding-dong sound<br />
SndPtr_SpikeSwitch: rom_ptr_z80 Sound22 ; spike switch sound<br />
SndPtr_Hurt: rom_ptr_z80 Sound23 ; hurt sound<br />
SndPtr_Skidding: rom_ptr_z80 Sound24 ; skidding sound<br />
SndPtr_BlockPush: rom_ptr_z80 Sound25 ; block push sound<br />
SndPtr_HurtBySpikes: rom_ptr_z80 Sound26 ; spiky impalement sound<br />
SndPtr_Sparkle: rom_ptr_z80 Sound27 ; sparkling sound<br />
SndPtr_Beep: rom_ptr_z80 Sound28 ; short beep<br />
SndPtr_Bwoop: rom_ptr_z80 Sound29 ; bwoop<br />
SndPtr_Splash: rom_ptr_z80 Sound2A ; splash sound<br />
SndPtr_Swish: rom_ptr_z80 Sound2B ; swish<br />
SndPtr_BossHit: rom_ptr_z80 Sound2C ; boss hit<br />
SndPtr_InhalingBubble: rom_ptr_z80 Sound2D ; inhaling a bubble<br />
SndPtr_ArrowFiring:<br />
SndPtr_LavaBall: rom_ptr_z80 Sound2E ; arrow firing<br />
SndPtr_Shield: rom_ptr_z80 Sound2F ; shield sound<br />
SndPtr_LaserBeam: rom_ptr_z80 Sound30 ; laser beam<br />
SndPtr_Zap: rom_ptr_z80 Sound31 ; zap<br />
SndPtr_Drown: rom_ptr_z80 Sound32 ; drownage<br />
SndPtr_FireBurn: rom_ptr_z80 Sound33 ; fire + burn<br />
SndPtr_Bumper: rom_ptr_z80 Sound34 ; bumper bing<br />
SndPtr_Ring:<br />
SndPtr_RingRight: rom_ptr_z80 Sound35 ; ring sound<br />
SndPtr_SpikesMove: rom_ptr_z80 Sound36<br />
SndPtr_Rumbling: rom_ptr_z80 Sound37 ; rumbling<br />
rom_ptr_z80 Sound38<br />
SndPtr_Smash: rom_ptr_z80 Sound39 ; smash/breaking<br />
rom_ptr_z80 Sound3A ; nondescript ding<br />
SndPtr_DoorSlam: rom_ptr_z80 Sound3B ; door slamming shut<br />
SndPtr_SpindashRelease: rom_ptr_z80 Sound3C ; spindash unleashed<br />
SndPtr_Hammer: rom_ptr_z80 Sound3D ; slide-thunk<br />
SndPtr_Roll: rom_ptr_z80 Sound3E ; rolling sound<br />
SndPtr_ContinueJingle: rom_ptr_z80 Sound3F ; got continue<br />
SndPtr_CasinoBonus: rom_ptr_z80 Sound40 ; short bonus ding<br />
SndPtr_Explosion: rom_ptr_z80 Sound41 ; badnik bust<br />
SndPtr_WaterWarning: rom_ptr_z80 Sound42 ; warning ding-ding<br />
SndPtr_EnterGiantRing: rom_ptr_z80 Sound43 ; special stage ring flash (unused)<br />
SndPtr_BossExplosion: rom_ptr_z80 Sound44 ; thunk<br />
SndPtr_TallyEnd: rom_ptr_z80 Sound45 ; cha-ching<br />
SndPtr_RingSpill: rom_ptr_z80 Sound46 ; losing rings<br />
rom_ptr_z80 Sound47 ; chain pull chink-chink<br />
SndPtr_Flamethrower: rom_ptr_z80 Sound48 ; flamethrower<br />
SndPtr_Bonus: rom_ptr_z80 Sound49 ; bonus pwoieeew (unused)<br />
SndPtr_SpecStageEntry: rom_ptr_z80 Sound4A ; special stage entry<br />
SndPtr_SlowSmash: rom_ptr_z80 Sound4B ; slower smash/crumble<br />
SndPtr_Spring: rom_ptr_z80 Sound4C ; spring boing<br />
SndPtr_Blip: rom_ptr_z80 Sound4D ; selection blip<br />
SndPtr_RingLeft: rom_ptr_z80 Sound4E ; another ring sound (only plays in the left speaker?)<br />
SndPtr_Signpost: rom_ptr_z80 Sound4F ; signpost spin sound<br />
SndPtr_CNZBossZap: rom_ptr_z80 Sound50 ; mosquito zapper<br />
rom_ptr_z80 Sound51<br />
rom_ptr_z80 Sound52<br />
SndPtr_Signpost2P: rom_ptr_z80 Sound53<br />
SndPtr_OOZLidPop: rom_ptr_z80 Sound54 ; OOZ lid pop sound<br />
SndPtr_SlidingSpike: rom_ptr_z80 Sound55<br />
SndPtr_CNZElevator: rom_ptr_z80 Sound56<br />
SndPtr_PlatformKnock: rom_ptr_z80 Sound57<br />
SndPtr_BonusBumper: rom_ptr_z80 Sound58 ; CNZ bonusy bumper sound<br />
SndPtr_LargeBumper: rom_ptr_z80 Sound59 ; CNZ baaang bumper sound<br />
SndPtr_Gloop: rom_ptr_z80 Sound5A ; CNZ gloop / water droplet sound<br />
SndPtr_PreArrowFiring: rom_ptr_z80 Sound5B<br />
SndPtr_Fire: rom_ptr_z80 Sound5C<br />
SndPtr_ArrowStick: rom_ptr_z80 Sound5D ; chain clink<br />
SndPtr_Helicopter:<br />
SndPtr_WingFortress: rom_ptr_z80 Sound5E ; helicopter<br />
SndPtr_SuperTransform: rom_ptr_z80 Sound5F<br />
SndPtr_SpindashRev: rom_ptr_z80 Sound60 ; spindash charge<br />
SndPtr_Rumbling2: rom_ptr_z80 Sound61 ; rumbling<br />
SndPtr_CNZLaunch: rom_ptr_z80 Sound62<br />
SndPtr_Flipper: rom_ptr_z80 Sound63 ; CNZ blooing bumper<br />
SndPtr_HTZLiftClick: rom_ptr_z80 Sound64 ; HTZ track click sound<br />
SndPtr_Leaves: rom_ptr_z80 Sound65 ; kicking up leaves sound<br />
SndPtr_MegaMackDrop: rom_ptr_z80 Sound66 ; leaf splash?<br />
SndPtr_DrawbridgeMove: rom_ptr_z80 Sound67<br />
SndPtr_QuickDoorSlam: rom_ptr_z80 Sound68 ; door slamming quickly (seems unused)<br />
SndPtr_DrawbridgeDown: rom_ptr_z80 Sound69<br />
SndPtr_LaserBurst: rom_ptr_z80 Sound6A ; robotic laser burst<br />
SndPtr_Scatter:<br />
SndPtr_LaserFloor: rom_ptr_z80 Sound6B ; scatter<br />
SndPtr_Teleport: rom_ptr_z80 Sound6C<br />
SndPtr_Error: rom_ptr_z80 Sound6D ; error sound<br />
SndPtr_MechaSonicBuzz: rom_ptr_z80 Sound6E ; silver sonic buzz saw<br />
SndPtr_LargeLaser: rom_ptr_z80 Sound6F<br />
SndPtr_OilSlide: rom_ptr_z80 Sound70<br />
SndPtr__End:<br />
<br />
; There are many non-relative pointers in these sound effects,<br />
; so the sounds shouldn't simply be BINCLUDE'd.<br />
; They could be included as separate .asm files using "include" instead of "binclude",<br />
; but I wanted to minimize the number of included asm files.<br />
<br />
; some comments on what the various script commands do (after the header):<br />
; 0x00-0x7F sets the note duration (of the previous note and following notes)<br />
; 0x81-0xDF plays a note (the valid range may be smaller for PSG or DAC)<br />
; 0x80 plays silence<br />
; 0xE0-0xFF does special things. I won't list them here... search for "Coordination flags" sonic 2.<br />
<br />
; the FM voices (poorly named "ssamp" or "samples" below)<br />
; are 25 bytes each and go directly to YM2612 registers.<br />
; they can be hard to edit (there's an art to it)<br />
; but search for sonic "Voice editing" for more info if you want to try.<br />
<br />
; jumping sound<br />
Sound20: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$F400<br />
+ dc.b $F5,$00,$9E,$05,$F0,$02,$01,$F8,$65,$A3,$15,$F2<br />
<br />
; checkpoint ding-dong sound<br />
Sound21: dc.w z80_ptr(ssamp21),$0101<br />
dc.w $8005,z80_ptr(+),$0001<br />
ssamp21: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
+ dc.b $EF,$00,$BD,$06,$BA,$16,$F2<br />
<br />
; spike switch sound<br />
Sound22: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C0,$04,$CA,$04<br />
- dc.b $C0,$01,$EC<br />
dc.w $01F7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; hurt sound<br />
Sound23: dc.w z80_ptr(ssamp23),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B0,$07,$E7,$AD<br />
- dc.b $01,$E6<br />
dc.w $01F7,$002F,z80_ptr(-)<br />
dc.b $F2<br />
ssamp23: dc.b $30,$30,$30,$30,$30,$9E,$DC,$D8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$14,$14,$3C,$80<br />
<br />
; skidding sound<br />
Sound24: dc.w $0000,$0102 ; sound header... no sample and 2 script entries<br />
dc.w $80A0,z80_ptr(+),$F400 ; entry 1 header<br />
dc.w $80C0,z80_ptr(++),$F400 ; entry 2 header<br />
+ dc.b $F5,$00,$AF,$01,$80,$AF,$80,$03 ; script entry 1<br />
- dc.b $AF,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 1 end<br />
+ dc.b $F5,$00,$80,$01,$AD,$80,$AD,$80,$03 ; script entry 2<br />
- dc.b $AD,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 2 end<br />
<br />
; block push sound<br />
Sound25: dc.w z80_ptr(ssamp25),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$01,$8B,$0A,$80,$02,$F2<br />
ssamp25: dc.b $FA,$21,$10,$30,$32,$2F,$2F,$1F,$2F,$05,$09,$08<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
; spiky impalement sound<br />
Sound26: dc.w z80_ptr(ssamp26),$0101<br />
dc.w $8005,z80_ptr(+),$F200<br />
+ dc.b $EF,$00,$F0,$01,$01,$10,$FF,$CF,$05,$D7,$25,$F2<br />
ssamp26: dc.b $3B,$3C,$30,$39,$31,$DF,$1F,$1F,$DF,$04,$04,$05<br />
dc.b $01,$04,$04,$04,$02,$FF,$1F,$0F,$AF,$29,$0F,$20,$80<br />
<br />
; sparkling sound<br />
Sound27: dc.w z80_ptr(ssamp27),$0101<br />
dc.w $8004,z80_ptr(+),$0C1C<br />
+ dc.b $EF,$00,$C1,$05,$C4,$05,$C9,$2B,$F2<br />
ssamp27: dc.b $07,$73,$33,$33,$73,$0F,$19,$14,$1A,$0A,$0A,$0A<br />
dc.b $0A,$0A,$0A,$0A,$0A,$57,$57,$57,$57,$00,$00,$00,$00<br />
<br />
; short beep<br />
Sound28: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$E803<br />
+ dc.b $F5,$04,$CB,$04,$F2<br />
<br />
; bwoop<br />
Sound29: dc.w $0000,$0101<br />
dc.w $80A0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$E6,$35,$8E,$06,$F2<br />
<br />
; splash sound<br />
Sound2A: dc.w z80_ptr(ssamp2A),$0102<br />
dc.w $80C0,z80_ptr(+),$0000<br />
dc.w $8005,z80_ptr(++),$0003<br />
+ dc.b $F5,$00,$F3,$E7,$C2,$05,$C6,$05,$E7<br />
- dc.b $07,$EC,$01<br />
dc.w $E7F7,$000F,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$A6,$14,$F2<br />
ssamp2A: dc.b $00,$00,$02,$03,$00,$D9,$1F,$DF,$1F,$12,$14,$11<br />
dc.b $0F,$0A,$0A,$00,$0D,$FF,$FF,$FF,$FF,$22,$27,$07,$80<br />
<br />
; swish<br />
Sound2B: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$C6,$03,$80,$03,$C6,$01,$E7<br />
- dc.b $01,$EC,$01<br />
dc.w $E7F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; boss hit<br />
Sound2C: dc.w z80_ptr(smashsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$0C,$01<br />
- dc.b $81,$0A,$E6<br />
dc.w $10F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
smashsamp: dc.b $F9,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
<br />
; inhaling a bubble<br />
Sound2D: dc.w z80_ptr(ssamp2D),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$21,$6E,$A6,$07<br />
dc.b $80,$06,$F0,$01,$01,$44,$1E,$AD,$08,$F2<br />
ssamp2D: dc.b $35,$05,$08,$09,$07,$1E,$0D,$0D,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$1F,$2F,$1F,$15,$12,$12,$80<br />
<br />
; arrow firing<br />
Sound2E: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$C6,$01,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp2E: dc.b $FA,$02,$00,$03,$05,$12,$0F,$11,$13,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$2F,$0E,$1A,$80<br />
<br />
; shield sound<br />
Sound2F: dc.w z80_ptr(ssamp2F),$0101<br />
dc.w $8005,z80_ptr(+),$0C00<br />
+ dc.b $EF,$00,$80,$01,$A3,$05,$E7,$A4,$26,$F2<br />
ssamp2F: dc.b $30,$30,$30,$30,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$04,$14,$2C,$80<br />
<br />
; laser beam<br />
Sound30: dc.w z80_ptr(ssamp30),$0101 ; sound header... a voice and 1 script entry<br />
dc.w $8005,z80_ptr(+),$FB05 ; script entry header<br />
+ dc.b $EF,$00,$DF,$7F ; script start<br />
- dc.b $DF,$02,$E6 ; script continued<br />
dc.w $01F7,$001B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script end<br />
ssamp30: dc.b $83,$1F,$1F,$15,$1F,$1F,$1F,$1F,$1F,$00,$00,$00 ; voice<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$0B,$01,$16,$82 ; (fixed length)<br />
<br />
; zap<br />
Sound31: dc.w z80_ptr(ssamp31),$0101<br />
dc.w $8005,z80_ptr(+),$FB02<br />
+ dc.b $EF,$00,$B3,$05,$80,$01,$B3,$09,$F2<br />
ssamp31: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$05,$34,$10,$87<br />
<br />
; drownage<br />
Sound32: dc.w z80_ptr(ssamp32),$0102<br />
dc.w $8004,z80_ptr(++),$0C04<br />
dc.w $8005,z80_ptr(+),$0E02<br />
+ dc.b $EF,$00,$F0,$01,$01,$83,$0C<br />
- dc.b $8A,$05,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $80,$06,$EF,$00,$F0,$01,$01,$6F,$0E<br />
- dc.b $8D,$04,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp32: dc.b $35,$14,$04,$1A,$09,$0E,$11,$10,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$4F,$2F,$4F,$2F,$12,$12,$80<br />
<br />
; fire + burn<br />
Sound33: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$A7,$25,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; bumper bing<br />
Sound34: dc.w z80_ptr(ssamp34),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $8002,z80_ptr(+++),$0002<br />
+ dc.b $EF,$00,$F6<br />
dc.w z80_ptr(Sound34_3)<br />
+ dc.b $EF,$00,$E1,$07,$80,$01<br />
Sound34_3:<br />
dc.b $BA,$20,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
ssamp34: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$1F,$2B,$80,$80<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; ring sound<br />
Sound35: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$40,$C1,$05,$C4,$05,$C9,$1B,$F2<br />
<br />
<br />
Sound36: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C1,$07<br />
- dc.b $D0,$01,$EC<br />
dc.w $01F7,$000C,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; rumbling<br />
Sound37: dc.w z80_ptr(ssamp37),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$20,$08<br />
- dc.b $8B<br />
dc.w $0AF7,$0008,z80_ptr(-)<br />
- dc.b $8B,$10,$E6<br />
dc.w $03F7,$0009,z80_ptr(-)<br />
dc.b $F2<br />
ssamp37: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
<br />
Sound38: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$B4,$08<br />
- dc.b $B0,$02,$EC<br />
dc.w $01F7,$0003,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; smash/breaking<br />
Sound39: dc.w z80_ptr(smashsamp),$0104<br />
dc.w $8002,z80_ptr(+),$1000<br />
dc.w $8004,z80_ptr(+++),$0000<br />
dc.w $8005,z80_ptr(++),$1000<br />
dc.w $80C0,z80_ptr(s39s4),$0000<br />
+ dc.b $E0,$40,$80,$02,$F6<br />
dc.w z80_ptr(++)<br />
+ dc.b $E0,$80,$80,$01<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
s39s4: dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; nondescript ding<br />
Sound3A: dc.w z80_ptr(ssamp3A),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$AE,$08,$F2<br />
ssamp3A: dc.b $1C,$2E,$0F,$02,$02,$1F,$1F,$1F,$1F,$18,$14,$0F<br />
dc.b $0E,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$20,$1B,$80,$80<br />
<br />
; door slamming shut<br />
Sound3B: dc.w z80_ptr(ssamp3B),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$80,$A0,$06,$F2<br />
ssamp3B: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; spindash unleashed<br />
Sound3C: dc.w z80_ptr(ssamp3C),$0102<br />
dc.w $8005,z80_ptr(+),$9000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$F2<br />
+ dc.b $F5,$07,$80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$4F,$F2<br />
ssamp3C: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
<br />
; slide-thunk<br />
Sound3D: dc.w z80_ptr(ssamp3D),$0102<br />
dc.w $8005,z80_ptr(+),$100A<br />
dc.w $8004,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$60,$01,$A7,$08,$F2<br />
+ dc.b $80,$08,$EF,$01,$84,$22,$F2<br />
ssamp3D: dc.b $FA,$21,$19,$3A,$30,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
dc.b $FA,$31,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$1F,$2F,$2F,$0D,$01,$00,$80<br />
<br />
; rolling sound<br />
Sound3E: dc.w z80_ptr(ssamp3E),$0101<br />
dc.w $8004,z80_ptr(+),$0C05<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$09,$FF,$CA,$25,$F4<br />
- dc.b $E7,$E6,$01,$D0<br />
dc.w $02F7,$002A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3E: dc.b $3C,$00,$02,$44,$02,$1F,$1F,$1F,$15,$00,$00,$1F<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0D,$28,$00,$00<br />
<br />
; got continue<br />
Sound3F: dc.w z80_ptr(ssamp3F),$0103<br />
dc.w $8002,z80_ptr(+),$F406<br />
dc.w $8004,z80_ptr(++),$F406<br />
dc.w $8005,z80_ptr(+++),$F406<br />
+ dc.b $EF,$00,$C9,$07,$CD,$D0,$CB,$CE,$D2,$CD,$D0,$D4,$CE,$D2,$D5<br />
- dc.b $D0,$07,$D4,$D7,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$80,$07,$CD,$15,$CE,$D0,$D2<br />
- dc.b $D4,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$C9,$15,$CB,$CD,$CE<br />
- dc.b $D0,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3F: dc.b $14,$25,$36,$33,$11,$1F,$1F,$1F,$1F,$15,$1C,$18<br />
dc.b $13,$0B,$0D,$08,$09,$0F,$8F,$9F,$0F,$24,$0A,$05,$80<br />
<br />
; short bonus ding<br />
Sound40: dc.w z80_ptr(ssamp3F),$0102<br />
dc.w $8005,z80_ptr(++),$0008<br />
dc.w $8004,z80_ptr(+),$0008<br />
+ dc.b $E1,$03,$80,$02<br />
+ dc.b $EF,$00,$C4,$16,$F2<br />
<br />
; badnik bust<br />
Sound41: dc.w z80_ptr(ssamp41),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0002<br />
+ dc.b $F0,$03,$01,$72,$0B,$EF,$00,$BA,$16,$F2<br />
+ dc.b $F5,$01,$F3,$E7,$B0,$1B,$F2<br />
ssamp41: dc.b $3C,$0F,$03,$01,$01,$1F,$1F,$1F,$1F,$19,$19,$12<br />
dc.b $0E,$05,$00,$12,$0F,$0F,$FF,$7F,$FF,$00,$00,$80,$80<br />
<br />
; warning ding-ding<br />
Sound42: dc.w z80_ptr(ssamp3F),$0101<br />
dc.w $8005,z80_ptr(+),$0C08<br />
+ dc.b $EF,$00,$BA,$08,$BA,$25,$F2<br />
<br />
; special stage ring flash (unused)<br />
Sound43: dc.w z80_ptr(ssamp43),$0102<br />
dc.w $8004,z80_ptr(+),$0C00<br />
dc.w $8005,z80_ptr(++),$0013<br />
+ dc.b $EF,$01,$80,$01,$A2,$08,$EF,$00,$E7,$AD,$26,$F2<br />
+ dc.b $EF,$02,$F0,$06,$01,$03,$FF,$80,$0A<br />
- dc.b $C3<br />
dc.w $06F7,$0005,z80_ptr(-)<br />
dc.b $C3,$17,$F2<br />
ssamp43: dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$1C,$80<br />
dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$2C,$80<br />
dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$13,$13,$81,$88<br />
<br />
; thunk<br />
Sound44: dc.w z80_ptr(ssamp44),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$8A,$22,$F2<br />
ssamp44: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$4F,$2F,$2F,$0D,$04,$07,$80<br />
<br />
; cha-ching<br />
Sound45: dc.w z80_ptr(ssamp45),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$8A,$08,$80,$02,$8A,$08,$F2<br />
+ dc.b $EF,$01,$80,$12,$C6,$55,$F2<br />
+ dc.b $F5,$02,$F3,$E7,$80,$02,$C2,$05,$C4,$04,$C2,$05,$C4,$04,$F2<br />
ssamp45: dc.b $3B,$03,$02,$02,$06,$18,$1A,$1A,$96,$17,$0A,$0E<br />
dc.b $10,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$39,$28,$80<br />
ringsamp: dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$23,$80,$80<br />
<br />
; losing rings (scatter)<br />
Sound46: dc.w z80_ptr(ringsamp),$0102<br />
dc.w $8004,z80_ptr(+),$0005<br />
dc.w $8005,z80_ptr(++),$0008<br />
+ dc.b $EF,$00,$C6,$02,$05,$05,$05,$05,$05,$05,$3A,$F2<br />
+ dc.b $EF,$00,$80,$02,$C4,$02,$05,$15,$02,$05,$32,$F2<br />
<br />
; chain pull chink-chink<br />
Sound47: dc.w z80_ptr(ssamp47),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$BE,$05,$80,$04,$BE,$04,$80,$04,$F2<br />
ssamp47: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; flamethrower<br />
Sound48: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$25,$F2<br />
<br />
; bonus pwoieeew (unused)<br />
Sound49: dc.w z80_ptr(ssamp49),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$33,$18,$B9,$1A,$F2<br />
ssamp49: dc.b $3B,$0A,$05,$31,$02,$5F,$5F,$5F,$5F,$04,$16,$14<br />
dc.b $0C,$00,$00,$04,$00,$1F,$D8,$6F,$FF,$03,$00,$25,$80<br />
<br />
; special stage entry<br />
Sound4A: dc.w z80_ptr(ssamp4A),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$F0,$01,$01,$5B,$02,$CC,$65,$F2<br />
ssamp4A: dc.b $20,$36,$30,$35,$31,$41,$3B,$49,$4B,$09,$09,$06<br />
dc.b $08,$01,$02,$03,$A9,$0F,$0F,$0F,$0F,$29,$23,$27,$80<br />
<br />
; slower smash/crumble<br />
Sound4B: dc.w z80_ptr(smashsamp),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; spring boing<br />
Sound4C: dc.w z80_ptr(ssamp4C),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$5D,$0F,$B0,$0C,$F4<br />
- dc.b $E7,$E6,$02,$BD<br />
dc.w $02F7,$0019,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4C: dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$16,$13,$30,$80<br />
<br />
; selection blip<br />
Sound4D: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $BB,$02,$F2<br />
<br />
; another ring sound (only plays in the left speaker?)<br />
Sound4E: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8004,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$80,$C1,$04,$C4,$05,$C9,$1B,$F2<br />
<br />
; signpost spin sound<br />
Sound4F: dc.w z80_ptr(ssamp4F),$0102<br />
dc.w $8004,z80_ptr(+),$2703<br />
dc.w $8005,z80_ptr(++),$2700<br />
+ dc.b $80,$04<br />
+ dc.b $EF,$00<br />
- dc.b $B4,$05,$E6<br />
dc.w $02F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4F: dc.b $F4,$06,$0F,$04,$0E,$1F,$1F,$1F,$1F,$00,$0B,$00<br />
dc.b $0B,$00,$05,$00,$08,$0F,$FF,$0F,$FF,$0C,$03,$8B,$80<br />
<br />
; mosquito zapper<br />
Sound50: dc.w z80_ptr(ssamp50),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B3,$04,$80,$01<br />
- dc.b $B4,$04,$80<br />
dc.w $01F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
ssamp50: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$06,$34,$10,$87<br />
<br />
<br />
Sound51: dc.w z80_ptr(ssamp51),$0102<br />
dc.w $80C0,z80_ptr(+),$0001<br />
dc.w $8005,z80_ptr(++),$000B<br />
+ dc.b $F5,$02,$F3,$E4,$B0,$04,$85,$02,$F2<br />
+ dc.b $EF,$00,$E8,$04,$A5,$06,$F2<br />
ssamp51: dc.b $3C,$02,$01,$00,$01,$1F,$1F,$1F,$1F,$00,$19,$0E<br />
dc.b $10,$00,$00,$0C,$0F,$0F,$FF,$EF,$FF,$05,$00,$80,$80<br />
<br />
<br />
Sound52: dc.w z80_ptr(ssamp52),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $F0,$01,$01,$2A,$07,$EF,$00<br />
- dc.b $A5,$03<br />
dc.w $E7F7,$0013,z80_ptr(-)<br />
- dc.b $A5,$03,$E7,$E6<br />
dc.w $02F7,$0013,z80_ptr(-)<br />
dc.b $F2<br />
ssamp52: dc.b $28,$21,$21,$21,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$29,$20,$29,$80<br />
<br />
<br />
Sound53: dc.w z80_ptr(ssamp53),$0101<br />
dc.w $8005,z80_ptr(+),$F503<br />
+ dc.b $EF,$00,$F0,$01,$01,$46,$09,$A7,$14,$E7,$14,$E7,$E6,$04<br />
dc.b $14,$E7,$E6,$04,$14,$E7,$E6,$04,$0A,$E7,$E6,$04,$0A,$F2<br />
ssamp53: dc.b $07,$0A,$0C,$0C,$0C,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$2A,$0F,$0F,$80<br />
<br />
; OOZ lid pop sound<br />
Sound54: dc.w z80_ptr(ssamp54),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0006<br />
+ dc.b $EF,$00,$B6,$15,$F2<br />
+ dc.b $F3,$E7,$F5,$04,$C6,$03,$E7,$C5,$E7<br />
dc.b $C4,$E7,$C3,$E7,$C2,$E7,$C1,$E7,$C0,$F2<br />
ssamp54: dc.b $07,$03,$02,$03,$00,$FF,$6F,$6F,$3F,$12,$14,$11<br />
dc.b $0E,$1A,$0A,$03,$0D,$FF,$FF,$FF,$FF,$03,$07,$07,$80<br />
<br />
<br />
Sound55: dc.w z80_ptr(ssamp55),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$AA,$07,$B6,$15,$F2<br />
ssamp55: dc.b $42,$20,$0E,$0F,$0F,$1F,$1F,$1F,$1F,$1F,$1F,$1F<br />
dc.b $1F,$0F,$0E,$0F,$0E,$0F,$0F,$0F,$0F,$2E,$80,$20,$80<br />
<br />
<br />
Sound56: dc.w z80_ptr(ssamp56),$0101<br />
dc.w $8005,z80_ptr(+),$100E<br />
+ dc.b $EF,$00,$F0,$01,$01,$1E,$FF,$8F,$1C,$F4<br />
- dc.b $E7,$9A<br />
dc.w $05F7,$0009,z80_ptr(-)<br />
- dc.b $E7,$9A,$04,$E6,$02,$E7,$9A,$04,$E6<br />
dc.w $02F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp56: dc.b $0D,$06,$00,$00,$E5,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$27,$80,$80,$80<br />
<br />
<br />
Sound57: dc.w z80_ptr(ssamp57),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$CA,$15,$F2<br />
ssamp57: dc.b $04,$09,$70,$00,$30,$1C,$1F,$DF,$1F,$15,$12,$0B<br />
dc.b $0F,$0C,$0D,$00,$0D,$07,$2F,$FA,$FA,$00,$29,$00,$00<br />
<br />
; CNZ bonusy bumper sound<br />
Sound58: dc.w z80_ptr(ssamp58),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$B3,$06,$B3,$15,$F2<br />
ssamp58: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
<br />
; CNZ baaang bumper sound<br />
Sound59: dc.w z80_ptr(ssamp59),$0103<br />
dc.w $8004,z80_ptr(+),$0000<br />
dc.w $8002,z80_ptr(++),$0002<br />
dc.w $8005,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$E1,$0C,$B5,$14,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
+ dc.b $EF,$00,$B6,$14,$F2<br />
ssamp59: dc.b $32,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $0D,$00,$01,$01,$0C,$00,$23,$C3,$F6,$08,$07,$1C,$03<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; CNZ gloop / water droplet sound<br />
Sound5A: dc.w z80_ptr(ssamp5A),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$7F,$F1,$AA,$0A,$F2<br />
ssamp5A: dc.b $47,$03,$02,$02,$04,$5F,$5F,$5F,$5F,$0E,$1A,$11<br />
dc.b $0A,$09,$0A,$0A,$0A,$4F,$3F,$3F,$3F,$7F,$80,$80,$A3<br />
<br />
<br />
Sound5B: dc.w z80_ptr(ssamp5B),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$02,$A5,$01,$E7<br />
- dc.b $01,$E7,$E6<br />
dc.w $02F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5B: dc.b $38,$0F,$0F,$0F,$0F,$1F,$1F,$1F,$0E,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$1F,$00,$00,$00,$80<br />
<br />
<br />
Sound5C: dc.w z80_ptr(ssamp5C),$0102<br />
dc.w $8004,z80_ptr(+),$000E<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$85,$40<br />
- dc.b $E7,$04,$E6<br />
dc.w $04F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$40<br />
- dc.b $E7,$08,$E6<br />
dc.w $01F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5C: dc.b $FA,$12,$01,$01,$01,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$81,$8E,$14,$80<br />
<br />
; chain clink<br />
Sound5D: dc.w z80_ptr(ssamp5D),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$C0,$04,$F2<br />
ssamp5D: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; helicopter<br />
Sound5E: dc.w z80_ptr(ssamp5E),$0101<br />
dc.w $8002,z80_ptr(+),$1405<br />
+ dc.b $EF,$00<br />
- dc.b $95,$02,$95<br />
dc.w $01F7,$0013,z80_ptr(-)<br />
- dc.b $95,$02,$95,$01,$E6<br />
dc.w $01F7,$001B,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5E: dc.b $35,$30,$44,$40,$51,$1F,$1F,$1F,$1F,$10,$00,$13<br />
dc.b $15,$1F,$00,$1F,$1A,$7F,$0F,$7F,$5F,$02,$A8,$80,$80<br />
<br />
<br />
Sound5F: dc.w z80_ptr(ssamp5F),$0103<br />
dc.w $8005,z80_ptr(s5Fs1),$0000<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
s5Fs1 dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$E6,$0A,$80<br />
dc.b $06,$EF,$01,$F0,$01,$01,$11,$FF,$A2,$28<br />
- dc.b $E7,$03,$E6<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs2 dc.b $80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$1D<br />
- dc.b $E7,$07,$EC<br />
dc.w $01F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs3 dc.b $80,$16,$F5,$03<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $FFF7,$0005,z80_ptr(-)<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $01F7,$0007,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5F: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
dc.b $3A,$70,$30,$04,$01,$0F,$14,$19,$16,$08,$0A,$0B<br />
dc.b $05,$03,$03,$03,$05,$1F,$6F,$8F,$5F,$1F,$22,$1F,$80<br />
<br />
; spindash charge<br />
Sound60: dc.w z80_ptr(ssamp60),$0101<br />
dc.w $8005,z80_ptr(+),$FE00<br />
+ dc.b $EF,$00,$F0,$00,$01,$20,$F6,$C4,$16,$E7,$F4,$D0,$18,$E7<br />
- dc.b $04,$E7,$E6<br />
dc.w $03F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp60: dc.b $34,$00,$03,$0C,$09,$9F,$8C,$8F,$95,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$00,$1D,$00,$00<br />
<br />
; rumbling<br />
Sound61: dc.w z80_ptr(ssamp61),$0101<br />
dc.w $8004,z80_ptr(+),$0004<br />
+ dc.b $80,$01,$EF,$00,$F0,$00,$01,$70,$06,$82,$06,$85,$08,$83<br />
dc.b $01,$82,$05,$86,$06,$89,$03,$82,$08,$88,$04,$82,$06,$E6<br />
dc.b $02,$85,$08,$E6,$02,$83,$01,$E6,$02,$82,$05,$E6,$02,$86<br />
dc.b $06,$E6,$02,$89,$03,$E6,$02,$82,$08,$E6,$02,$88,$04,$E6,$02,$F2<br />
ssamp61: dc.b $32,$30,$30,$50,$30,$1F,$0E,$19,$0E,$07,$12,$15<br />
dc.b $09,$0A,$09,$1D,$06,$E8,$03,$0A,$17,$07,$00,$00,$00<br />
<br />
<br />
Sound62: dc.w z80_ptr(ssamp62),$0101<br />
dc.w $8005,z80_ptr(+),$FF00<br />
+ dc.b $EF,$00,$A6,$05,$F0,$01,$01,$E7,$40<br />
- dc.b $C4,$02,$E7,$E6<br />
dc.w $01F7,$0012,z80_ptr(-)<br />
dc.b $F2<br />
ssamp62: dc.b $34,$0C,$10,$73,$0C,$AF,$AC,$FF,$D5,$06,$00,$02<br />
dc.b $01,$02,$0A,$04,$08,$BF,$BF,$BF,$BF,$00,$08,$80,$80<br />
<br />
; CNZ blooing bumper<br />
Sound63: dc.w z80_ptr(ssamp63),$0101<br />
dc.w $8005,z80_ptr(+),$0907<br />
+ dc.b $EF,$00,$F0,$01,$01,$04,$56,$92,$03,$9A,$25,$F2<br />
ssamp63: dc.b $3D,$12,$10,$77,$30,$5F,$5F,$5F,$5F,$0F,$0A,$00<br />
dc.b $01,$0A,$0A,$0D,$0D,$4F,$0F,$0F,$0F,$13,$80,$80,$80<br />
<br />
; HTZ track click sound<br />
Sound64: dc.w z80_ptr(ssamp64),$0101<br />
dc.w $8005,z80_ptr(+),$1100<br />
+ dc.b $EF,$00,$C7,$02,$F2<br />
ssamp64: dc.b $24,$2A,$02,$05,$01,$1A,$1F,$10,$1F,$0F,$1F,$1F<br />
dc.b $1F,$0C,$0D,$11,$11,$0C,$09,$09,$0F,$0E,$04,$80,$80<br />
<br />
; kicking up leaves sound<br />
Sound65: dc.w z80_ptr(ssamp65),$0101<br />
dc.w $80C0,z80_ptr(+),$F800<br />
+ dc.b $F5,$03,$F3,$E7,$CE,$03,$F5,$06,$CE,$04,$EC<br />
dc.b $02,$CE,$02,$F5,$03,$EC,$FE,$CE,$08,$CE,$18,$F2<br />
ssamp65: ; uhm... apparently they forgot to null out the pointer to here.<br />
; luckily, sound 65 doesn't really use its sample<br />
<br />
; leaf splash?<br />
Sound66: dc.w z80_ptr(ssamp66),$0102<br />
dc.w $8005,z80_ptr(++),$EE08<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$F5,$09,$C6,$36,$F2<br />
+ dc.b $EF,$00,$80,$01,$92,$02,$02,$02,$30,$F2<br />
ssamp66: dc.b $32,$33,$17,$34,$13,$0F,$0D,$1B,$17,$00,$04,$02<br />
dc.b $0B,$08,$00,$08,$09,$6F,$5F,$4F,$6F,$05,$00,$00,$80<br />
<br />
<br />
Sound67: dc.w z80_ptr(ssamp67),$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$06,$F3,$E7,$90,$0A,$94,$0A,$98,$0A,$9C<br />
dc.b $0A,$A0,$0A,$A4,$08,$A8,$08,$AC,$08,$B0,$08,$F2<br />
ssamp67: ; another not-really-used sample (like Sound65)<br />
<br />
; door slamming quickly (seems unused)<br />
Sound68: dc.w z80_ptr(ssamp68),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$A5,$06,$F2<br />
ssamp68: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
<br />
Sound69: dc.w z80_ptr(ssamp69),$0102<br />
dc.w $8005,z80_ptr(+),$F400<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$9B,$03,$A8,$06,$9E,$08,$F2<br />
+ dc.b $F5,$04,$F3,$E7,$C6,$03,$C6,$06,$C6,$08,$F2<br />
ssamp69: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; robotic laser burst<br />
Sound6A: dc.w z80_ptr(ssamp6A),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$DF,$14,$E6,$18,$06,$F2<br />
ssamp6A: dc.b $3D,$09,$34,$34,$28,$1F,$16,$16,$16,$00,$00,$00<br />
dc.b $04,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$15,$02,$02,$00<br />
<br />
; scatter<br />
Sound6B: dc.w z80_ptr(ssamp6B),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$81,$04,$80,$0C,$F2<br />
ssamp6B: dc.b $3A,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $07,$00,$01,$01,$03,$00,$23,$C3,$46,$08,$07,$1C,$03<br />
<br />
<br />
Sound6C: dc.w z80_ptr(ssamp6C),$0104<br />
dc.w $8005,z80_ptr(++),$0010<br />
dc.w $8004,z80_ptr(+),$0010<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
+ dc.b $E1,$10<br />
+ dc.b $EF,$01,$F0,$01,$01,$EC,$56,$C0,$24,$F4,$EF,$00,$E6,$F0<br />
- dc.b $BB,$02,$E7,$E6,$02,$E9<br />
dc.w $01F7,$0020,z80_ptr(-)<br />
dc.b $F2<br />
ssamp6C: dc.b $00,$53,$30,$03,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$06,$23,$80<br />
dc.b $3C,$72,$32,$32,$72,$14,$14,$0F,$0F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$02,$02,$08,$08,$35,$14,$00,$00<br />
<br />
; error sound<br />
Sound6D: dc.w z80_ptr(ssamp6D),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$B0,$06,$80,$06,$B0,$18,$F2<br />
ssamp6D: dc.b $38,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$1F,$0C,$17,$00<br />
<br />
; silver sonic buzz saw<br />
Sound6E: dc.w z80_ptr(ssamp6E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$C6,$24,$E7<br />
- dc.b $C6,$04,$E7,$E6<br />
dc.w $04F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F3,$E7,$C7,$44,$F2<br />
ssamp6E: dc.b $33,$00,$10,$00,$31,$1F,$1D,$1E,$0E,$00,$0C,$1D<br />
dc.b $00,$00,$00,$01,$00,$0F,$0F,$0F,$0F,$08,$06,$07,$80<br />
<br />
<br />
Sound6F: dc.w z80_ptr(ssamp6A),$0103<br />
dc.w $8005,z80_ptr(++),$000B<br />
dc.w $8004,z80_ptr(+),$0012<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $E1,$02,$80,$02<br />
+ dc.b $EF,$00,$E6,$0C,$DF,$06,$E7,$E6,$F4,$06,$E7<br />
dc.b $E6,$F4,$12,$E7,$E6,$0C,$06,$E7,$E6,$0C,$06,$F2<br />
+ dc.b $F3,$E7,$C6,$04,$C0,$BA,$B4,$AE,$E6<br />
dc.b $01,$AE,$E6,$01,$AE,$E6,$01,$AE,$F2<br />
<br />
<br />
Sound70: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$C6,$18<br />
- dc.b $E7,$03,$E6<br />
dc.w $01F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to the other bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
; share these symbols externally (WARNING: don't rename, move or remove these labels!)<br />
shared movewZ80CompSize<br />
</asm><br />
<br />
We want to replace it with this optimized code:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===sound playback routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #$GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
<br />
==Driver data files==<br />
then unpack this into the sound folder and optionally remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the music and sound effects==<br />
Now we will open s2.constants.asm.<br><br />
go to '''MusID__First''' and you will notice '''this''':<br />
<asm><br />
MusID__First = idstart<br />
MusID_2PResult = id(zMusIDPtr_2PResult) ; 81<br />
MusID_EHZ = id(zMusIDPtr_EHZ) ; 82<br />
MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83<br />
MusID_OOZ = id(zMusIDPtr_OOZ) ; 84<br />
MusID_MTZ = id(zMusIDPtr_MTZ) ; 85<br />
MusID_HTZ = id(zMusIDPtr_HTZ) ; 86<br />
MusID_ARZ = id(zMusIDPtr_ARZ) ; 87<br />
MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88<br />
MusID_CNZ = id(zMusIDPtr_CNZ) ; 89<br />
MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A<br />
MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B<br />
MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C<br />
MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D<br />
MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E<br />
MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F<br />
MusID_HPZ = id(zMusIDPtr_HPZ) ; 90<br />
MusID_Options = id(zMusIDPtr_Options) ; 91<br />
MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92<br />
MusID_Boss = id(zMusIDPtr_Boss) ; 93<br />
MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94<br />
MusID_Ending = id(zMusIDPtr_Ending) ; 95<br />
MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96<br />
MusID_Invincible = id(zMusIDPtr_Invincible); 97<br />
MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98<br />
MusID_Title = id(zMusIDPtr_Title) ; 99<br />
MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A<br />
MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B<br />
MusID_Continue = id(zMusIDPtr_Continue) ; 9C<br />
MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D<br />
MusID_Credits = id(zMusIDPtr_Credits) ; 9E<br />
MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F<br />
MusID__End = id(zMusIDPtr__End) ; A0<br />
</asm><br />
that may be good if you were using the sonic2 driver, but obviously you are not, we need to change it.<br />
<asm><br />
MusID__First = 0<br />
MusID_AIZ1 = 1<br />
MusID_AIZ2 = 2<br />
MusID_HCZ1 = 3<br />
MusID_HCZ2 = 4<br />
MusID_MGZ1 = 5<br />
MusID_MGZ2 = 6<br />
MusID_CNZ1 = 7<br />
MusID_CNZ2 = 8<br />
MusID_FBZ1 = 9<br />
MusID_FBZ2 = $A<br />
MusID_ICZ1 = $B<br />
MusID_ICZ2 = $C<br />
MusID_LBZ1 = $D<br />
MusID_LBZ2 = $E<br />
MusID_MHZ1 = $F<br />
MusID_MHZ2 = $10<br />
MusID_SZ1 = $11<br />
MusID_SZ2 = $12<br />
MusID_LRZ1 = $13<br />
MusID_LRZ2 = $14<br />
MusID_SSZ = $15<br />
MusID_DEZ1 = $16<br />
MusID_DEZ2 = $17<br />
MusID_MBSK = $18<br />
MusID_Boss = $19<br />
MusID_TDZ = $1A<br />
MusID_GSBonus = $1B<br />
MusID_SpecStage = $1C<br />
MusID_SMBonus = $1D<br />
MusID_GBMBonus = $1E<br />
MusID_KTE = $1F<br />
MusID_ALZ = $20<br />
MusID_BPZ = $21<br />
MusID_DPZ = $22<br />
MusID_CGZ = $23<br />
MusID_EMZ = $24<br />
MusID_Title = $25<br />
MusID_Credits = $26<br />
MusID_GameOver = $27<br />
MusID_Continue = $28<br />
MusID_EndLevel = $29<br />
MusID_ExtraLife = $2A<br />
MusID_Emerald = $2B<br />
MusID_Invincible = $2C<br />
MusID_2PVS = $2D<br />
MusID_MB = $2E<br />
MusID_Options = $2F<br />
MusID_EndBoss = $30<br />
MusID_Countdown = $31<br />
MusID_Ending = $32<br />
<br />
;for compatibility with sonic2<br />
MusID_2PResult = MusID_Continue<br />
MusID_EHZ = MusID_AIZ1<br />
MusID_MCZ_2P = MusID_MHZ2<br />
MusID_OOZ = MusID_DPZ<br />
MusID_MTZ = MusID_DEZ1<br />
MusID_HTZ = MusID_LRZ1<br />
MusID_ARZ = MusID_HCZ1<br />
MusID_CNZ_2P = MusID_CNZ2<br />
MusID_CNZ = MusID_CNZ1<br />
MusID_DEZ = MusID_DEZ2<br />
MusID_MCZ = MusID_EMZ<br />
MusID_EHZ_2P = MusID_AIZ2<br />
MusID_SCZ = MusID_FBZ1<br />
MusID_CPZ = MusID_HCZ2<br />
MusID_WFZ = MusID_FBZ2<br />
MusID_HPZ = MusID_LRZ1<br />
MusID_SuperSonic = MusID_Invincible<br />
MusID__End = $33<br />
</asm></div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208749
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-25T00:48:34Z
<p>Kram1024: /* Upgrading Pause / Resume routines */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==<br />
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><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
move sr,-(sp)<br />
movem.l d0-a6,-(sp)<br />
move #$2700,sr<br />
lea (Z80_Bus_Request).l,a3<br />
lea (Z80_Reset).l,a2<br />
moveq #0,d2<br />
move.w #$100,d1<br />
move.w d1,(a3) ; get Z80 bus<br />
move.w d1,(a2) ; release Z80 reset (was held high by console on startup)<br />
- btst d2,(a3)<br />
bne.s - ; wait until the 68000 has the bus<br />
jsr DecompressSoundDriver(pc)<br />
btst #0,(VDP_control_port+1).l ; check video mode<br />
sne (Z80_RAM+zPalModeByte).l ; set if PAL<br />
move.w d2,(a2) ; hold Z80 reset<br />
move.w d2,(a3) ; release Z80 bus<br />
moveq #$E6,d0<br />
- dbf d0,- ; wait for 2,314 cycles<br />
move.w d1,(a2) ; release Z80 reset<br />
movem.l (sp)+,d0-a6<br />
move (sp)+,sr<br />
rts<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; slightly modified Saxman decompression of the sound driver<br />
; a4 == $A00000 (start of Z80 RAM)<br />
; a5 == current position in Z80 RAM?<br />
; a6 == current position in compressed sound driver?<br />
; d0 == data to decompress? (byte)<br />
; d4 == ???<br />
; d5 == ???<br />
; d6 == ???<br />
; d7 == bytes left to decompress<br />
; loc_EC04A:<br />
DecompressSoundDriver:<br />
lea Snd_Driver(pc),a6<br />
; WARNING: the build script needs editing if you rename this label<br />
movewZ80CompSize: move.w #Snd_Driver_End-Snd_Driver,d7 ; patched (by fixpointer.exe) after compression since the exact size can't be known beforehand<br />
moveq #0,d6<br />
lea (Z80_RAM).l,a5<br />
moveq #0,d5<br />
lea (Z80_RAM).l,a4<br />
<br />
loc_EC062:<br />
lsr.w #1,d6<br />
btst #8,d6<br />
bne.s +<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d6<br />
ori.w #$FF00,d6<br />
+<br />
btst #0,d6<br />
beq.s loc_EC086<br />
jsr sub_EC0DE(pc)<br />
move.b d0,(a5)+<br />
addq.w #1,d5<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC086:<br />
jsr sub_EC0DE(pc)<br />
moveq #0,d4<br />
move.b d0,d4<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d3<br />
andi.w #$F,d3<br />
addq.w #2,d3<br />
andi.w #$F0,d0<br />
lsl.w #4,d0<br />
add.w d0,d4<br />
addi.w #$12,d4<br />
andi.w #$FFF,d4<br />
move.w d5,d0<br />
andi.w #$F000,d0<br />
add.w d0,d4<br />
cmp.w d4,d5<br />
bhs.s loc_EC0CC<br />
subi.w #$1000,d4<br />
bcc.s loc_EC0CC<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b #0,(a5)+<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC0CC:<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b (a4,d4.w),(a5)+<br />
addq.w #1,d4<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; End of function DecompressSoundDriver<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_EC0DE:<br />
move.b (a6)+,d0<br />
subq.w #1,d7<br />
bne.s +<br />
addq.w #4,sp<br />
+<br />
rts<br />
; End of function sub_EC0DE<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; S2 sound driver (Sound driver compression (slightly modified Saxman))<br />
; ---------------------------------------------------------------------------<br />
; loc_EC0E8:<br />
Snd_Driver:<br />
save<br />
include "s2.sounddriver.asm" ; CPU Z80<br />
restore<br />
padding off<br />
!org (Snd_Driver+Size_of_Snd_driver_guess) ; don't worry; I know what I'm doing<br />
<br />
<br />
; loc_ED04C:<br />
Snd_Driver_End:<br />
<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ---------------------------------------------------------------------------<br />
; the DAC data has to line up with the end of the bank.<br />
<br />
; actually it only has to fit within one bank, but we'll line it up to the end anyway<br />
; because the padding gives the sound driver some room to grow<br />
cnop -Size_of_DAC_samples, $8000<br />
<br />
; ---------------------------------------------------------------------------<br />
; DAC samples<br />
; ---------------------------------------------------------------------------<br />
; loc_ED100:<br />
SndDAC_Start:<br />
<br />
SndDAC_Sample1:<br />
BINCLUDE "sound/DAC/Sample 1.bin"<br />
SndDAC_Sample1_End<br />
<br />
SndDAC_Sample2:<br />
BINCLUDE "sound/DAC/Sample 2.bin"<br />
SndDAC_Sample2_End<br />
<br />
SndDAC_Sample5:<br />
BINCLUDE "sound/DAC/Sample 5.bin"<br />
SndDAC_Sample5_End<br />
<br />
SndDAC_Sample6:<br />
BINCLUDE "sound/DAC/Sample 6.bin"<br />
SndDAC_Sample6_End<br />
<br />
SndDAC_Sample3:<br />
BINCLUDE "sound/DAC/Sample 3.bin"<br />
SndDAC_Sample3_End<br />
<br />
SndDAC_Sample4:<br />
BINCLUDE "sound/DAC/Sample 4.bin"<br />
SndDAC_Sample4_End<br />
<br />
SndDAC_Sample7:<br />
BINCLUDE "sound/DAC/Sample 7.bin"<br />
SndDAC_Sample7_End<br />
<br />
SndDAC_End<br />
<br />
if SndDAC_End - SndDAC_Start > $8000<br />
fatal "DAC samples must fit within $8000 bytes, but you have $\{SndDAC_End-SndDAC_Start } bytes of DAC samples."<br />
endif<br />
if SndDAC_End - SndDAC_Start > Size_of_DAC_samples<br />
fatal "Size_of_DAC_samples = $\{Size_of_DAC_samples}, but you have $\{SndDAC_End-SndDAC_Start} bytes of DAC samples."<br />
endif<br />
<br />
; ---------------------------------------------------------------------------<br />
; Music pointers<br />
; ---------------------------------------------------------------------------<br />
align $8000<br />
<br />
; loc_F0000:<br />
MusicPoint1:<br />
MusPtr_Continue: rom_ptr_z80 Mus_Continue-MusicPoint2<br />
<br />
<br />
Mus_Continue: BINCLUDE "sound/music/Continue.bin"<br />
<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ----------------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ----------------------------------------------------------------------------------<br />
; the PCM data has to line up with the end of the bank.<br />
cnop -Size_of_SEGA_sound, $8000<br />
<br />
; -------------------------------------------------------------------------------<br />
; Sega Intro Sound<br />
; 8-bit unsigned raw audio at 16Khz<br />
; -------------------------------------------------------------------------------<br />
; loc_F1E8C:<br />
Snd_Sega: BINCLUDE "sound/PCM/SEGA.bin"<br />
Snd_Sega_End:<br />
<br />
if Snd_Sega_End - Snd_Sega > $8000<br />
fatal "Sega sound must fit within $8000 bytes, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
if Snd_Sega_End - Snd_Sega > Size_of_SEGA_sound<br />
fatal "Size_of_SEGA_sound = $\{Size_of_SEGA_sound}, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
<br />
; ------------------------------------------------------------------------------<br />
; Music pointers<br />
; ------------------------------------------------------------------------------<br />
align $8000<br />
soundBankStart := *<br />
<br />
; loc_F8000:<br />
MusicPoint2:<br />
MusPtr_CNZ_2P: rom_ptr_z80 Mus_CNZ_2P<br />
MusPtr_EHZ: rom_ptr_z80 Mus_EHZ<br />
MusPtr_MTZ: rom_ptr_z80 Mus_MTZ<br />
MusPtr_CNZ: rom_ptr_z80 Mus_CNZ<br />
MusPtr_MCZ: rom_ptr_z80 Mus_MCZ<br />
MusPtr_MCZ_2P: rom_ptr_z80 Mus_MCZ_2P<br />
MusPtr_ARZ: rom_ptr_z80 Mus_ARZ<br />
MusPtr_DEZ: rom_ptr_z80 Mus_DEZ<br />
MusPtr_SpecStage: rom_ptr_z80 Mus_SpecStage<br />
MusPtr_Options: rom_ptr_z80 Mus_Options<br />
MusPtr_Ending: rom_ptr_z80 Mus_Ending<br />
MusPtr_EndBoss: rom_ptr_z80 Mus_EndBoss<br />
MusPtr_CPZ: rom_ptr_z80 Mus_CPZ<br />
MusPtr_Boss: rom_ptr_z80 Mus_Boss<br />
MusPtr_SCZ: rom_ptr_z80 Mus_SCZ<br />
MusPtr_OOZ: rom_ptr_z80 Mus_OOZ<br />
MusPtr_WFZ: rom_ptr_z80 Mus_WFZ<br />
MusPtr_EHZ_2P: rom_ptr_z80 Mus_EHZ_2P<br />
MusPtr_2PResult: rom_ptr_z80 Mus_2PResult<br />
MusPtr_SuperSonic: rom_ptr_z80 Mus_SuperSonic<br />
MusPtr_HTZ: rom_ptr_z80 Mus_HTZ<br />
MusPtr_ExtraLife: rom_ptr_z80 Mus_ExtraLife<br />
MusPtr_Title: rom_ptr_z80 Mus_Title<br />
MusPtr_EndLevel: rom_ptr_z80 Mus_EndLevel<br />
MusPtr_GameOver: rom_ptr_z80 Mus_GameOver<br />
MusPtr_Invincible: rom_ptr_z80 Mus_Invincible<br />
MusPtr_Emerald: rom_ptr_z80 Mus_Emerald<br />
MusPtr_HPZ: rom_ptr_z80 Mus_HPZ<br />
MusPtr_Drowning: rom_ptr_z80 Mus_Drowning<br />
MusPtr_Credits: rom_ptr_z80 Mus_Credits<br />
<br />
; loc_F803C:<br />
Mus_HPZ: BINCLUDE "sound/music/HPZ.bin"<br />
Mus_Drowning: BINCLUDE "sound/music/Drowning.bin"<br />
Mus_Invincible: BINCLUDE "sound/music/Invincible.bin"<br />
Mus_CNZ_2P: BINCLUDE "sound/music/CNZ_2p.bin"<br />
Mus_EHZ: BINCLUDE "sound/music/EHZ.bin"<br />
Mus_MTZ: BINCLUDE "sound/music/MTZ.bin"<br />
Mus_CNZ: BINCLUDE "sound/music/CNZ.bin"<br />
Mus_MCZ: BINCLUDE "sound/music/MCZ.bin"<br />
Mus_MCZ_2P: BINCLUDE "sound/music/MCZ_2p.bin"<br />
Mus_ARZ: BINCLUDE "sound/music/ARZ.bin"<br />
Mus_DEZ: BINCLUDE "sound/music/DEZ.bin"<br />
Mus_SpecStage: BINCLUDE "sound/music/SpecStg.bin"<br />
Mus_Options: BINCLUDE "sound/music/Options.bin"<br />
Mus_Ending: BINCLUDE "sound/music/Ending.bin"<br />
Mus_EndBoss: BINCLUDE "sound/music/End_Boss.bin"<br />
Mus_CPZ: BINCLUDE "sound/music/CPZ.bin"<br />
Mus_Boss: BINCLUDE "sound/music/Boss.bin"<br />
Mus_SCZ: BINCLUDE "sound/music/SCZ.bin"<br />
Mus_OOZ: BINCLUDE "sound/music/OOZ.bin"<br />
Mus_WFZ: BINCLUDE "sound/music/WFZ.bin"<br />
Mus_EHZ_2P: BINCLUDE "sound/music/EHZ_2p.bin"<br />
Mus_2PResult: BINCLUDE "sound/music/2player results screen.bin"<br />
Mus_SuperSonic: BINCLUDE "sound/music/Supersonic.bin"<br />
Mus_HTZ: BINCLUDE "sound/music/HTZ.bin"<br />
Mus_Title: BINCLUDE "sound/music/Title screen.bin"<br />
Mus_EndLevel: BINCLUDE "sound/music/End of level.bin"<br />
<br />
; The following act mostly like sound effects<br />
; despite being listed with the music.<br />
; This means they're uncompressed format with absolute pointers<br />
; instead of compressed with relative pointers.<br />
; Because they have absolute pointers,<br />
; they have to be assembled rather than BINCLUDE'd.<br />
; See below (right before Sound20) for other notes<br />
; about the sound format that apply to these too.<br />
<br />
;Mus_ExtraLife: BINCLUDE "sound/music/Extra life.bin"<br />
Mus_ExtraLife: dc.w z80_ptr(Mus_EL_Voices),$0603,$02CD<br />
dc.w z80_ptr(Mus_EL_DAC),$0000<br />
dc.w z80_ptr(Mus_EL_FM1),$E810<br />
dc.w z80_ptr(Mus_EL_FM2),$E810<br />
dc.w z80_ptr(Mus_EL_FM3),$E810<br />
dc.w z80_ptr(Mus_EL_FM4),$E810<br />
dc.w z80_ptr(Mus_EL_FM5),$E810<br />
dc.w z80_ptr(Mus_EL_PSG1),$D008,$0005<br />
dc.w z80_ptr(Mus_EL_PSG2),$DC08,$0005<br />
dc.w z80_ptr(Mus_EL_PSG3),$DC00,$0004<br />
Mus_EL_FM4: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM1: dc.b $E0,$80<br />
+ dc.b $EF,$00,$E8,$06,$D9,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$DB,$09,$D7,$D6,$06,$D9,$18,$F2<br />
Mus_EL_FM2: dc.b $EF,$01,$E8,$06,$E2,$01,$D6,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$D7,$09,$D4,$D2,$06,$D6,$18,$E2,$01,$F2<br />
Mus_EL_FM5: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM3: dc.b $E0,$80<br />
+ dc.b $EF,$02,$BA,$0C,$80,$06,$BA,$B8,$80,$03<br />
dc.b $B8,$06,$80,$03,$B8,$06,$BA,$18,$F2<br />
Mus_EL_PSG1: dc.b $E8,$06,$D6,$06,$03,$03,$06,$06,$E8,$00,$D7,$09<br />
dc.b $D4,$D2,$06,$D6,$18<br />
Mus_EL_PSG2:<br />
Mus_EL_PSG3: dc.b $F2<br />
Mus_EL_DAC: dc.b $88,$12,$06,$8B,$09,$09,$06,$88,$06,$8A,$88,$8A<br />
dc.b $88,$0C,$E4<br />
Mus_EL_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
<br />
<br />
;Mus_GameOver: BINCLUDE "sound/music/Game over.bin"<br />
Mus_GameOver: dc.w z80_ptr(MusGO_Voices),$0603,$02F2<br />
dc.w z80_ptr(MusGOver_DAC),$0000<br />
dc.w z80_ptr(MusGOver_FM1),$E80A<br />
dc.w z80_ptr(MusGOver_FM2),$F40F<br />
dc.w z80_ptr(MusGOver_FM3),$F40F<br />
dc.w z80_ptr(MusGOver_FM4),$F40D<br />
dc.w z80_ptr(MusGOver_FM5),$DC16<br />
dc.w z80_ptr(MusGOver_PSG),$D003,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC06,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC00,$0004<br />
MusGOver_FM1: dc.b $EF,$00<br />
dc.b $F0,$20,$01,$04,$05<br />
dc.b $80,$0C,$CA,$12,$80,$06,$CA,$80,$CB,$12,$C8,$1E<br />
dc.b $CA,$06,$80,$CA,$80,$CA,$80,$C6,$80,$C4,$12,$C8<br />
dc.b $0C,$80,$12,$C9,$04,$80,$C9,$C8,$06,$80,$C7,$80<br />
dc.b $C6,$80<br />
dc.b $F0,$28,$01,$18,$05<br />
dc.b $C5,$60,$F2<br />
MusGOver_FM2: dc.b $EF,$01,$80,$01,$D9,$06,$80,$D9,$80,$D6,$80,$D6<br />
dc.b $80,$D7,$15,$D7,$1B,$D9,$06,$80,$D9,$80,$D6,$80<br />
dc.b $D6,$80,$DC,$15,$DC,$1B,$F2<br />
MusGOver_FM3: dc.b $EF,$01,$D6,$0C,$D6,$D2,$D2,$D4,$15,$D4,$1B,$D6<br />
dc.b $0C,$D6,$D2,$D2,$D7,$15,$D7,$1B,$F2<br />
MusGOver_FM4: dc.b $EF,$02,$E2,$01,$AE,$06,$80,$AE,$80,$A9,$80,$A9<br />
dc.b $80,$AC,$15,$AB,$0C,$AC,$03,$AB,$0C,$AE,$06,$80<br />
dc.b $AE,$80,$A9,$80,$A9,$80,$B3,$15,$B2,$0C,$B3,$03<br />
dc.b $B2,$0C,$AE,$04,$80,$AE,$AD,$06,$80,$AC,$80,$AB<br />
dc.b $80,$AB,$60,$E2,$01,$F2<br />
MusGOver_FM5: dc.b $EF,$03,$80,$30,$D7,$12,$80,$03,$D7,$1B,$80,$30<br />
dc.b $DC,$12,$80,$03,$DC,$1B<br />
MusGOver_PSG: dc.b $F2<br />
MusGOver_DAC: dc.b $80,$18,$81<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(MusGOver_DAC)<br />
dc.b $F2<br />
MusGO_Voices: dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $3C,$33,$73,$30,$70,$94,$96,$9F,$9F,$12,$14,$00<br />
dc.b $0F,$04,$04,$0A,$0D,$2F,$4F,$0F,$2F,$33,$1A,$80,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$1C,$27,$28,$80<br />
dc.b $1F,$66,$53,$31,$22,$1C,$1F,$98,$1F,$12,$0F,$0F<br />
dc.b $0F,$00,$00,$00,$00,$FF,$0F,$0F,$0F,$8C,$8A,$8D,$8B<br />
<br />
;Mus_Emerald: BINCLUDE "sound/music/Got an emerald.bin"<br />
Mus_Emerald: dc.w z80_ptr(MusEmrldVoices),$0703,$01D5<br />
dc.w z80_ptr(MusEmeraldDAC),$0000<br />
dc.w z80_ptr(MusEmeraldFM1),$F408<br />
dc.w z80_ptr(MusEmeraldFM2),$F408<br />
dc.w z80_ptr(MusEmeraldFM3),$F407<br />
dc.w z80_ptr(MusEmeraldFM4),$F416<br />
dc.w z80_ptr(MusEmeraldFM5),$F416<br />
dc.w z80_ptr(MusEmeraldFM6),$F416<br />
dc.w z80_ptr(MusEmeraldPSG1),$F402,$0004<br />
dc.w z80_ptr(MusEmeraldPSG2),$F402,$0005<br />
dc.w z80_ptr(MusEmeraldPSG3),$F400,$0004<br />
MusEmeraldFM3: dc.b $E1,$02<br />
MusEmeraldFM1: dc.b $EF,$00,$C1,$06,$C4,$C9,$CD,$0C,$C9,$D0,$2A,$F2<br />
MusEmeraldFM2: dc.b $EF,$00,$BD,$06,$C1,$C4,$C9,$0C,$C6,$CB,$2A,$F2<br />
MusEmeraldFM4: dc.b $EF,$01,$C1,$0C,$C1,$06,$C4,$06,$80,$C4,$80,$C9<br />
dc.b $2A,$F2<br />
MusEmeraldFM5: dc.b $EF,$01,$C9,$0C,$C9,$06,$CD,$06,$80,$CD,$80,$D0<br />
dc.b $2A,$F2<br />
MusEmeraldFM6: dc.b $EF,$01,$C4,$0C,$C4,$06,$C9,$06,$80,$C9,$80,$CD<br />
dc.b $2A,$F2<br />
MusEmeraldPSG2: dc.b $80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusEmeraldPSG1: dc.b $E2,$01,$80,$02,$80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
MusEmeraldPSG3:<br />
MusEmeraldDAC: dc.b $E2,$01,$F2<br />
MusEmrldVoices: dc.b $04,$35,$54,$72,$46,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$1D,$14,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$07,$07,$1A,$16,$80,$80<br />
<br />
;Mus_Credits: BINCLUDE "sound/music/Credits.bin"<br />
Mus_Credits: dc.w z80_ptr(MusCred_Voices),$0603,$01F0<br />
dc.w z80_ptr(MusCred_DAC),$0000<br />
dc.w z80_ptr(MusCred_FM1),$000E<br />
dc.w z80_ptr(MusCred_FM2),$180A<br />
dc.w z80_ptr(MusCred_FM3),$0014<br />
dc.w z80_ptr(MusCred_FM4),$0016<br />
dc.w z80_ptr(MusCred_FM5),$0C16<br />
dc.w z80_ptr(MusCred_PSG1),$E806,$000B<br />
dc.w z80_ptr(MusCred_PSG2),$DC07,$000B<br />
dc.w z80_ptr(MusCred_PSG3),$0002,$0003<br />
MusCred_FM1: dc.b $E9,$F4,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$0C,$E6,$02<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$03,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $AE,$06,$A2,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $E6,$FD<br />
- dc.b $EF,$00,$B7,$06,$BA,$F8<br />
dc.w z80_ptr(MusCreditsDA13)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$06,$80,$80,$30,$80,$EF,$0B,$E9,$18,$E6,$02<br />
- dc.b $94,$0C,$8F,$92,$8F,$06,$94,$05,$94,$07,$06,$8F<br />
dc.b $0C,$92,$8F<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$30,$80,$EF,$0E,$E6,$FF,$E9,$E8,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$91,$94,$06,$80,$18,$96,$12,$9A,$06,$80<br />
dc.b $80,$12,$8F,$93,$08,$80,$16,$96,$06,$91,$92,$94<br />
dc.b $96,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$9D,$9A,$08,$80,$16,$96,$12,$9D,$08,$80<br />
dc.b $04,$EF,$12<br />
dc.b $F0,$18,$01,$0A,$04<br />
dc.b $80,$30,$80,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$24,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$EF,$01,$E9,$F4,$E6,$FA,$F4<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $80,$03,$80,$60,$E6,$04,$E1,$01,$EF,$1B,$E6,$06<br />
dc.b $C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80,$EF<br />
dc.b $1C,$E6,$FA,$E8,$00,$BC,$0C,$12,$06,$EF,$1B,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$80,$E8,$06,$C4,$06,$06,$C6,$C4,$E8<br />
dc.b $00,$C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80<br />
dc.b $E8,$00,$EF,$1C,$E6,$FA,$C1,$C4,$C1,$EF,$1A,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$06,$80,$80,$24,$80,$30,$80,$EF,$1F<br />
dc.b $E9,$18,$E6,$F7,$E1,$00,$80,$06,$AC,$AE,$80,$B1<br />
dc.b $80,$B3,$80,$B4,$80,$B3,$80,$B1,$B3,$80,$B1,$E9<br />
dc.b $F4,$EF,$00,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC<br />
dc.b $06,$AE,$B1,$80,$B4,$B1,$80,$B1,$E9,$0C,$EF,$1F<br />
dc.b $80,$06,$B8,$12,$B4,$06,$80,$B3,$80,$B4,$80,$B3<br />
dc.b $80,$B1,$AE,$80,$B1,$E9,$F4,$EF,$00,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$30,$80,$EF,$21,$E9,$0C,$80,$30,$80<br />
dc.b $08,$A0,$04,$9E,$0C,$9D,$9B,$99,$08,$04,$91,$0C<br />
dc.b $92,$93,$94,$98,$99,$9B,$9D,$98,$95,$93,$91,$98<br />
dc.b $9D,$91,$96,$98,$99,$98,$96,$99,$9D,$96,$95,$97<br />
dc.b $99,$97,$95,$96,$97,$98,$99,$98,$99,$9B,$9D,$08<br />
dc.b $04,$98,$0C,$91,$95,$96,$98,$99,$9D,$9E,$08,$96<br />
dc.b $10,$97,$0C,$98,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$08,$99,$04,$EF,$23,$E9,$E8,$E6,$07,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $80,$60,$E6,$FB,$80,$0C,$CD,$06,$80,$D4,$CD,$06<br />
dc.b $80,$0C,$CD,$06,$80,$D4,$CD,$06,$80,$18,$E6,$05<br />
dc.b $80,$0C,$AE,$80,$AE,$80,$24,$E1,$02,$E6,$08,$A2<br />
dc.b $6C,$F2<br />
MusCreditsD9D1: dc.b $A5,$0C,$B1,$06,$80,$B1,$0C,$AC,$B3,$12,$B1,$0C<br />
dc.b $AC,$06,$AE,$B1,$A7,$0C,$B3,$06,$80,$B3,$0C,$AE<br />
dc.b $B5,$12,$B3,$06,$80,$AE,$B0,$B3,$A3,$0C,$AF,$06<br />
dc.b $80,$AF,$0C,$AA,$B1,$12,$AF,$0C,$AA,$06,$AC,$AF<br />
dc.b $A2,$0C,$AE,$06,$A2,$A4,$0C,$B0,$06,$A4,$A5,$0C<br />
dc.b $B1,$06,$A5,$A2,$0C,$E3<br />
MusCreditsDA13: dc.b $BE,$0C,$BC,$06,$BA,$BC,$BA,$04,$E7,$08,$BA,$04<br />
dc.b $80,$0E,$EF,$07,$B7,$06,$B2,$B5,$B7,$EF,$00,$B7<br />
dc.b $BA,$BE,$0C,$BC,$06,$BA,$BC,$BA,$0C,$BC,$04,$80<br />
dc.b $08,$BA,$04,$80,$08,$BC,$04,$80,$08,$BE,$12,$BA<br />
dc.b $06,$B7,$80,$B7,$80,$24,$EF,$07,$B7,$06,$B2,$B5<br />
dc.b $B7,$80,$0C,$80,$30,$BE,$06,$BE,$BA,$04,$80,$08<br />
dc.b $BC,$06,$BE,$E3<br />
MusCreditsDA5F: dc.b $C3,$01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$02,$C3<br />
dc.b $01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01<br />
dc.b $E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$FC,$C3,$01,$E7<br />
dc.b $C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01,$E7,$C4<br />
dc.b $E7,$C5,$E7,$C6,$2D,$E7,$30,$E7,$30,$E3<br />
MusCreditsDA99: dc.b $A7,$0C,$B3,$06,$80,$B1,$80,$B3,$0C,$A7,$03,$80<br />
dc.b $06,$A7,$03,$B3,$0C,$B1,$B3,$09,$AE,$03,$AC,$06<br />
dc.b $80,$AC,$0C,$AE,$06,$80,$AE,$0C,$AF,$06,$80,$27<br />
dc.b $E3<br />
MusCreditsDABE: dc.b $80,$0C,$CA,$15,$80,$03,$CA,$06,$80,$CB,$0F,$80<br />
dc.b $03,$C8,$18,$80,$06,$CA,$80,$CA,$80,$CA,$80,$C6<br />
dc.b $80,$C4,$0F,$80,$03,$C8,$18,$80,$06<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E3<br />
MusCreditsDAE5: dc.b $80,$12,$94,$97,$06,$80,$18,$99,$12,$94,$06,$80<br />
dc.b $80,$12,$92,$96,$06,$80,$18,$97,$12,$92,$06,$80<br />
dc.b $E3<br />
MusCreditsDAFE: dc.b $80,$99,$80,$99,$80,$9E,$80,$E3<br />
MusCreditsDB06: dc.b $EF,$07,$80,$54,$C7,$04,$C8,$C9,$CA,$24,$CD,$D2<br />
dc.b $18,$D0,$24,$CF,$CB,$18,$CB,$0C,$CA,$80,$CD,$60<br />
dc.b $E7,$3C,$CA,$24,$CD,$D2,$18,$D4,$24,$D0,$D4,$18<br />
dc.b $D4,$24,$D6,$60,$E7,$3C,$E3<br />
MusCred_FM2: dc.b $80,$60,$EF,$01,$E8,$06,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $85,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8A,$87,$88,$89,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $88<br />
dc.b $F7,$00,$0B<br />
dc.w z80_ptr(-)<br />
- dc.b $8A<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$E6,$FC,$8A,$8B,$8C,$E6,$04,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$8D,$8A,$8B,$8C,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8D,$06,$99,$E8,$00,$8A,$0C,$8B,$8C,$E9,$E8,$E6<br />
dc.b $0C,$EF,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E6,$F9,$EF,$08<br />
MusCreditsDB93: dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $06,$9C,$12,$9D,$0C,$9E,$F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9D,$04,$80,$08,$9D,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $9C,$04,$80,$08,$9C,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(MusCreditsDB93)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$13,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$60,$EF,$0F,$E6,$F3<br />
dc.b $F0,$04,$02,$03,$02<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$30,$E7,$18,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$EF,$13,$E6,$F5,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$0C,$A9,$08,$A1,$10,$F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$08,$A9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E1,$02,$E9,$F4,$E6,$0A,$F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$EF,$1B,$E1,$00<br />
dc.b $E8,$06,$80,$3C,$B8,$06,$06,$BA,$BD,$BD,$BA,$EF<br />
dc.b $1D,$E6,$FA,$E8,$00,$F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $EF,$1C,$BD,$EF,$1D,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $80,$30,$80,$EF,$01,$E9,$18,$E6,$F9<br />
- dc.b $99,$0C,$A5,$06,$80,$96,$0C,$A2,$06,$80,$97,$0C<br />
dc.b $A3,$06,$80,$98,$0C,$A8,$06,$A7,$99,$06,$99,$12<br />
dc.b $96,$0C,$A2,$06,$80,$97,$0C,$A3,$06,$80,$98,$0C<br />
dc.b $A4,$06,$80<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$22,$E9,$E8,$E6,$03<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$AC,$04,$AE,$08,$B1,$04,$B5,$30,$80,$0C<br />
dc.b $B5,$08,$80,$04,$B6,$08,$B5,$10,$B9,$08,$04,$80<br />
dc.b $08,$B5,$34,$80,$0C,$B5,$BA,$08,$04,$80,$08,$B5<br />
dc.b $04,$B1,$24,$80,$0C,$B1,$08,$80,$04,$B3,$08,$B1<br />
dc.b $04,$B4,$0C,$B3,$08,$B1,$4C,$80,$0C,$B5,$08,$80<br />
dc.b $04,$B6,$08,$80,$04,$B5,$08,$80,$04,$B9,$08,$04<br />
dc.b $80,$08,$B5,$1C,$80,$0C,$BA,$18,$BC,$08,$BA,$04<br />
dc.b $BD,$18,$80,$0C,$BA,$04,$80,$08,$B8,$18,$B5,$B1<br />
dc.b $B3,$0C,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$0C,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$14,$B1,$04,$E6,$FF,$EF,$24,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $AC,$12,$AB,$0C,$AC,$06,$AB,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $B3,$12,$B2,$0C,$B3,$06,$B2,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $AC,$06,$80,$A9,$80,$AA,$80,$AB,$80,$AC,$AC,$A9<br />
dc.b $80,$AA,$80,$AC,$80,$A9,$80,$A9,$80,$AD,$80,$AD<br />
dc.b $80,$B0,$80,$B0,$80,$B3,$80,$B3,$80,$80,$0C,$A2<br />
dc.b $12,$80,$06,$A2,$12,$AD,$AE,$06,$80,$E6,$FD,$A2<br />
dc.b $6C,$F2<br />
MusCreditsDD59: dc.b $80,$0C,$C4,$06,$80,$C6,$80,$C4,$80,$C9,$80,$C9<br />
dc.b $80,$CB,$CD,$80,$0C,$80,$CB,$18,$C6,$06,$80,$C9<br />
dc.b $C9,$80,$CB,$0C,$80,$12,$80,$1E,$C7,$06,$C9,$C7<br />
dc.b $CB,$80,$C9,$80,$C7,$C9,$80,$C6,$E7,$C6,$30,$E7<br />
dc.b $18,$80,$18,$E3<br />
MusCreditsDD8D: dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
dc.b $06,$AB,$9F,$0C,$E3<br />
MusCreditsDD9D: dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$B6,$80,$18<br />
dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$30,$E7,$E3<br />
MusCreditsDDB5: dc.b $BF,$06,$BD,$BF,$12,$C2,$BF,$0C,$C1,$80,$06,$12<br />
dc.b $C4,$0C,$C2,$06,$80,$C9,$C6,$3C,$80,$06,$0C,$C7<br />
dc.b $12,$C6,$C4,$06,$C2,$C1,$18,$E3<br />
MusCreditsDDD5: dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$E3<br />
MusCreditsDDEA: dc.b $A2,$0C,$AE,$AC,$08,$AE,$04,$AC,$08,$A9,$04,$A7<br />
dc.b $08,$04,$E3<br />
MusCreditsDDF9: dc.b $80,$0C,$B1,$AE,$06,$06,$AC,$0C,$80,$B0,$AE,$06<br />
dc.b $06,$AC,$0C,$E3<br />
MusCreditsDE09: dc.b $AE,$AC,$06,$06,$AA,$0C,$80,$AC,$0C,$06,$06,$AE<br />
dc.b $AC,$E3<br />
MusCreditsDE17: dc.b $BA,$04,$80,$08,$B8,$18,$B5,$B1,$E3<br />
MusCreditsDE20: dc.b $AE,$06,$80,$AE,$80,$A9,$80,$A9,$80,$E3<br />
MusCreditsDE2A: dc.b $8A,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $E3<br />
MusCred_FM3: dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$18,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $B8,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $BD,$3C,$E9,$E8,$E6,$02,$E1,$03,$EF,$04,$E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$09,$E9,$0C,$E6,$FD,$E0,$40<br />
dc.b $F0,$06,$01,$05,$04<br />
dc.b $E1,$00<br />
- dc.b $9F,$0C,$AB,$06,$80,$A9,$80,$AB,$9F,$80,$9F,$AB<br />
dc.b $80,$A9,$80,$AB,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $9D,$0C,$A9,$06,$80,$A8,$80,$A9,$9C,$80,$9C,$A8<br />
dc.b $80,$A6,$80,$A8,$0C<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0D,$E6,$FB,$E0,$C0,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0F,$E0,$80,$E6,$0B,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$48,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$0C<br />
dc.b $F0,$18,$01,$03,$04<br />
dc.b $E6,$F3,$E0,$C0,$EF,$14,$A2,$14,$A4,$04,$A5,$04<br />
dc.b $80,$08,$A9,$04,$80,$08,$A8,$04,$80,$08,$A9,$04<br />
dc.b $80,$08,$AC,$08,$A9,$10<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$18,$E9,$F4,$E6,$08,$F4,$E0,$40,$80,$60,$80<br />
dc.b $30,$C6,$06,$80,$C2,$0C,$C4,$09,$C2,$03,$BF,$0C<br />
dc.b $80,$60,$80,$3C,$80,$60,$EF,$1B,$E6,$FB,$E0,$C0<br />
dc.b $E8,$06,$C4,$06,$06,$C6,$C9,$C9,$C6,$E8,$00,$CD<br />
dc.b $0C,$E8,$06,$C9,$06,$C6,$C9,$0C,$80,$80,$12,$EF<br />
dc.b $1C,$E8,$00,$BD,$BA,$0C,$E8,$06,$EF,$1B,$CE,$06<br />
dc.b $CE,$80,$CE,$80,$CE,$E8,$00,$CF,$0C,$D0,$80,$E8<br />
dc.b $06,$D0,$06,$06,$D2,$D0,$E8,$00,$CD,$0C,$E8,$06<br />
dc.b $C9,$06,$C6,$C9,$0C,$E8,$00,$EF,$1C,$80,$1E,$C2<br />
dc.b $0C,$C2,$BD,$06,$80,$60,$80,$60,$EF,$00,$E9,$18<br />
dc.b $80,$60,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC,$06<br />
dc.b $AE,$B1,$80,$B4,$B1,$80,$B1,$80,$60,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$60,$EF,$22,$E9,$DC,$E6,$FF,$E0,$80<br />
dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $CD,$30,$CB,$18,$CD,$0C,$CB,$C9,$30,$CE,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$FC,$80,$C4,$80,$C4,$80,$C6,$18,$08,$C4,$04<br />
dc.b $E9,$0C,$E6,$FF,$E0,$C0,$EF,$00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $CB,$12,$CB,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $D0,$12,$D0,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$CB,$12,$80,$06,$CB,$80,$CA,$12,$CB,$CA<br />
dc.b $0C,$C5,$18,$C8,$CB,$D1,$80,$0C,$CD,$80,$CD,$12<br />
dc.b $CC,$CD,$06,$80,$E6,$F8,$EF,$01,$E1,$03,$A2,$6C<br />
dc.b $F2<br />
MusCreditsDFF2: dc.b $80,$60,$BC,$06,$BD,$BC,$B8,$BA,$B6,$0C,$B8,$B3<br />
dc.b $B3,$06,$B6,$0C,$B8,$E3<br />
MusCreditsE004: dc.b $80,$0C,$CD,$04,$80,$10,$CD,$04,$80,$0C,$CD,$0C<br />
dc.b $CE,$08,$CD,$04,$80,$18,$80,$0C,$CB,$04,$80,$10<br />
dc.b $CB,$04,$80,$0C,$CB,$0C,$CD,$08,$CB,$04,$80,$18<br />
- dc.b $80,$0C,$C9,$04,$80,$10,$C9,$04,$80,$0C,$C9,$0C<br />
dc.b $CB,$08,$C9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E3<br />
MusCreditsE040: dc.b $80,$18,$B8,$0B,$80,$0D,$BA,$0C,$0B,$80,$19,$BD<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE051: dc.b $80,$0C,$C4,$80,$C4,$80,$C6,$80,$C6,$E3<br />
MusCreditsE05B: dc.b $CD,$06,$80,$CD,$80,$CA,$80,$CA,$80,$E3<br />
MusCreditsE065: dc.b $EF,$05,$E9,$F4,$C6,$60,$CB,$CD,$E7,$CD,$C6,$60<br />
dc.b $D0,$D0,$24,$D2,$60,$E7,$3C,$E3<br />
MusCred_FM4: dc.b $80,$60,$E9,$FB,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$1D,$E6,$02,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B5,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B8,$3C,$E6,$06,$EF,$05<br />
dc.b $F0,$02,$01,$FE,$04<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E9,$F4,$E6,$F7<br />
dc.b $F0,$0C,$01,$FB,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$25,$C3,$06,$C3,$80,$0C,$C3,$06,$C3,$05,$80<br />
dc.b $0D,$C3,$06,$C5,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$05,$F4,$E1,$02,$E0<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$0C,$80,$60,$EF,$10,$E6,$F7,$E1,$00,$E0<br />
dc.b $40,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $B3,$B7,$06,$AE,$0C,$B1,$B3,$B7,$06,$80,$B7,$AE<br />
dc.b $0C,$B1,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $EF,$15,$E6,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
- dc.b $EF,$14,$80,$4E,$E0,$40,$A1,$12,$A2,$06,$E0,$C0<br />
dc.b $EF,$16,$80,$30,$80,$06,$BA,$08,$B9,$04,$B8,$08<br />
dc.b $B7,$04,$B6,$08,$B5,$04<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E9,$F4,$E6,$02,$E0,$C0<br />
dc.b $F0,$01,$01,$03,$03<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$1E,$E0,$40,$E6,$FE,$E9,$F4,$F4,$E8<br />
dc.b $06,$80,$0C,$C1,$06,$12,$18,$C4,$06,$12,$0C,$EF<br />
dc.b $1C,$E0,$C0,$E6,$FA,$E8,$00,$C6,$E8,$06,$E6,$06<br />
dc.b $EF,$1E,$E0,$40,$C2,$06,$12,$18,$C4,$06,$12,$18<br />
dc.b $C1,$06,$12,$18,$C4,$06,$12,$0C,$EF,$1A,$E0,$C0<br />
dc.b $E9,$0C,$C6,$06,$C6,$80,$C6,$80,$C6,$E8,$00,$C7<br />
dc.b $0C,$C8,$06,$EF,$1E,$E0,$40,$E9,$F4,$E8,$06,$80<br />
dc.b $C4,$06,$12,$0C,$80,$60,$EF,$20,$E9,$18,$E6,$FA<br />
dc.b $E0,$C0,$E8,$00,$B4,$03,$E7,$B6,$5D,$B3,$03,$E7<br />
dc.b $B5,$5D,$B1,$03,$E7,$B3,$5D,$B3,$03,$E7,$B5,$5D<br />
dc.b $80,$60,$EF,$22,$E0,$40,$E9,$E8,$E6,$04,$80,$30<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $C9,$30,$C8,$18,$C9,$0C,$C8,$C6,$30,$C9,$80,$0C<br />
dc.b $C1,$80,$C1,$80,$C2,$80,$C2,$E6,$04,$80,$C1,$80<br />
dc.b $C1,$80,$C2,$80,$C2,$E6,$FC,$80,$C1,$80,$C1,$80<br />
dc.b $C2,$18,$08,$C1,$04,$E9,$0C,$E6,$FF,$E0,$C0,$EF<br />
dc.b $00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $C8,$12,$C8,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $CB,$12,$CB,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E1,$03,$E6,$08,$F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $E6,$F0,$EF,$01<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $A2,$6C,$F2<br />
MusCreditsE22D: dc.b $A2,$14,$A4,$04,$A5,$04,$80,$08,$A9,$04,$80,$08<br />
dc.b $A8,$04,$80,$08,$A9,$04,$80,$08,$AC,$08,$A9,$10<br />
dc.b $E3<br />
MusCreditsE246: dc.b $80,$0C<br />
dc.b $C9,$04,$80,$10<br />
dc.b $C9,$04,$80,$0C<br />
dc.b $C9,$0C<br />
dc.b $CB,$08<br />
dc.b $C9,$04,$80,$18,$80,$0C<br />
dc.b $C8,$04,$80,$10<br />
dc.b $C8,$04,$80,$0C<br />
dc.b $C8,$0C<br />
dc.b $C9,$08<br />
dc.b $C8,$04,$80,$18,$80,$0C<br />
<br />
if 1==1<br />
; this part of the original credits music (CNZ PSG) sounds buggy (dissonant)<br />
dc.b $C6,$04,$80,$10<br />
dc.b $C6,$04,$80,$0C<br />
dc.b $C6,$0C<br />
dc.b $C8,$08<br />
dc.b $C6,$04,$80,$18,$80,$0C<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $C7,$08<br />
else<br />
; replace the above block of notes with this to fix it.<br />
; (I'm not sure why, but the notes $C6 and $C7 are broken here,<br />
; so I've replaced them with pitch-shifted $C8s)<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$10 ; $C6<br />
dc.b $C8,$04,$80,$0C ; $C6<br />
dc.b $C8,$0C ; $C6<br />
dc.b $E1,0<br />
dc.b $C8,$08<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$24 ; $C6<br />
dc.b $E1,0<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $E1,-32<br />
dc.b $C8,$08 ; $C7<br />
dc.b $E1,0<br />
endif<br />
<br />
dc.b $C5,$04,$80,$18<br />
dc.b $E3<br />
MusCreditsE28F: dc.b $EF,$25,$80,$0C,$D0,$D4,$D7,$DB,$0C,$80,$06,$DB<br />
dc.b $0C,$DC,$06,$DB,$0C,$DD,$60,$DE,$0C,$80,$DE,$80<br />
dc.b $80,$06,$DD,$12,$DE,$0C,$E3<br />
MusCreditsE2AE: dc.b $80,$18,$B5,$0B,$80,$0D,$B7,$0C,$0B,$80,$19,$BA<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE2BF: dc.b $C3,$05,$80,$13,$C3,$12,$C3,$05,$E3<br />
MusCreditsE2C8: dc.b $CA,$06,$80,$CA,$80,$C6,$80,$C6,$80,$E3<br />
MusCreditsE2D2: dc.b $AF,$0C,$B3,$06,$B6,$0C,$AF,$B1,$06,$80,$B1,$0C<br />
dc.b $B5,$06,$B8,$0C,$B1,$06,$80,$B6,$0C,$BA,$06,$B1<br />
dc.b $0C,$B5,$B6,$BA,$06,$80,$BA,$AF,$0C,$B3,$B5,$B8<br />
dc.b $06,$B2,$0C,$B3,$B5,$B8,$06,$80,$B8,$B2,$0C,$B5<br />
dc.b $E3<br />
MusCred_FM5: dc.b $E9,$E8,$E6,$F8,$E1,$05,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$18,$E6,$08,$E1,$00,$EF,$02<br />
dc.b $F0,$0C,$01,$FC,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B1,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B5,$3C,$E9,$F4,$E6,$07<br />
dc.b $F0,$30,$01,$04,$04<br />
dc.b $EF,$06<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E6,$F6<br />
dc.b $F0,$0C,$01,$05,$04<br />
dc.b $E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$25,$C6,$06,$C6,$80,$0C,$C6,$06,$C6,$05,$80<br />
dc.b $0D,$C6,$06,$C8,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$E6,$05,$F4,$80,$01,$EF,$0C,$E1<br />
dc.b $FE,$E0,$40,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $23,$80,$0C,$80,$60,$EF,$11,$E9,$F4,$E6,$F4,$E1<br />
dc.b $00,$E0,$C0<br />
dc.b $F0,$06,$01,$06,$05<br />
dc.b $80,$60,$80,$30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60<br />
dc.b $80,$06,$CB,$80,$CB,$C9,$80,$C9,$80,$C7,$80,$C7<br />
dc.b $80,$C6,$03,$80,$C6,$80,$09,$80,$06,$80,$60,$80<br />
dc.b $30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60,$EF,$16,$E9<br />
dc.b $0C,$E6,$04,$F4,$E0,$80,$80,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
dc.b $80,$2F,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$30,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$60,$EF,$19,$E9,$F4,$E0,$C0,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$27,$B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$2A,$80,$60,$EF,$1E,$E9,$F4,$E8,$06<br />
- dc.b $80,$0C,$C4,$06,$12,$18,$C8,$06,$12,$0C,$80,$C6<br />
dc.b $06,$12,$18,$C8,$06,$12,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$20,$E8,$00,$E9,$18,$E6,$FA,$B8,$03<br />
dc.b $E7,$BA,$5D,$B6,$03,$E7,$B8,$5D,$B4,$03,$E7,$B6<br />
dc.b $5D,$B6,$03,$E7,$B8,$5D,$80,$60,$EF,$22,$E9,$F4<br />
dc.b $E6,$05<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$A7,$04,$A9,$08,$AC,$04,$B1,$30,$80,$0C<br />
dc.b $B1,$08,$80,$04,$B3,$08,$B1,$10,$B5,$08,$B5,$04<br />
dc.b $80,$08,$B0,$34,$80,$0C,$B0,$B5,$08,$04,$80,$08<br />
dc.b $B1,$04,$AE,$24,$80,$0C,$AE,$08,$80,$04,$B0,$08<br />
dc.b $AE,$04,$B1,$0C,$AF,$08,$AD,$4C,$80,$0C,$B1,$08<br />
dc.b $80,$04,$B3,$08,$80,$04,$B1,$08,$80,$04,$B5,$08<br />
dc.b $B5,$04,$80,$08,$B0,$1C,$80,$0C,$B5,$18,$B8,$08<br />
dc.b $B5,$04,$BA,$18,$80,$0C,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$04,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$F8,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$AA,$14,$A9,$04,$E6,$0C,$EF,$23,$E1,$03<br />
dc.b $E6,$F7,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E6,$09<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $F2<br />
MusCreditsE4CD: dc.b $80,$1E,$EF,$14,$A4,$12,$A5,$06,$EF,$16,$80,$30<br />
dc.b $80,$06,$BD,$08,$BC,$04,$BB,$08,$BA,$04,$B9,$08<br />
dc.b $B8,$04,$E3<br />
MusCreditsE4E8: dc.b $80,$18,$B1,$0B,$80,$0D,$B3,$0C,$0B,$80,$19,$B6<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE4F9: dc.b $C6,$05,$80,$13,$C6,$12,$C6,$05,$E3<br />
MusCreditsE502: dc.b $80,$60,$AC,$06,$80,$AC,$0C,$AE,$06,$80,$AE,$0C<br />
dc.b $AF,$06,$E3<br />
MusCred_PSG1: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG1)<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$F4,$E6,$FE,$F5,$01,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $AE,$B3,$06,$AC,$0C,$AE,$AE,$B3,$06,$80,$B3,$AB<br />
dc.b $0C,$AE,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $F5,$0B,$80,$04,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$20,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$F5,$00,$E8,$06,$E9,$F4,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$80,$C2,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$04,$80,$C2,$80,$0C,$C2,$80,$60,$F5,$08,$E9<br />
dc.b $04,$EC,$02,$E8,$06<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F0,$EC,$FF,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $E9,$18,$EC,$02,$B5,$30,$B3,$18,$B5,$0C,$B3,$B1<br />
dc.b $30,$B6,$EC,$FE,$80,$0C,$B8,$80,$B8,$80,$BA,$80<br />
dc.b $BA,$EC,$03,$C4,$18,$C1,$BD,$BF,$0C,$80,$EC,$FC<br />
dc.b $80,$B8,$80,$B8,$80,$BA,$18,$08,$B8,$04,$E9,$F4<br />
dc.b $EC,$01,$F5,$05<br />
- dc.b $80,$60<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$C8,$12,$80,$06,$C8,$80,$C6,$12,$C8,$C6<br />
dc.b $0C,$C1,$18,$C5,$C8,$CB,$80,$0C,$CA,$80,$CA,$12<br />
dc.b $C9,$CA,$06,$80,$09,$E9,$30,$EC,$FC,$F6<br />
dc.w z80_ptr(MusCreditsE770)<br />
dc.b $F2<br />
MusCreditsE618: dc.b $80,$0C,$BD,$06,$12,$18,$C4,$06,$12,$0C,$80,$C2<br />
dc.b $06,$12,$18,$C4,$06,$12,$0C,$E3<br />
MusCreditsE62C: dc.b $80,$60,$80,$0C,$C2,$80,$C2,$80,$E3<br />
MusCreditsE635: dc.b $AC,$0C,$AF,$06,$B3,$0C,$AC,$AC,$06,$80,$AC,$0C<br />
dc.b $AF,$06,$B5,$0C,$AC,$06,$80,$06,$B1,$0C,$B6,$06<br />
dc.b $AE,$0C,$B1,$B3,$B6,$06,$80,$B6,$AA,$0C,$AF,$AF<br />
dc.b $B5,$06,$AC,$0C,$AF,$B2,$B5,$06,$80,$B5,$AE,$0C<br />
dc.b $B2,$E3<br />
MusCred_PSG2: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG2)<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$0C,$EC,$FD,$F5,$04,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
dc.b $F0,$03,$02,$01,$05<br />
dc.b $F5,$0A,$E9,$E8,$EC,$02,$80,$30,$80,$80,$BD,$06<br />
dc.b $BF,$C6,$C2,$1E,$80,$60,$80,$06,$C6,$80,$C6,$C4<br />
dc.b $80,$C4,$80,$C3,$80,$C3,$80,$BF,$03,$80,$BF,$80<br />
dc.b $09,$80,$06,$80,$30,$80,$80,$BD,$06,$BF,$C6,$C2<br />
dc.b $1E,$80,$60,$F4<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$00,$EC,$FE,$E8,$06,$80,$60,$80,$0C,$BF,$80<br />
dc.b $BF,$80,$BF,$80,$BF,$80,$60,$80,$0C,$BF,$80,$BF<br />
dc.b $80,$BF,$04,$80,$BF,$80,$0C,$BF,$80,$60,$EC,$02<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F4,$EC,$FF,$E9,$E8,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $E9,$18,$EC,$02,$B1,$30,$B0,$18,$B1,$0C,$B0,$AE<br />
dc.b $30,$B1,$EC,$FE,$80,$0C,$B5,$80,$B5,$80,$B6,$80<br />
dc.b $B6,$EC,$03,$80,$B1,$80,$B1,$80,$B1,$80,$B1,$EC<br />
dc.b $FC,$80,$B1,$80,$B1,$80,$B1,$18,$08,$B1,$04,$EC<br />
dc.b $01,$E9,$18,$F5,$05,$E1,$01,$80,$60,$80,$80,$80<br />
dc.b $80,$80,$80,$0C,$CD,$06,$80,$D4,$CD,$80,$0C,$CD<br />
dc.b $06,$80,$D4,$CD,$80,$18,$80,$54,$E9,$24,$EC,$FD<br />
MusCreditsE770: dc.b $F5,$03,$80,$06<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$FF<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$01<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusCred_PSG3: dc.b $F3,$E7,$80,$60,$F5,$02<br />
- dc.b $C6,$0C,$0C,$0C,$06,$06,$0C,$0C,$06,$06,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$1F<br />
dc.w z80_ptr(-)<br />
dc.b $0C,$F5,$03,$C6,$F5,$02<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $06,$06,$06,$06<br />
dc.b $F7,$01,$04<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$04,$EC,$02<br />
- dc.b $E8,$03,$C6,$06,$06,$E8,$00,$0C<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$02,$EC,$FD<br />
- dc.b $80,$0C,$C6,$06,$80,$07,$C6,$06,$80,$11,$C6,$0C<br />
dc.b $80,$06,$C6,$0C,$80,$06,$C6,$80<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$02<br />
- dc.b $C6,$0C,$08,$04<br />
dc.b $F7,$00,$18<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$0C,$0C,$08,$04<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$04,$EC,$02<br />
- dc.b $C6,$06,$06,$0C<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EC,$FF<br />
- dc.b $F5,$01,$C6,$0C,$F5,$02,$EC,$FF,$08,$F5,$01,$EC<br />
dc.b $01,$04<br />
dc.b $F7,$00,$27<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$FF,$F5,$04<br />
- dc.b $E8,$03,$C6,$0C,$E8,$0C,$0C<br />
dc.b $F7,$00,$1E<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$03,$C6,$06,$E8,$0E,$12,$E8,$03,$0C,$E8,$0F<br />
dc.b $0C,$F2<br />
MusCred_DAC: dc.b $82,$06,$82,$82,$82,$82,$0C,$06,$0C,$06,$0C,$0C<br />
dc.b $0C<br />
- dc.b $81,$18,$82<br />
dc.b $F7,$00,$0E<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C<br />
- dc.b $82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EA,$EA,$F8<br />
dc.w z80_ptr(MusCreditsEA6E)<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$82,$06,$82,$82,$82,$81,$0C,$82,$06,$82<br />
dc.b $81,$81,$82,$82,$82,$82<br />
- dc.b $81,$18,$82,$81,$82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$82,$82,$82,$06,$82,$8C,$8C,$8D,$8D<br />
dc.b $8E,$8E,$F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$18,$82,$0C,$81,$18,$82,$0C,$82,$82,$06,$82<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$0C,$82,$82,$82,$8D,$06,$8D,$8E,$8E,$82,$06<br />
dc.b $82,$8D,$0C,$82,$0C,$82,$06,$82,$80,$82,$82,$0C<br />
MusCreditsE8E5: dc.b $82,$0C,$82,$82,$06,$82,$8D,$8D<br />
- dc.b $81,$0C,$8F,$06,$90,$82,$0C,$90,$06,$91,$81,$0C<br />
dc.b $8F,$06,$91,$82,$0C,$8F,$06,$91<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$8F,$06,$91,$82,$0C,$8F,$06,$91,$8C,$06<br />
dc.b $03,$03,$8D,$06,$8D,$8D,$8E,$8E,$8E,$81,$06,$0C<br />
dc.b $82,$06,$80,$0C,$81,$82,$8E,$82,$06,$82,$82,$82<br />
- dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$12,$8C,$06<br />
dc.b $82,$0C,$83,$06,$81,$80<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$06,$82,$06<br />
dc.b $81,$0C,$06,$82,$0C,$08,$04,$EA,$CD,$82,$30,$82<br />
dc.b $0C,$82,$82,$82,$08,$04,$F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$04,$82,$08,$04<br />
dc.b $08,$04,$04,$04,$04,$08,$04,$EA,$C5<br />
- dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82,$0C,$06<br />
dc.b $06,$81,$0C,$82,$06,$82,$82,$82,$8D,$0C,$82,$0C<br />
dc.b $0C,$0C,$06,$06<br />
- dc.b $81,$0C,$81,$82,$80,$81,$81,$82,$83<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$82,$82,$82,$82,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $81,$06,$81,$82,$82,$81,$82,$81,$81,$82,$02,$82<br />
dc.b $04,$81,$0C,$06,$82,$0C,$06,$06,$81,$18,$82,$0C<br />
dc.b $81,$81,$18,$82,$81,$06,$81,$12,$82,$0C,$81,$81<br />
dc.b $18,$82,$81,$18,$82,$0C,$81,$81,$18,$82,$81,$06<br />
dc.b $81,$12,$82,$0C,$0C,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $82,$02,$04,$81,$0C,$06,$0C,$82,$02,$04,$81,$0C<br />
dc.b $06,$0C,$82,$06,$82,$82,$82,$EA,$C0,$81,$0C,$82<br />
dc.b $81,$82,$81,$82,$81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$0F<br />
dc.w z80_ptr(-)<br />
dc.b $81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$13<br />
dc.w z80_ptr(-)<br />
dc.b $82,$08,$0C,$04,$81,$0C,$82,$81,$82,$81,$0C,$82<br />
dc.b $81,$06,$80,$02,$82,$82,$82,$09,$82,$03<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$06,$80,$02,$82,$82,$82,$09,$82<br />
dc.b $03<br />
dc.b $F7,$01,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$82,$81,$06,$82,$12,$82,$0C,$81<br />
dc.b $F2<br />
MusCreditsEA6E: dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$83,$E3<br />
MusCreditsEA84: dc.b $81,$18,$82,$0C,$81,$18,$0C,$82,$81,$81,$18,$82<br />
dc.b $0C,$81,$12,$81,$82,$18,$81,$82,$0C,$81,$18,$0C<br />
dc.b $82,$81,$E3<br />
MusCreditsEA9F: dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$0C,$82,$04,$81<br />
dc.b $0C,$82,$81,$81,$08,$0C,$04,$82,$0C,$81,$08,$0C<br />
dc.b $82,$04,$81,$0C,$82,$82,$08,$04,$E3,$81,$06,$80<br />
dc.b $03,$81,$81,$06,$82,$81,$06,$80,$03,$81,$81,$06<br />
dc.b $82,$03,$82,$81,$06,$80,$03,$81,$81,$06,$82,$E3<br />
MusCred_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$01,$1F,$1F,$FF,$0F,$17,$27,$28,$80<br />
dc.b $08,$09,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$25,$0E,$30,$84<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$0B,$0D,$19,$0B,$80,$80<br />
dc.b $08,$0A,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$24,$13,$2D,$80<br />
dc.b $3D,$01,$51,$21,$01,$12,$14,$14,$0F,$0A,$05,$05<br />
dc.b $05,$00,$00,$00,$00,$2B,$2B,$2B,$1B,$19,$80,$80,$80<br />
dc.b $04,$57,$70,$02,$50,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$06,$00,$0A,$0A,$00,$00,$0F,$0F,$1A,$10,$80,$80<br />
dc.b $35,$01,$13,$01,$00,$1F,$18,$1D,$19,$00,$06,$09<br />
dc.b $0D,$00,$02,$00,$03,$00,$15,$06,$16,$1E,$83,$80,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1A,$16,$88,$88<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$14,$0F,$37,$80<br />
dc.b $3B,$0F,$01,$06,$02,$DF,$1F,$1F,$DF,$0C,$0A,$00<br />
dc.b $03,$0F,$00,$00,$01,$F3,$55,$05,$5C,$22,$22,$20,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1C,$14,$84,$80<br />
dc.b $3A,$69,$50,$70,$60,$1C,$1A,$18,$18,$10,$02,$0C<br />
dc.b $09,$08,$06,$06,$03,$F9,$06,$56,$06,$28,$14,$15,$00<br />
dc.b $3D,$00,$02,$01,$01,$4C,$50,$0F,$12,$0C,$00,$02<br />
dc.b $05,$01,$00,$00,$00,$28,$2A,$29,$19,$1A,$06,$00,$00<br />
dc.b $2C,$71,$31,$71,$31,$1F,$1F,$16,$16,$00,$00,$0F<br />
dc.b $0F,$00,$00,$0F,$0F,$00,$00,$FA,$FA,$15,$14,$00,$00<br />
dc.b $18,$37,$31,$32,$31,$9E,$1C,$DC,$9C,$0D,$04,$06<br />
dc.b $01,$08,$03,$0A,$05,$B6,$36,$B6,$28,$2C,$14,$22,$00<br />
dc.b $3D,$01,$02,$02,$02,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$24,$18,$18,$18,$1C,$82,$82,$82<br />
dc.b $32,$71,$33,$0D,$01,$5F,$5F,$99,$94,$05,$05,$05<br />
dc.b $07,$02,$02,$02,$02,$11,$11,$11,$72,$23,$26,$2D,$80<br />
dc.b $3A,$32,$52,$01,$31,$1F,$1F,$1F,$18,$01,$00,$1F<br />
dc.b $00,$00,$00,$0F,$00,$5A,$03,$0F,$1A,$3B,$4F,$30,$00<br />
dc.b $3C,$42,$32,$41,$41,$12,$12,$12,$12,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$06,$06,$08,$08,$24,$24,$08,$08<br />
dc.b $31,$34,$30,$35,$31,$DF,$9F,$DF,$9F,$0C,$0C,$07<br />
dc.b $09,$07,$07,$07,$08,$2F,$1F,$1F,$2F,$17,$14,$32,$80<br />
dc.b $3D,$01,$01,$01,$01,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$20,$1A,$1A,$1A,$19,$84,$84,$84<br />
dc.b $24,$70,$30,$74,$38,$12,$1F,$1F,$1F,$05,$05,$03<br />
dc.b $03,$05,$05,$03,$03,$36,$26,$2C,$2C,$0A,$06,$08,$08<br />
dc.b $3A,$01,$01,$01,$02,$8D,$07,$07,$52,$09,$00,$00<br />
dc.b $03,$01,$02,$02,$00,$5F,$0F,$0F,$2F,$18,$18,$22,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$03,$03,$08,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$17,$20,$28,$80<br />
dc.b $20,$7A,$00,$31,$00,$9F,$DC,$D8,$DF,$10,$04,$0A<br />
dc.b $04,$0F,$08,$08,$08,$5F,$BF,$5F,$BF,$14,$17,$2B,$80<br />
dc.b $3A,$61,$51,$08,$02,$5D,$5D,$5D,$50,$04,$1F,$0F<br />
dc.b $1F,$00,$00,$00,$00,$1F,$0F,$5F,$0F,$22,$22,$1E,$80<br />
dc.b $02,$01,$02,$55,$04,$92,$8E,$8D,$54,$0D,$00,$0C<br />
dc.b $03,$00,$00,$00,$00,$FF,$0F,$2F,$5F,$16,$1D,$2A,$80<br />
dc.b $02,$75,$73,$71,$31,$1F,$96,$58,$9F,$01,$03,$1B<br />
dc.b $08,$01,$01,$04,$05,$FF,$3F,$2F,$2F,$24,$30,$29,$80<br />
dc.b $20,$66,$60,$65,$60,$DF,$9F,$DF,$1F,$00,$09,$06<br />
dc.b $0C,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$1C,$16,$3A,$80<br />
dc.b $0D,$32,$06,$08,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$86,$80,$8D<br />
dc.b $38,$3A,$11,$0A,$02,$D4,$50,$14,$0E,$05,$02,$08<br />
dc.b $88,$00,$00,$00,$00,$99,$09,$09,$1A,$2D,$19,$2C,$86<br />
dc.b $0D,$32,$02,$04,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$8B,$86,$93<br />
dc.b $3A,$20,$60,$23,$01,$1E,$1F,$1F,$1F,$0A,$0B,$0A<br />
dc.b $0A,$05,$0A,$07,$08,$A4,$96,$85,$78,$21,$28,$25,$00<br />
dc.b $3A,$32,$32,$56,$42,$8D,$15,$4F,$52,$06,$07,$08<br />
dc.b $04,$02,$00,$00,$00,$18,$28,$18,$28,$19,$2A,$20,$00<br />
dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$19,$13,$37,$80<br />
dc.b $3D,$01,$02,$02,$02,$14,$8C,$0E,$0E,$08,$02,$05<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$1A,$80,$80,$80<br />
; end of Mus_Credits<br />
<br />
; ------------------------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ------------------------------------------------------------------------------------------<br />
; WARNING the sound driver treats certain sounds specially<br />
; going by the ID of the sound.<br />
; SndID_Ring, SndID_RingLeft, SndID_Gloop, SndID_SpindashRev<br />
; are referenced by the sound driver directly.<br />
; If needed you can change this in s2.sounddriver.asm<br />
<br />
<br />
; NOTE: the exact order of this list determines the priority of each sound, since it determines the sound's SndID.<br />
; a sound can get dropped if a higher-priority sound is already playing.<br />
; the rules for sound priority are currently unknown, but you can generally swap pointer lines around to resolve priority conflicts.<br />
; loc_FEE91: SoundPoint:<br />
SoundIndex:<br />
SndPtr_Jump: rom_ptr_z80 Sound20 ; jumping sound<br />
SndPtr_Checkpoint: rom_ptr_z80 Sound21 ; checkpoint ding-dong sound<br />
SndPtr_SpikeSwitch: rom_ptr_z80 Sound22 ; spike switch sound<br />
SndPtr_Hurt: rom_ptr_z80 Sound23 ; hurt sound<br />
SndPtr_Skidding: rom_ptr_z80 Sound24 ; skidding sound<br />
SndPtr_BlockPush: rom_ptr_z80 Sound25 ; block push sound<br />
SndPtr_HurtBySpikes: rom_ptr_z80 Sound26 ; spiky impalement sound<br />
SndPtr_Sparkle: rom_ptr_z80 Sound27 ; sparkling sound<br />
SndPtr_Beep: rom_ptr_z80 Sound28 ; short beep<br />
SndPtr_Bwoop: rom_ptr_z80 Sound29 ; bwoop<br />
SndPtr_Splash: rom_ptr_z80 Sound2A ; splash sound<br />
SndPtr_Swish: rom_ptr_z80 Sound2B ; swish<br />
SndPtr_BossHit: rom_ptr_z80 Sound2C ; boss hit<br />
SndPtr_InhalingBubble: rom_ptr_z80 Sound2D ; inhaling a bubble<br />
SndPtr_ArrowFiring:<br />
SndPtr_LavaBall: rom_ptr_z80 Sound2E ; arrow firing<br />
SndPtr_Shield: rom_ptr_z80 Sound2F ; shield sound<br />
SndPtr_LaserBeam: rom_ptr_z80 Sound30 ; laser beam<br />
SndPtr_Zap: rom_ptr_z80 Sound31 ; zap<br />
SndPtr_Drown: rom_ptr_z80 Sound32 ; drownage<br />
SndPtr_FireBurn: rom_ptr_z80 Sound33 ; fire + burn<br />
SndPtr_Bumper: rom_ptr_z80 Sound34 ; bumper bing<br />
SndPtr_Ring:<br />
SndPtr_RingRight: rom_ptr_z80 Sound35 ; ring sound<br />
SndPtr_SpikesMove: rom_ptr_z80 Sound36<br />
SndPtr_Rumbling: rom_ptr_z80 Sound37 ; rumbling<br />
rom_ptr_z80 Sound38<br />
SndPtr_Smash: rom_ptr_z80 Sound39 ; smash/breaking<br />
rom_ptr_z80 Sound3A ; nondescript ding<br />
SndPtr_DoorSlam: rom_ptr_z80 Sound3B ; door slamming shut<br />
SndPtr_SpindashRelease: rom_ptr_z80 Sound3C ; spindash unleashed<br />
SndPtr_Hammer: rom_ptr_z80 Sound3D ; slide-thunk<br />
SndPtr_Roll: rom_ptr_z80 Sound3E ; rolling sound<br />
SndPtr_ContinueJingle: rom_ptr_z80 Sound3F ; got continue<br />
SndPtr_CasinoBonus: rom_ptr_z80 Sound40 ; short bonus ding<br />
SndPtr_Explosion: rom_ptr_z80 Sound41 ; badnik bust<br />
SndPtr_WaterWarning: rom_ptr_z80 Sound42 ; warning ding-ding<br />
SndPtr_EnterGiantRing: rom_ptr_z80 Sound43 ; special stage ring flash (unused)<br />
SndPtr_BossExplosion: rom_ptr_z80 Sound44 ; thunk<br />
SndPtr_TallyEnd: rom_ptr_z80 Sound45 ; cha-ching<br />
SndPtr_RingSpill: rom_ptr_z80 Sound46 ; losing rings<br />
rom_ptr_z80 Sound47 ; chain pull chink-chink<br />
SndPtr_Flamethrower: rom_ptr_z80 Sound48 ; flamethrower<br />
SndPtr_Bonus: rom_ptr_z80 Sound49 ; bonus pwoieeew (unused)<br />
SndPtr_SpecStageEntry: rom_ptr_z80 Sound4A ; special stage entry<br />
SndPtr_SlowSmash: rom_ptr_z80 Sound4B ; slower smash/crumble<br />
SndPtr_Spring: rom_ptr_z80 Sound4C ; spring boing<br />
SndPtr_Blip: rom_ptr_z80 Sound4D ; selection blip<br />
SndPtr_RingLeft: rom_ptr_z80 Sound4E ; another ring sound (only plays in the left speaker?)<br />
SndPtr_Signpost: rom_ptr_z80 Sound4F ; signpost spin sound<br />
SndPtr_CNZBossZap: rom_ptr_z80 Sound50 ; mosquito zapper<br />
rom_ptr_z80 Sound51<br />
rom_ptr_z80 Sound52<br />
SndPtr_Signpost2P: rom_ptr_z80 Sound53<br />
SndPtr_OOZLidPop: rom_ptr_z80 Sound54 ; OOZ lid pop sound<br />
SndPtr_SlidingSpike: rom_ptr_z80 Sound55<br />
SndPtr_CNZElevator: rom_ptr_z80 Sound56<br />
SndPtr_PlatformKnock: rom_ptr_z80 Sound57<br />
SndPtr_BonusBumper: rom_ptr_z80 Sound58 ; CNZ bonusy bumper sound<br />
SndPtr_LargeBumper: rom_ptr_z80 Sound59 ; CNZ baaang bumper sound<br />
SndPtr_Gloop: rom_ptr_z80 Sound5A ; CNZ gloop / water droplet sound<br />
SndPtr_PreArrowFiring: rom_ptr_z80 Sound5B<br />
SndPtr_Fire: rom_ptr_z80 Sound5C<br />
SndPtr_ArrowStick: rom_ptr_z80 Sound5D ; chain clink<br />
SndPtr_Helicopter:<br />
SndPtr_WingFortress: rom_ptr_z80 Sound5E ; helicopter<br />
SndPtr_SuperTransform: rom_ptr_z80 Sound5F<br />
SndPtr_SpindashRev: rom_ptr_z80 Sound60 ; spindash charge<br />
SndPtr_Rumbling2: rom_ptr_z80 Sound61 ; rumbling<br />
SndPtr_CNZLaunch: rom_ptr_z80 Sound62<br />
SndPtr_Flipper: rom_ptr_z80 Sound63 ; CNZ blooing bumper<br />
SndPtr_HTZLiftClick: rom_ptr_z80 Sound64 ; HTZ track click sound<br />
SndPtr_Leaves: rom_ptr_z80 Sound65 ; kicking up leaves sound<br />
SndPtr_MegaMackDrop: rom_ptr_z80 Sound66 ; leaf splash?<br />
SndPtr_DrawbridgeMove: rom_ptr_z80 Sound67<br />
SndPtr_QuickDoorSlam: rom_ptr_z80 Sound68 ; door slamming quickly (seems unused)<br />
SndPtr_DrawbridgeDown: rom_ptr_z80 Sound69<br />
SndPtr_LaserBurst: rom_ptr_z80 Sound6A ; robotic laser burst<br />
SndPtr_Scatter:<br />
SndPtr_LaserFloor: rom_ptr_z80 Sound6B ; scatter<br />
SndPtr_Teleport: rom_ptr_z80 Sound6C<br />
SndPtr_Error: rom_ptr_z80 Sound6D ; error sound<br />
SndPtr_MechaSonicBuzz: rom_ptr_z80 Sound6E ; silver sonic buzz saw<br />
SndPtr_LargeLaser: rom_ptr_z80 Sound6F<br />
SndPtr_OilSlide: rom_ptr_z80 Sound70<br />
SndPtr__End:<br />
<br />
; There are many non-relative pointers in these sound effects,<br />
; so the sounds shouldn't simply be BINCLUDE'd.<br />
; They could be included as separate .asm files using "include" instead of "binclude",<br />
; but I wanted to minimize the number of included asm files.<br />
<br />
; some comments on what the various script commands do (after the header):<br />
; 0x00-0x7F sets the note duration (of the previous note and following notes)<br />
; 0x81-0xDF plays a note (the valid range may be smaller for PSG or DAC)<br />
; 0x80 plays silence<br />
; 0xE0-0xFF does special things. I won't list them here... search for "Coordination flags" sonic 2.<br />
<br />
; the FM voices (poorly named "ssamp" or "samples" below)<br />
; are 25 bytes each and go directly to YM2612 registers.<br />
; they can be hard to edit (there's an art to it)<br />
; but search for sonic "Voice editing" for more info if you want to try.<br />
<br />
; jumping sound<br />
Sound20: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$F400<br />
+ dc.b $F5,$00,$9E,$05,$F0,$02,$01,$F8,$65,$A3,$15,$F2<br />
<br />
; checkpoint ding-dong sound<br />
Sound21: dc.w z80_ptr(ssamp21),$0101<br />
dc.w $8005,z80_ptr(+),$0001<br />
ssamp21: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
+ dc.b $EF,$00,$BD,$06,$BA,$16,$F2<br />
<br />
; spike switch sound<br />
Sound22: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C0,$04,$CA,$04<br />
- dc.b $C0,$01,$EC<br />
dc.w $01F7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; hurt sound<br />
Sound23: dc.w z80_ptr(ssamp23),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B0,$07,$E7,$AD<br />
- dc.b $01,$E6<br />
dc.w $01F7,$002F,z80_ptr(-)<br />
dc.b $F2<br />
ssamp23: dc.b $30,$30,$30,$30,$30,$9E,$DC,$D8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$14,$14,$3C,$80<br />
<br />
; skidding sound<br />
Sound24: dc.w $0000,$0102 ; sound header... no sample and 2 script entries<br />
dc.w $80A0,z80_ptr(+),$F400 ; entry 1 header<br />
dc.w $80C0,z80_ptr(++),$F400 ; entry 2 header<br />
+ dc.b $F5,$00,$AF,$01,$80,$AF,$80,$03 ; script entry 1<br />
- dc.b $AF,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 1 end<br />
+ dc.b $F5,$00,$80,$01,$AD,$80,$AD,$80,$03 ; script entry 2<br />
- dc.b $AD,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 2 end<br />
<br />
; block push sound<br />
Sound25: dc.w z80_ptr(ssamp25),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$01,$8B,$0A,$80,$02,$F2<br />
ssamp25: dc.b $FA,$21,$10,$30,$32,$2F,$2F,$1F,$2F,$05,$09,$08<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
; spiky impalement sound<br />
Sound26: dc.w z80_ptr(ssamp26),$0101<br />
dc.w $8005,z80_ptr(+),$F200<br />
+ dc.b $EF,$00,$F0,$01,$01,$10,$FF,$CF,$05,$D7,$25,$F2<br />
ssamp26: dc.b $3B,$3C,$30,$39,$31,$DF,$1F,$1F,$DF,$04,$04,$05<br />
dc.b $01,$04,$04,$04,$02,$FF,$1F,$0F,$AF,$29,$0F,$20,$80<br />
<br />
; sparkling sound<br />
Sound27: dc.w z80_ptr(ssamp27),$0101<br />
dc.w $8004,z80_ptr(+),$0C1C<br />
+ dc.b $EF,$00,$C1,$05,$C4,$05,$C9,$2B,$F2<br />
ssamp27: dc.b $07,$73,$33,$33,$73,$0F,$19,$14,$1A,$0A,$0A,$0A<br />
dc.b $0A,$0A,$0A,$0A,$0A,$57,$57,$57,$57,$00,$00,$00,$00<br />
<br />
; short beep<br />
Sound28: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$E803<br />
+ dc.b $F5,$04,$CB,$04,$F2<br />
<br />
; bwoop<br />
Sound29: dc.w $0000,$0101<br />
dc.w $80A0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$E6,$35,$8E,$06,$F2<br />
<br />
; splash sound<br />
Sound2A: dc.w z80_ptr(ssamp2A),$0102<br />
dc.w $80C0,z80_ptr(+),$0000<br />
dc.w $8005,z80_ptr(++),$0003<br />
+ dc.b $F5,$00,$F3,$E7,$C2,$05,$C6,$05,$E7<br />
- dc.b $07,$EC,$01<br />
dc.w $E7F7,$000F,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$A6,$14,$F2<br />
ssamp2A: dc.b $00,$00,$02,$03,$00,$D9,$1F,$DF,$1F,$12,$14,$11<br />
dc.b $0F,$0A,$0A,$00,$0D,$FF,$FF,$FF,$FF,$22,$27,$07,$80<br />
<br />
; swish<br />
Sound2B: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$C6,$03,$80,$03,$C6,$01,$E7<br />
- dc.b $01,$EC,$01<br />
dc.w $E7F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; boss hit<br />
Sound2C: dc.w z80_ptr(smashsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$0C,$01<br />
- dc.b $81,$0A,$E6<br />
dc.w $10F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
smashsamp: dc.b $F9,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
<br />
; inhaling a bubble<br />
Sound2D: dc.w z80_ptr(ssamp2D),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$21,$6E,$A6,$07<br />
dc.b $80,$06,$F0,$01,$01,$44,$1E,$AD,$08,$F2<br />
ssamp2D: dc.b $35,$05,$08,$09,$07,$1E,$0D,$0D,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$1F,$2F,$1F,$15,$12,$12,$80<br />
<br />
; arrow firing<br />
Sound2E: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$C6,$01,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp2E: dc.b $FA,$02,$00,$03,$05,$12,$0F,$11,$13,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$2F,$0E,$1A,$80<br />
<br />
; shield sound<br />
Sound2F: dc.w z80_ptr(ssamp2F),$0101<br />
dc.w $8005,z80_ptr(+),$0C00<br />
+ dc.b $EF,$00,$80,$01,$A3,$05,$E7,$A4,$26,$F2<br />
ssamp2F: dc.b $30,$30,$30,$30,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$04,$14,$2C,$80<br />
<br />
; laser beam<br />
Sound30: dc.w z80_ptr(ssamp30),$0101 ; sound header... a voice and 1 script entry<br />
dc.w $8005,z80_ptr(+),$FB05 ; script entry header<br />
+ dc.b $EF,$00,$DF,$7F ; script start<br />
- dc.b $DF,$02,$E6 ; script continued<br />
dc.w $01F7,$001B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script end<br />
ssamp30: dc.b $83,$1F,$1F,$15,$1F,$1F,$1F,$1F,$1F,$00,$00,$00 ; voice<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$0B,$01,$16,$82 ; (fixed length)<br />
<br />
; zap<br />
Sound31: dc.w z80_ptr(ssamp31),$0101<br />
dc.w $8005,z80_ptr(+),$FB02<br />
+ dc.b $EF,$00,$B3,$05,$80,$01,$B3,$09,$F2<br />
ssamp31: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$05,$34,$10,$87<br />
<br />
; drownage<br />
Sound32: dc.w z80_ptr(ssamp32),$0102<br />
dc.w $8004,z80_ptr(++),$0C04<br />
dc.w $8005,z80_ptr(+),$0E02<br />
+ dc.b $EF,$00,$F0,$01,$01,$83,$0C<br />
- dc.b $8A,$05,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $80,$06,$EF,$00,$F0,$01,$01,$6F,$0E<br />
- dc.b $8D,$04,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp32: dc.b $35,$14,$04,$1A,$09,$0E,$11,$10,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$4F,$2F,$4F,$2F,$12,$12,$80<br />
<br />
; fire + burn<br />
Sound33: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$A7,$25,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; bumper bing<br />
Sound34: dc.w z80_ptr(ssamp34),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $8002,z80_ptr(+++),$0002<br />
+ dc.b $EF,$00,$F6<br />
dc.w z80_ptr(Sound34_3)<br />
+ dc.b $EF,$00,$E1,$07,$80,$01<br />
Sound34_3:<br />
dc.b $BA,$20,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
ssamp34: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$1F,$2B,$80,$80<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; ring sound<br />
Sound35: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$40,$C1,$05,$C4,$05,$C9,$1B,$F2<br />
<br />
<br />
Sound36: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C1,$07<br />
- dc.b $D0,$01,$EC<br />
dc.w $01F7,$000C,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; rumbling<br />
Sound37: dc.w z80_ptr(ssamp37),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$20,$08<br />
- dc.b $8B<br />
dc.w $0AF7,$0008,z80_ptr(-)<br />
- dc.b $8B,$10,$E6<br />
dc.w $03F7,$0009,z80_ptr(-)<br />
dc.b $F2<br />
ssamp37: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
<br />
Sound38: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$B4,$08<br />
- dc.b $B0,$02,$EC<br />
dc.w $01F7,$0003,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; smash/breaking<br />
Sound39: dc.w z80_ptr(smashsamp),$0104<br />
dc.w $8002,z80_ptr(+),$1000<br />
dc.w $8004,z80_ptr(+++),$0000<br />
dc.w $8005,z80_ptr(++),$1000<br />
dc.w $80C0,z80_ptr(s39s4),$0000<br />
+ dc.b $E0,$40,$80,$02,$F6<br />
dc.w z80_ptr(++)<br />
+ dc.b $E0,$80,$80,$01<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
s39s4: dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; nondescript ding<br />
Sound3A: dc.w z80_ptr(ssamp3A),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$AE,$08,$F2<br />
ssamp3A: dc.b $1C,$2E,$0F,$02,$02,$1F,$1F,$1F,$1F,$18,$14,$0F<br />
dc.b $0E,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$20,$1B,$80,$80<br />
<br />
; door slamming shut<br />
Sound3B: dc.w z80_ptr(ssamp3B),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$80,$A0,$06,$F2<br />
ssamp3B: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; spindash unleashed<br />
Sound3C: dc.w z80_ptr(ssamp3C),$0102<br />
dc.w $8005,z80_ptr(+),$9000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$F2<br />
+ dc.b $F5,$07,$80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$4F,$F2<br />
ssamp3C: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
<br />
; slide-thunk<br />
Sound3D: dc.w z80_ptr(ssamp3D),$0102<br />
dc.w $8005,z80_ptr(+),$100A<br />
dc.w $8004,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$60,$01,$A7,$08,$F2<br />
+ dc.b $80,$08,$EF,$01,$84,$22,$F2<br />
ssamp3D: dc.b $FA,$21,$19,$3A,$30,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
dc.b $FA,$31,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$1F,$2F,$2F,$0D,$01,$00,$80<br />
<br />
; rolling sound<br />
Sound3E: dc.w z80_ptr(ssamp3E),$0101<br />
dc.w $8004,z80_ptr(+),$0C05<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$09,$FF,$CA,$25,$F4<br />
- dc.b $E7,$E6,$01,$D0<br />
dc.w $02F7,$002A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3E: dc.b $3C,$00,$02,$44,$02,$1F,$1F,$1F,$15,$00,$00,$1F<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0D,$28,$00,$00<br />
<br />
; got continue<br />
Sound3F: dc.w z80_ptr(ssamp3F),$0103<br />
dc.w $8002,z80_ptr(+),$F406<br />
dc.w $8004,z80_ptr(++),$F406<br />
dc.w $8005,z80_ptr(+++),$F406<br />
+ dc.b $EF,$00,$C9,$07,$CD,$D0,$CB,$CE,$D2,$CD,$D0,$D4,$CE,$D2,$D5<br />
- dc.b $D0,$07,$D4,$D7,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$80,$07,$CD,$15,$CE,$D0,$D2<br />
- dc.b $D4,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$C9,$15,$CB,$CD,$CE<br />
- dc.b $D0,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3F: dc.b $14,$25,$36,$33,$11,$1F,$1F,$1F,$1F,$15,$1C,$18<br />
dc.b $13,$0B,$0D,$08,$09,$0F,$8F,$9F,$0F,$24,$0A,$05,$80<br />
<br />
; short bonus ding<br />
Sound40: dc.w z80_ptr(ssamp3F),$0102<br />
dc.w $8005,z80_ptr(++),$0008<br />
dc.w $8004,z80_ptr(+),$0008<br />
+ dc.b $E1,$03,$80,$02<br />
+ dc.b $EF,$00,$C4,$16,$F2<br />
<br />
; badnik bust<br />
Sound41: dc.w z80_ptr(ssamp41),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0002<br />
+ dc.b $F0,$03,$01,$72,$0B,$EF,$00,$BA,$16,$F2<br />
+ dc.b $F5,$01,$F3,$E7,$B0,$1B,$F2<br />
ssamp41: dc.b $3C,$0F,$03,$01,$01,$1F,$1F,$1F,$1F,$19,$19,$12<br />
dc.b $0E,$05,$00,$12,$0F,$0F,$FF,$7F,$FF,$00,$00,$80,$80<br />
<br />
; warning ding-ding<br />
Sound42: dc.w z80_ptr(ssamp3F),$0101<br />
dc.w $8005,z80_ptr(+),$0C08<br />
+ dc.b $EF,$00,$BA,$08,$BA,$25,$F2<br />
<br />
; special stage ring flash (unused)<br />
Sound43: dc.w z80_ptr(ssamp43),$0102<br />
dc.w $8004,z80_ptr(+),$0C00<br />
dc.w $8005,z80_ptr(++),$0013<br />
+ dc.b $EF,$01,$80,$01,$A2,$08,$EF,$00,$E7,$AD,$26,$F2<br />
+ dc.b $EF,$02,$F0,$06,$01,$03,$FF,$80,$0A<br />
- dc.b $C3<br />
dc.w $06F7,$0005,z80_ptr(-)<br />
dc.b $C3,$17,$F2<br />
ssamp43: dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$1C,$80<br />
dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$2C,$80<br />
dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$13,$13,$81,$88<br />
<br />
; thunk<br />
Sound44: dc.w z80_ptr(ssamp44),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$8A,$22,$F2<br />
ssamp44: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$4F,$2F,$2F,$0D,$04,$07,$80<br />
<br />
; cha-ching<br />
Sound45: dc.w z80_ptr(ssamp45),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$8A,$08,$80,$02,$8A,$08,$F2<br />
+ dc.b $EF,$01,$80,$12,$C6,$55,$F2<br />
+ dc.b $F5,$02,$F3,$E7,$80,$02,$C2,$05,$C4,$04,$C2,$05,$C4,$04,$F2<br />
ssamp45: dc.b $3B,$03,$02,$02,$06,$18,$1A,$1A,$96,$17,$0A,$0E<br />
dc.b $10,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$39,$28,$80<br />
ringsamp: dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$23,$80,$80<br />
<br />
; losing rings (scatter)<br />
Sound46: dc.w z80_ptr(ringsamp),$0102<br />
dc.w $8004,z80_ptr(+),$0005<br />
dc.w $8005,z80_ptr(++),$0008<br />
+ dc.b $EF,$00,$C6,$02,$05,$05,$05,$05,$05,$05,$3A,$F2<br />
+ dc.b $EF,$00,$80,$02,$C4,$02,$05,$15,$02,$05,$32,$F2<br />
<br />
; chain pull chink-chink<br />
Sound47: dc.w z80_ptr(ssamp47),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$BE,$05,$80,$04,$BE,$04,$80,$04,$F2<br />
ssamp47: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; flamethrower<br />
Sound48: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$25,$F2<br />
<br />
; bonus pwoieeew (unused)<br />
Sound49: dc.w z80_ptr(ssamp49),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$33,$18,$B9,$1A,$F2<br />
ssamp49: dc.b $3B,$0A,$05,$31,$02,$5F,$5F,$5F,$5F,$04,$16,$14<br />
dc.b $0C,$00,$00,$04,$00,$1F,$D8,$6F,$FF,$03,$00,$25,$80<br />
<br />
; special stage entry<br />
Sound4A: dc.w z80_ptr(ssamp4A),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$F0,$01,$01,$5B,$02,$CC,$65,$F2<br />
ssamp4A: dc.b $20,$36,$30,$35,$31,$41,$3B,$49,$4B,$09,$09,$06<br />
dc.b $08,$01,$02,$03,$A9,$0F,$0F,$0F,$0F,$29,$23,$27,$80<br />
<br />
; slower smash/crumble<br />
Sound4B: dc.w z80_ptr(smashsamp),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; spring boing<br />
Sound4C: dc.w z80_ptr(ssamp4C),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$5D,$0F,$B0,$0C,$F4<br />
- dc.b $E7,$E6,$02,$BD<br />
dc.w $02F7,$0019,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4C: dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$16,$13,$30,$80<br />
<br />
; selection blip<br />
Sound4D: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $BB,$02,$F2<br />
<br />
; another ring sound (only plays in the left speaker?)<br />
Sound4E: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8004,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$80,$C1,$04,$C4,$05,$C9,$1B,$F2<br />
<br />
; signpost spin sound<br />
Sound4F: dc.w z80_ptr(ssamp4F),$0102<br />
dc.w $8004,z80_ptr(+),$2703<br />
dc.w $8005,z80_ptr(++),$2700<br />
+ dc.b $80,$04<br />
+ dc.b $EF,$00<br />
- dc.b $B4,$05,$E6<br />
dc.w $02F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4F: dc.b $F4,$06,$0F,$04,$0E,$1F,$1F,$1F,$1F,$00,$0B,$00<br />
dc.b $0B,$00,$05,$00,$08,$0F,$FF,$0F,$FF,$0C,$03,$8B,$80<br />
<br />
; mosquito zapper<br />
Sound50: dc.w z80_ptr(ssamp50),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B3,$04,$80,$01<br />
- dc.b $B4,$04,$80<br />
dc.w $01F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
ssamp50: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$06,$34,$10,$87<br />
<br />
<br />
Sound51: dc.w z80_ptr(ssamp51),$0102<br />
dc.w $80C0,z80_ptr(+),$0001<br />
dc.w $8005,z80_ptr(++),$000B<br />
+ dc.b $F5,$02,$F3,$E4,$B0,$04,$85,$02,$F2<br />
+ dc.b $EF,$00,$E8,$04,$A5,$06,$F2<br />
ssamp51: dc.b $3C,$02,$01,$00,$01,$1F,$1F,$1F,$1F,$00,$19,$0E<br />
dc.b $10,$00,$00,$0C,$0F,$0F,$FF,$EF,$FF,$05,$00,$80,$80<br />
<br />
<br />
Sound52: dc.w z80_ptr(ssamp52),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $F0,$01,$01,$2A,$07,$EF,$00<br />
- dc.b $A5,$03<br />
dc.w $E7F7,$0013,z80_ptr(-)<br />
- dc.b $A5,$03,$E7,$E6<br />
dc.w $02F7,$0013,z80_ptr(-)<br />
dc.b $F2<br />
ssamp52: dc.b $28,$21,$21,$21,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$29,$20,$29,$80<br />
<br />
<br />
Sound53: dc.w z80_ptr(ssamp53),$0101<br />
dc.w $8005,z80_ptr(+),$F503<br />
+ dc.b $EF,$00,$F0,$01,$01,$46,$09,$A7,$14,$E7,$14,$E7,$E6,$04<br />
dc.b $14,$E7,$E6,$04,$14,$E7,$E6,$04,$0A,$E7,$E6,$04,$0A,$F2<br />
ssamp53: dc.b $07,$0A,$0C,$0C,$0C,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$2A,$0F,$0F,$80<br />
<br />
; OOZ lid pop sound<br />
Sound54: dc.w z80_ptr(ssamp54),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0006<br />
+ dc.b $EF,$00,$B6,$15,$F2<br />
+ dc.b $F3,$E7,$F5,$04,$C6,$03,$E7,$C5,$E7<br />
dc.b $C4,$E7,$C3,$E7,$C2,$E7,$C1,$E7,$C0,$F2<br />
ssamp54: dc.b $07,$03,$02,$03,$00,$FF,$6F,$6F,$3F,$12,$14,$11<br />
dc.b $0E,$1A,$0A,$03,$0D,$FF,$FF,$FF,$FF,$03,$07,$07,$80<br />
<br />
<br />
Sound55: dc.w z80_ptr(ssamp55),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$AA,$07,$B6,$15,$F2<br />
ssamp55: dc.b $42,$20,$0E,$0F,$0F,$1F,$1F,$1F,$1F,$1F,$1F,$1F<br />
dc.b $1F,$0F,$0E,$0F,$0E,$0F,$0F,$0F,$0F,$2E,$80,$20,$80<br />
<br />
<br />
Sound56: dc.w z80_ptr(ssamp56),$0101<br />
dc.w $8005,z80_ptr(+),$100E<br />
+ dc.b $EF,$00,$F0,$01,$01,$1E,$FF,$8F,$1C,$F4<br />
- dc.b $E7,$9A<br />
dc.w $05F7,$0009,z80_ptr(-)<br />
- dc.b $E7,$9A,$04,$E6,$02,$E7,$9A,$04,$E6<br />
dc.w $02F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp56: dc.b $0D,$06,$00,$00,$E5,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$27,$80,$80,$80<br />
<br />
<br />
Sound57: dc.w z80_ptr(ssamp57),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$CA,$15,$F2<br />
ssamp57: dc.b $04,$09,$70,$00,$30,$1C,$1F,$DF,$1F,$15,$12,$0B<br />
dc.b $0F,$0C,$0D,$00,$0D,$07,$2F,$FA,$FA,$00,$29,$00,$00<br />
<br />
; CNZ bonusy bumper sound<br />
Sound58: dc.w z80_ptr(ssamp58),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$B3,$06,$B3,$15,$F2<br />
ssamp58: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
<br />
; CNZ baaang bumper sound<br />
Sound59: dc.w z80_ptr(ssamp59),$0103<br />
dc.w $8004,z80_ptr(+),$0000<br />
dc.w $8002,z80_ptr(++),$0002<br />
dc.w $8005,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$E1,$0C,$B5,$14,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
+ dc.b $EF,$00,$B6,$14,$F2<br />
ssamp59: dc.b $32,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $0D,$00,$01,$01,$0C,$00,$23,$C3,$F6,$08,$07,$1C,$03<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; CNZ gloop / water droplet sound<br />
Sound5A: dc.w z80_ptr(ssamp5A),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$7F,$F1,$AA,$0A,$F2<br />
ssamp5A: dc.b $47,$03,$02,$02,$04,$5F,$5F,$5F,$5F,$0E,$1A,$11<br />
dc.b $0A,$09,$0A,$0A,$0A,$4F,$3F,$3F,$3F,$7F,$80,$80,$A3<br />
<br />
<br />
Sound5B: dc.w z80_ptr(ssamp5B),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$02,$A5,$01,$E7<br />
- dc.b $01,$E7,$E6<br />
dc.w $02F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5B: dc.b $38,$0F,$0F,$0F,$0F,$1F,$1F,$1F,$0E,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$1F,$00,$00,$00,$80<br />
<br />
<br />
Sound5C: dc.w z80_ptr(ssamp5C),$0102<br />
dc.w $8004,z80_ptr(+),$000E<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$85,$40<br />
- dc.b $E7,$04,$E6<br />
dc.w $04F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$40<br />
- dc.b $E7,$08,$E6<br />
dc.w $01F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5C: dc.b $FA,$12,$01,$01,$01,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$81,$8E,$14,$80<br />
<br />
; chain clink<br />
Sound5D: dc.w z80_ptr(ssamp5D),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$C0,$04,$F2<br />
ssamp5D: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; helicopter<br />
Sound5E: dc.w z80_ptr(ssamp5E),$0101<br />
dc.w $8002,z80_ptr(+),$1405<br />
+ dc.b $EF,$00<br />
- dc.b $95,$02,$95<br />
dc.w $01F7,$0013,z80_ptr(-)<br />
- dc.b $95,$02,$95,$01,$E6<br />
dc.w $01F7,$001B,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5E: dc.b $35,$30,$44,$40,$51,$1F,$1F,$1F,$1F,$10,$00,$13<br />
dc.b $15,$1F,$00,$1F,$1A,$7F,$0F,$7F,$5F,$02,$A8,$80,$80<br />
<br />
<br />
Sound5F: dc.w z80_ptr(ssamp5F),$0103<br />
dc.w $8005,z80_ptr(s5Fs1),$0000<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
s5Fs1 dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$E6,$0A,$80<br />
dc.b $06,$EF,$01,$F0,$01,$01,$11,$FF,$A2,$28<br />
- dc.b $E7,$03,$E6<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs2 dc.b $80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$1D<br />
- dc.b $E7,$07,$EC<br />
dc.w $01F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs3 dc.b $80,$16,$F5,$03<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $FFF7,$0005,z80_ptr(-)<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $01F7,$0007,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5F: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
dc.b $3A,$70,$30,$04,$01,$0F,$14,$19,$16,$08,$0A,$0B<br />
dc.b $05,$03,$03,$03,$05,$1F,$6F,$8F,$5F,$1F,$22,$1F,$80<br />
<br />
; spindash charge<br />
Sound60: dc.w z80_ptr(ssamp60),$0101<br />
dc.w $8005,z80_ptr(+),$FE00<br />
+ dc.b $EF,$00,$F0,$00,$01,$20,$F6,$C4,$16,$E7,$F4,$D0,$18,$E7<br />
- dc.b $04,$E7,$E6<br />
dc.w $03F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp60: dc.b $34,$00,$03,$0C,$09,$9F,$8C,$8F,$95,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$00,$1D,$00,$00<br />
<br />
; rumbling<br />
Sound61: dc.w z80_ptr(ssamp61),$0101<br />
dc.w $8004,z80_ptr(+),$0004<br />
+ dc.b $80,$01,$EF,$00,$F0,$00,$01,$70,$06,$82,$06,$85,$08,$83<br />
dc.b $01,$82,$05,$86,$06,$89,$03,$82,$08,$88,$04,$82,$06,$E6<br />
dc.b $02,$85,$08,$E6,$02,$83,$01,$E6,$02,$82,$05,$E6,$02,$86<br />
dc.b $06,$E6,$02,$89,$03,$E6,$02,$82,$08,$E6,$02,$88,$04,$E6,$02,$F2<br />
ssamp61: dc.b $32,$30,$30,$50,$30,$1F,$0E,$19,$0E,$07,$12,$15<br />
dc.b $09,$0A,$09,$1D,$06,$E8,$03,$0A,$17,$07,$00,$00,$00<br />
<br />
<br />
Sound62: dc.w z80_ptr(ssamp62),$0101<br />
dc.w $8005,z80_ptr(+),$FF00<br />
+ dc.b $EF,$00,$A6,$05,$F0,$01,$01,$E7,$40<br />
- dc.b $C4,$02,$E7,$E6<br />
dc.w $01F7,$0012,z80_ptr(-)<br />
dc.b $F2<br />
ssamp62: dc.b $34,$0C,$10,$73,$0C,$AF,$AC,$FF,$D5,$06,$00,$02<br />
dc.b $01,$02,$0A,$04,$08,$BF,$BF,$BF,$BF,$00,$08,$80,$80<br />
<br />
; CNZ blooing bumper<br />
Sound63: dc.w z80_ptr(ssamp63),$0101<br />
dc.w $8005,z80_ptr(+),$0907<br />
+ dc.b $EF,$00,$F0,$01,$01,$04,$56,$92,$03,$9A,$25,$F2<br />
ssamp63: dc.b $3D,$12,$10,$77,$30,$5F,$5F,$5F,$5F,$0F,$0A,$00<br />
dc.b $01,$0A,$0A,$0D,$0D,$4F,$0F,$0F,$0F,$13,$80,$80,$80<br />
<br />
; HTZ track click sound<br />
Sound64: dc.w z80_ptr(ssamp64),$0101<br />
dc.w $8005,z80_ptr(+),$1100<br />
+ dc.b $EF,$00,$C7,$02,$F2<br />
ssamp64: dc.b $24,$2A,$02,$05,$01,$1A,$1F,$10,$1F,$0F,$1F,$1F<br />
dc.b $1F,$0C,$0D,$11,$11,$0C,$09,$09,$0F,$0E,$04,$80,$80<br />
<br />
; kicking up leaves sound<br />
Sound65: dc.w z80_ptr(ssamp65),$0101<br />
dc.w $80C0,z80_ptr(+),$F800<br />
+ dc.b $F5,$03,$F3,$E7,$CE,$03,$F5,$06,$CE,$04,$EC<br />
dc.b $02,$CE,$02,$F5,$03,$EC,$FE,$CE,$08,$CE,$18,$F2<br />
ssamp65: ; uhm... apparently they forgot to null out the pointer to here.<br />
; luckily, sound 65 doesn't really use its sample<br />
<br />
; leaf splash?<br />
Sound66: dc.w z80_ptr(ssamp66),$0102<br />
dc.w $8005,z80_ptr(++),$EE08<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$F5,$09,$C6,$36,$F2<br />
+ dc.b $EF,$00,$80,$01,$92,$02,$02,$02,$30,$F2<br />
ssamp66: dc.b $32,$33,$17,$34,$13,$0F,$0D,$1B,$17,$00,$04,$02<br />
dc.b $0B,$08,$00,$08,$09,$6F,$5F,$4F,$6F,$05,$00,$00,$80<br />
<br />
<br />
Sound67: dc.w z80_ptr(ssamp67),$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$06,$F3,$E7,$90,$0A,$94,$0A,$98,$0A,$9C<br />
dc.b $0A,$A0,$0A,$A4,$08,$A8,$08,$AC,$08,$B0,$08,$F2<br />
ssamp67: ; another not-really-used sample (like Sound65)<br />
<br />
; door slamming quickly (seems unused)<br />
Sound68: dc.w z80_ptr(ssamp68),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$A5,$06,$F2<br />
ssamp68: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
<br />
Sound69: dc.w z80_ptr(ssamp69),$0102<br />
dc.w $8005,z80_ptr(+),$F400<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$9B,$03,$A8,$06,$9E,$08,$F2<br />
+ dc.b $F5,$04,$F3,$E7,$C6,$03,$C6,$06,$C6,$08,$F2<br />
ssamp69: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; robotic laser burst<br />
Sound6A: dc.w z80_ptr(ssamp6A),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$DF,$14,$E6,$18,$06,$F2<br />
ssamp6A: dc.b $3D,$09,$34,$34,$28,$1F,$16,$16,$16,$00,$00,$00<br />
dc.b $04,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$15,$02,$02,$00<br />
<br />
; scatter<br />
Sound6B: dc.w z80_ptr(ssamp6B),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$81,$04,$80,$0C,$F2<br />
ssamp6B: dc.b $3A,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $07,$00,$01,$01,$03,$00,$23,$C3,$46,$08,$07,$1C,$03<br />
<br />
<br />
Sound6C: dc.w z80_ptr(ssamp6C),$0104<br />
dc.w $8005,z80_ptr(++),$0010<br />
dc.w $8004,z80_ptr(+),$0010<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
+ dc.b $E1,$10<br />
+ dc.b $EF,$01,$F0,$01,$01,$EC,$56,$C0,$24,$F4,$EF,$00,$E6,$F0<br />
- dc.b $BB,$02,$E7,$E6,$02,$E9<br />
dc.w $01F7,$0020,z80_ptr(-)<br />
dc.b $F2<br />
ssamp6C: dc.b $00,$53,$30,$03,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$06,$23,$80<br />
dc.b $3C,$72,$32,$32,$72,$14,$14,$0F,$0F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$02,$02,$08,$08,$35,$14,$00,$00<br />
<br />
; error sound<br />
Sound6D: dc.w z80_ptr(ssamp6D),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$B0,$06,$80,$06,$B0,$18,$F2<br />
ssamp6D: dc.b $38,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$1F,$0C,$17,$00<br />
<br />
; silver sonic buzz saw<br />
Sound6E: dc.w z80_ptr(ssamp6E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$C6,$24,$E7<br />
- dc.b $C6,$04,$E7,$E6<br />
dc.w $04F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F3,$E7,$C7,$44,$F2<br />
ssamp6E: dc.b $33,$00,$10,$00,$31,$1F,$1D,$1E,$0E,$00,$0C,$1D<br />
dc.b $00,$00,$00,$01,$00,$0F,$0F,$0F,$0F,$08,$06,$07,$80<br />
<br />
<br />
Sound6F: dc.w z80_ptr(ssamp6A),$0103<br />
dc.w $8005,z80_ptr(++),$000B<br />
dc.w $8004,z80_ptr(+),$0012<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $E1,$02,$80,$02<br />
+ dc.b $EF,$00,$E6,$0C,$DF,$06,$E7,$E6,$F4,$06,$E7<br />
dc.b $E6,$F4,$12,$E7,$E6,$0C,$06,$E7,$E6,$0C,$06,$F2<br />
+ dc.b $F3,$E7,$C6,$04,$C0,$BA,$B4,$AE,$E6<br />
dc.b $01,$AE,$E6,$01,$AE,$E6,$01,$AE,$F2<br />
<br />
<br />
Sound70: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$C6,$18<br />
- dc.b $E7,$03,$E6<br />
dc.w $01F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to the other bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
; share these symbols externally (WARNING: don't rename, move or remove these labels!)<br />
shared movewZ80CompSize<br />
</asm><br />
<br />
We want to replace it with this optimized code:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===sound playback routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #$GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
<br />
==Driver data files==<br />
then unpack this into the sound folder and optionally remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music Playlist==</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208748
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-25T00:46:50Z
<p>Kram1024: /* Driver data files */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==<br />
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><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
move sr,-(sp)<br />
movem.l d0-a6,-(sp)<br />
move #$2700,sr<br />
lea (Z80_Bus_Request).l,a3<br />
lea (Z80_Reset).l,a2<br />
moveq #0,d2<br />
move.w #$100,d1<br />
move.w d1,(a3) ; get Z80 bus<br />
move.w d1,(a2) ; release Z80 reset (was held high by console on startup)<br />
- btst d2,(a3)<br />
bne.s - ; wait until the 68000 has the bus<br />
jsr DecompressSoundDriver(pc)<br />
btst #0,(VDP_control_port+1).l ; check video mode<br />
sne (Z80_RAM+zPalModeByte).l ; set if PAL<br />
move.w d2,(a2) ; hold Z80 reset<br />
move.w d2,(a3) ; release Z80 bus<br />
moveq #$E6,d0<br />
- dbf d0,- ; wait for 2,314 cycles<br />
move.w d1,(a2) ; release Z80 reset<br />
movem.l (sp)+,d0-a6<br />
move (sp)+,sr<br />
rts<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; slightly modified Saxman decompression of the sound driver<br />
; a4 == $A00000 (start of Z80 RAM)<br />
; a5 == current position in Z80 RAM?<br />
; a6 == current position in compressed sound driver?<br />
; d0 == data to decompress? (byte)<br />
; d4 == ???<br />
; d5 == ???<br />
; d6 == ???<br />
; d7 == bytes left to decompress<br />
; loc_EC04A:<br />
DecompressSoundDriver:<br />
lea Snd_Driver(pc),a6<br />
; WARNING: the build script needs editing if you rename this label<br />
movewZ80CompSize: move.w #Snd_Driver_End-Snd_Driver,d7 ; patched (by fixpointer.exe) after compression since the exact size can't be known beforehand<br />
moveq #0,d6<br />
lea (Z80_RAM).l,a5<br />
moveq #0,d5<br />
lea (Z80_RAM).l,a4<br />
<br />
loc_EC062:<br />
lsr.w #1,d6<br />
btst #8,d6<br />
bne.s +<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d6<br />
ori.w #$FF00,d6<br />
+<br />
btst #0,d6<br />
beq.s loc_EC086<br />
jsr sub_EC0DE(pc)<br />
move.b d0,(a5)+<br />
addq.w #1,d5<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC086:<br />
jsr sub_EC0DE(pc)<br />
moveq #0,d4<br />
move.b d0,d4<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d3<br />
andi.w #$F,d3<br />
addq.w #2,d3<br />
andi.w #$F0,d0<br />
lsl.w #4,d0<br />
add.w d0,d4<br />
addi.w #$12,d4<br />
andi.w #$FFF,d4<br />
move.w d5,d0<br />
andi.w #$F000,d0<br />
add.w d0,d4<br />
cmp.w d4,d5<br />
bhs.s loc_EC0CC<br />
subi.w #$1000,d4<br />
bcc.s loc_EC0CC<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b #0,(a5)+<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC0CC:<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b (a4,d4.w),(a5)+<br />
addq.w #1,d4<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; End of function DecompressSoundDriver<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_EC0DE:<br />
move.b (a6)+,d0<br />
subq.w #1,d7<br />
bne.s +<br />
addq.w #4,sp<br />
+<br />
rts<br />
; End of function sub_EC0DE<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; S2 sound driver (Sound driver compression (slightly modified Saxman))<br />
; ---------------------------------------------------------------------------<br />
; loc_EC0E8:<br />
Snd_Driver:<br />
save<br />
include "s2.sounddriver.asm" ; CPU Z80<br />
restore<br />
padding off<br />
!org (Snd_Driver+Size_of_Snd_driver_guess) ; don't worry; I know what I'm doing<br />
<br />
<br />
; loc_ED04C:<br />
Snd_Driver_End:<br />
<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ---------------------------------------------------------------------------<br />
; the DAC data has to line up with the end of the bank.<br />
<br />
; actually it only has to fit within one bank, but we'll line it up to the end anyway<br />
; because the padding gives the sound driver some room to grow<br />
cnop -Size_of_DAC_samples, $8000<br />
<br />
; ---------------------------------------------------------------------------<br />
; DAC samples<br />
; ---------------------------------------------------------------------------<br />
; loc_ED100:<br />
SndDAC_Start:<br />
<br />
SndDAC_Sample1:<br />
BINCLUDE "sound/DAC/Sample 1.bin"<br />
SndDAC_Sample1_End<br />
<br />
SndDAC_Sample2:<br />
BINCLUDE "sound/DAC/Sample 2.bin"<br />
SndDAC_Sample2_End<br />
<br />
SndDAC_Sample5:<br />
BINCLUDE "sound/DAC/Sample 5.bin"<br />
SndDAC_Sample5_End<br />
<br />
SndDAC_Sample6:<br />
BINCLUDE "sound/DAC/Sample 6.bin"<br />
SndDAC_Sample6_End<br />
<br />
SndDAC_Sample3:<br />
BINCLUDE "sound/DAC/Sample 3.bin"<br />
SndDAC_Sample3_End<br />
<br />
SndDAC_Sample4:<br />
BINCLUDE "sound/DAC/Sample 4.bin"<br />
SndDAC_Sample4_End<br />
<br />
SndDAC_Sample7:<br />
BINCLUDE "sound/DAC/Sample 7.bin"<br />
SndDAC_Sample7_End<br />
<br />
SndDAC_End<br />
<br />
if SndDAC_End - SndDAC_Start > $8000<br />
fatal "DAC samples must fit within $8000 bytes, but you have $\{SndDAC_End-SndDAC_Start } bytes of DAC samples."<br />
endif<br />
if SndDAC_End - SndDAC_Start > Size_of_DAC_samples<br />
fatal "Size_of_DAC_samples = $\{Size_of_DAC_samples}, but you have $\{SndDAC_End-SndDAC_Start} bytes of DAC samples."<br />
endif<br />
<br />
; ---------------------------------------------------------------------------<br />
; Music pointers<br />
; ---------------------------------------------------------------------------<br />
align $8000<br />
<br />
; loc_F0000:<br />
MusicPoint1:<br />
MusPtr_Continue: rom_ptr_z80 Mus_Continue-MusicPoint2<br />
<br />
<br />
Mus_Continue: BINCLUDE "sound/music/Continue.bin"<br />
<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ----------------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ----------------------------------------------------------------------------------<br />
; the PCM data has to line up with the end of the bank.<br />
cnop -Size_of_SEGA_sound, $8000<br />
<br />
; -------------------------------------------------------------------------------<br />
; Sega Intro Sound<br />
; 8-bit unsigned raw audio at 16Khz<br />
; -------------------------------------------------------------------------------<br />
; loc_F1E8C:<br />
Snd_Sega: BINCLUDE "sound/PCM/SEGA.bin"<br />
Snd_Sega_End:<br />
<br />
if Snd_Sega_End - Snd_Sega > $8000<br />
fatal "Sega sound must fit within $8000 bytes, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
if Snd_Sega_End - Snd_Sega > Size_of_SEGA_sound<br />
fatal "Size_of_SEGA_sound = $\{Size_of_SEGA_sound}, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
<br />
; ------------------------------------------------------------------------------<br />
; Music pointers<br />
; ------------------------------------------------------------------------------<br />
align $8000<br />
soundBankStart := *<br />
<br />
; loc_F8000:<br />
MusicPoint2:<br />
MusPtr_CNZ_2P: rom_ptr_z80 Mus_CNZ_2P<br />
MusPtr_EHZ: rom_ptr_z80 Mus_EHZ<br />
MusPtr_MTZ: rom_ptr_z80 Mus_MTZ<br />
MusPtr_CNZ: rom_ptr_z80 Mus_CNZ<br />
MusPtr_MCZ: rom_ptr_z80 Mus_MCZ<br />
MusPtr_MCZ_2P: rom_ptr_z80 Mus_MCZ_2P<br />
MusPtr_ARZ: rom_ptr_z80 Mus_ARZ<br />
MusPtr_DEZ: rom_ptr_z80 Mus_DEZ<br />
MusPtr_SpecStage: rom_ptr_z80 Mus_SpecStage<br />
MusPtr_Options: rom_ptr_z80 Mus_Options<br />
MusPtr_Ending: rom_ptr_z80 Mus_Ending<br />
MusPtr_EndBoss: rom_ptr_z80 Mus_EndBoss<br />
MusPtr_CPZ: rom_ptr_z80 Mus_CPZ<br />
MusPtr_Boss: rom_ptr_z80 Mus_Boss<br />
MusPtr_SCZ: rom_ptr_z80 Mus_SCZ<br />
MusPtr_OOZ: rom_ptr_z80 Mus_OOZ<br />
MusPtr_WFZ: rom_ptr_z80 Mus_WFZ<br />
MusPtr_EHZ_2P: rom_ptr_z80 Mus_EHZ_2P<br />
MusPtr_2PResult: rom_ptr_z80 Mus_2PResult<br />
MusPtr_SuperSonic: rom_ptr_z80 Mus_SuperSonic<br />
MusPtr_HTZ: rom_ptr_z80 Mus_HTZ<br />
MusPtr_ExtraLife: rom_ptr_z80 Mus_ExtraLife<br />
MusPtr_Title: rom_ptr_z80 Mus_Title<br />
MusPtr_EndLevel: rom_ptr_z80 Mus_EndLevel<br />
MusPtr_GameOver: rom_ptr_z80 Mus_GameOver<br />
MusPtr_Invincible: rom_ptr_z80 Mus_Invincible<br />
MusPtr_Emerald: rom_ptr_z80 Mus_Emerald<br />
MusPtr_HPZ: rom_ptr_z80 Mus_HPZ<br />
MusPtr_Drowning: rom_ptr_z80 Mus_Drowning<br />
MusPtr_Credits: rom_ptr_z80 Mus_Credits<br />
<br />
; loc_F803C:<br />
Mus_HPZ: BINCLUDE "sound/music/HPZ.bin"<br />
Mus_Drowning: BINCLUDE "sound/music/Drowning.bin"<br />
Mus_Invincible: BINCLUDE "sound/music/Invincible.bin"<br />
Mus_CNZ_2P: BINCLUDE "sound/music/CNZ_2p.bin"<br />
Mus_EHZ: BINCLUDE "sound/music/EHZ.bin"<br />
Mus_MTZ: BINCLUDE "sound/music/MTZ.bin"<br />
Mus_CNZ: BINCLUDE "sound/music/CNZ.bin"<br />
Mus_MCZ: BINCLUDE "sound/music/MCZ.bin"<br />
Mus_MCZ_2P: BINCLUDE "sound/music/MCZ_2p.bin"<br />
Mus_ARZ: BINCLUDE "sound/music/ARZ.bin"<br />
Mus_DEZ: BINCLUDE "sound/music/DEZ.bin"<br />
Mus_SpecStage: BINCLUDE "sound/music/SpecStg.bin"<br />
Mus_Options: BINCLUDE "sound/music/Options.bin"<br />
Mus_Ending: BINCLUDE "sound/music/Ending.bin"<br />
Mus_EndBoss: BINCLUDE "sound/music/End_Boss.bin"<br />
Mus_CPZ: BINCLUDE "sound/music/CPZ.bin"<br />
Mus_Boss: BINCLUDE "sound/music/Boss.bin"<br />
Mus_SCZ: BINCLUDE "sound/music/SCZ.bin"<br />
Mus_OOZ: BINCLUDE "sound/music/OOZ.bin"<br />
Mus_WFZ: BINCLUDE "sound/music/WFZ.bin"<br />
Mus_EHZ_2P: BINCLUDE "sound/music/EHZ_2p.bin"<br />
Mus_2PResult: BINCLUDE "sound/music/2player results screen.bin"<br />
Mus_SuperSonic: BINCLUDE "sound/music/Supersonic.bin"<br />
Mus_HTZ: BINCLUDE "sound/music/HTZ.bin"<br />
Mus_Title: BINCLUDE "sound/music/Title screen.bin"<br />
Mus_EndLevel: BINCLUDE "sound/music/End of level.bin"<br />
<br />
; The following act mostly like sound effects<br />
; despite being listed with the music.<br />
; This means they're uncompressed format with absolute pointers<br />
; instead of compressed with relative pointers.<br />
; Because they have absolute pointers,<br />
; they have to be assembled rather than BINCLUDE'd.<br />
; See below (right before Sound20) for other notes<br />
; about the sound format that apply to these too.<br />
<br />
;Mus_ExtraLife: BINCLUDE "sound/music/Extra life.bin"<br />
Mus_ExtraLife: dc.w z80_ptr(Mus_EL_Voices),$0603,$02CD<br />
dc.w z80_ptr(Mus_EL_DAC),$0000<br />
dc.w z80_ptr(Mus_EL_FM1),$E810<br />
dc.w z80_ptr(Mus_EL_FM2),$E810<br />
dc.w z80_ptr(Mus_EL_FM3),$E810<br />
dc.w z80_ptr(Mus_EL_FM4),$E810<br />
dc.w z80_ptr(Mus_EL_FM5),$E810<br />
dc.w z80_ptr(Mus_EL_PSG1),$D008,$0005<br />
dc.w z80_ptr(Mus_EL_PSG2),$DC08,$0005<br />
dc.w z80_ptr(Mus_EL_PSG3),$DC00,$0004<br />
Mus_EL_FM4: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM1: dc.b $E0,$80<br />
+ dc.b $EF,$00,$E8,$06,$D9,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$DB,$09,$D7,$D6,$06,$D9,$18,$F2<br />
Mus_EL_FM2: dc.b $EF,$01,$E8,$06,$E2,$01,$D6,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$D7,$09,$D4,$D2,$06,$D6,$18,$E2,$01,$F2<br />
Mus_EL_FM5: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM3: dc.b $E0,$80<br />
+ dc.b $EF,$02,$BA,$0C,$80,$06,$BA,$B8,$80,$03<br />
dc.b $B8,$06,$80,$03,$B8,$06,$BA,$18,$F2<br />
Mus_EL_PSG1: dc.b $E8,$06,$D6,$06,$03,$03,$06,$06,$E8,$00,$D7,$09<br />
dc.b $D4,$D2,$06,$D6,$18<br />
Mus_EL_PSG2:<br />
Mus_EL_PSG3: dc.b $F2<br />
Mus_EL_DAC: dc.b $88,$12,$06,$8B,$09,$09,$06,$88,$06,$8A,$88,$8A<br />
dc.b $88,$0C,$E4<br />
Mus_EL_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
<br />
<br />
;Mus_GameOver: BINCLUDE "sound/music/Game over.bin"<br />
Mus_GameOver: dc.w z80_ptr(MusGO_Voices),$0603,$02F2<br />
dc.w z80_ptr(MusGOver_DAC),$0000<br />
dc.w z80_ptr(MusGOver_FM1),$E80A<br />
dc.w z80_ptr(MusGOver_FM2),$F40F<br />
dc.w z80_ptr(MusGOver_FM3),$F40F<br />
dc.w z80_ptr(MusGOver_FM4),$F40D<br />
dc.w z80_ptr(MusGOver_FM5),$DC16<br />
dc.w z80_ptr(MusGOver_PSG),$D003,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC06,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC00,$0004<br />
MusGOver_FM1: dc.b $EF,$00<br />
dc.b $F0,$20,$01,$04,$05<br />
dc.b $80,$0C,$CA,$12,$80,$06,$CA,$80,$CB,$12,$C8,$1E<br />
dc.b $CA,$06,$80,$CA,$80,$CA,$80,$C6,$80,$C4,$12,$C8<br />
dc.b $0C,$80,$12,$C9,$04,$80,$C9,$C8,$06,$80,$C7,$80<br />
dc.b $C6,$80<br />
dc.b $F0,$28,$01,$18,$05<br />
dc.b $C5,$60,$F2<br />
MusGOver_FM2: dc.b $EF,$01,$80,$01,$D9,$06,$80,$D9,$80,$D6,$80,$D6<br />
dc.b $80,$D7,$15,$D7,$1B,$D9,$06,$80,$D9,$80,$D6,$80<br />
dc.b $D6,$80,$DC,$15,$DC,$1B,$F2<br />
MusGOver_FM3: dc.b $EF,$01,$D6,$0C,$D6,$D2,$D2,$D4,$15,$D4,$1B,$D6<br />
dc.b $0C,$D6,$D2,$D2,$D7,$15,$D7,$1B,$F2<br />
MusGOver_FM4: dc.b $EF,$02,$E2,$01,$AE,$06,$80,$AE,$80,$A9,$80,$A9<br />
dc.b $80,$AC,$15,$AB,$0C,$AC,$03,$AB,$0C,$AE,$06,$80<br />
dc.b $AE,$80,$A9,$80,$A9,$80,$B3,$15,$B2,$0C,$B3,$03<br />
dc.b $B2,$0C,$AE,$04,$80,$AE,$AD,$06,$80,$AC,$80,$AB<br />
dc.b $80,$AB,$60,$E2,$01,$F2<br />
MusGOver_FM5: dc.b $EF,$03,$80,$30,$D7,$12,$80,$03,$D7,$1B,$80,$30<br />
dc.b $DC,$12,$80,$03,$DC,$1B<br />
MusGOver_PSG: dc.b $F2<br />
MusGOver_DAC: dc.b $80,$18,$81<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(MusGOver_DAC)<br />
dc.b $F2<br />
MusGO_Voices: dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $3C,$33,$73,$30,$70,$94,$96,$9F,$9F,$12,$14,$00<br />
dc.b $0F,$04,$04,$0A,$0D,$2F,$4F,$0F,$2F,$33,$1A,$80,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$1C,$27,$28,$80<br />
dc.b $1F,$66,$53,$31,$22,$1C,$1F,$98,$1F,$12,$0F,$0F<br />
dc.b $0F,$00,$00,$00,$00,$FF,$0F,$0F,$0F,$8C,$8A,$8D,$8B<br />
<br />
;Mus_Emerald: BINCLUDE "sound/music/Got an emerald.bin"<br />
Mus_Emerald: dc.w z80_ptr(MusEmrldVoices),$0703,$01D5<br />
dc.w z80_ptr(MusEmeraldDAC),$0000<br />
dc.w z80_ptr(MusEmeraldFM1),$F408<br />
dc.w z80_ptr(MusEmeraldFM2),$F408<br />
dc.w z80_ptr(MusEmeraldFM3),$F407<br />
dc.w z80_ptr(MusEmeraldFM4),$F416<br />
dc.w z80_ptr(MusEmeraldFM5),$F416<br />
dc.w z80_ptr(MusEmeraldFM6),$F416<br />
dc.w z80_ptr(MusEmeraldPSG1),$F402,$0004<br />
dc.w z80_ptr(MusEmeraldPSG2),$F402,$0005<br />
dc.w z80_ptr(MusEmeraldPSG3),$F400,$0004<br />
MusEmeraldFM3: dc.b $E1,$02<br />
MusEmeraldFM1: dc.b $EF,$00,$C1,$06,$C4,$C9,$CD,$0C,$C9,$D0,$2A,$F2<br />
MusEmeraldFM2: dc.b $EF,$00,$BD,$06,$C1,$C4,$C9,$0C,$C6,$CB,$2A,$F2<br />
MusEmeraldFM4: dc.b $EF,$01,$C1,$0C,$C1,$06,$C4,$06,$80,$C4,$80,$C9<br />
dc.b $2A,$F2<br />
MusEmeraldFM5: dc.b $EF,$01,$C9,$0C,$C9,$06,$CD,$06,$80,$CD,$80,$D0<br />
dc.b $2A,$F2<br />
MusEmeraldFM6: dc.b $EF,$01,$C4,$0C,$C4,$06,$C9,$06,$80,$C9,$80,$CD<br />
dc.b $2A,$F2<br />
MusEmeraldPSG2: dc.b $80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusEmeraldPSG1: dc.b $E2,$01,$80,$02,$80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
MusEmeraldPSG3:<br />
MusEmeraldDAC: dc.b $E2,$01,$F2<br />
MusEmrldVoices: dc.b $04,$35,$54,$72,$46,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$1D,$14,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$07,$07,$1A,$16,$80,$80<br />
<br />
;Mus_Credits: BINCLUDE "sound/music/Credits.bin"<br />
Mus_Credits: dc.w z80_ptr(MusCred_Voices),$0603,$01F0<br />
dc.w z80_ptr(MusCred_DAC),$0000<br />
dc.w z80_ptr(MusCred_FM1),$000E<br />
dc.w z80_ptr(MusCred_FM2),$180A<br />
dc.w z80_ptr(MusCred_FM3),$0014<br />
dc.w z80_ptr(MusCred_FM4),$0016<br />
dc.w z80_ptr(MusCred_FM5),$0C16<br />
dc.w z80_ptr(MusCred_PSG1),$E806,$000B<br />
dc.w z80_ptr(MusCred_PSG2),$DC07,$000B<br />
dc.w z80_ptr(MusCred_PSG3),$0002,$0003<br />
MusCred_FM1: dc.b $E9,$F4,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$0C,$E6,$02<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$03,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $AE,$06,$A2,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $E6,$FD<br />
- dc.b $EF,$00,$B7,$06,$BA,$F8<br />
dc.w z80_ptr(MusCreditsDA13)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$06,$80,$80,$30,$80,$EF,$0B,$E9,$18,$E6,$02<br />
- dc.b $94,$0C,$8F,$92,$8F,$06,$94,$05,$94,$07,$06,$8F<br />
dc.b $0C,$92,$8F<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$30,$80,$EF,$0E,$E6,$FF,$E9,$E8,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$91,$94,$06,$80,$18,$96,$12,$9A,$06,$80<br />
dc.b $80,$12,$8F,$93,$08,$80,$16,$96,$06,$91,$92,$94<br />
dc.b $96,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$9D,$9A,$08,$80,$16,$96,$12,$9D,$08,$80<br />
dc.b $04,$EF,$12<br />
dc.b $F0,$18,$01,$0A,$04<br />
dc.b $80,$30,$80,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$24,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$EF,$01,$E9,$F4,$E6,$FA,$F4<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $80,$03,$80,$60,$E6,$04,$E1,$01,$EF,$1B,$E6,$06<br />
dc.b $C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80,$EF<br />
dc.b $1C,$E6,$FA,$E8,$00,$BC,$0C,$12,$06,$EF,$1B,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$80,$E8,$06,$C4,$06,$06,$C6,$C4,$E8<br />
dc.b $00,$C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80<br />
dc.b $E8,$00,$EF,$1C,$E6,$FA,$C1,$C4,$C1,$EF,$1A,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$06,$80,$80,$24,$80,$30,$80,$EF,$1F<br />
dc.b $E9,$18,$E6,$F7,$E1,$00,$80,$06,$AC,$AE,$80,$B1<br />
dc.b $80,$B3,$80,$B4,$80,$B3,$80,$B1,$B3,$80,$B1,$E9<br />
dc.b $F4,$EF,$00,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC<br />
dc.b $06,$AE,$B1,$80,$B4,$B1,$80,$B1,$E9,$0C,$EF,$1F<br />
dc.b $80,$06,$B8,$12,$B4,$06,$80,$B3,$80,$B4,$80,$B3<br />
dc.b $80,$B1,$AE,$80,$B1,$E9,$F4,$EF,$00,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$30,$80,$EF,$21,$E9,$0C,$80,$30,$80<br />
dc.b $08,$A0,$04,$9E,$0C,$9D,$9B,$99,$08,$04,$91,$0C<br />
dc.b $92,$93,$94,$98,$99,$9B,$9D,$98,$95,$93,$91,$98<br />
dc.b $9D,$91,$96,$98,$99,$98,$96,$99,$9D,$96,$95,$97<br />
dc.b $99,$97,$95,$96,$97,$98,$99,$98,$99,$9B,$9D,$08<br />
dc.b $04,$98,$0C,$91,$95,$96,$98,$99,$9D,$9E,$08,$96<br />
dc.b $10,$97,$0C,$98,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$08,$99,$04,$EF,$23,$E9,$E8,$E6,$07,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $80,$60,$E6,$FB,$80,$0C,$CD,$06,$80,$D4,$CD,$06<br />
dc.b $80,$0C,$CD,$06,$80,$D4,$CD,$06,$80,$18,$E6,$05<br />
dc.b $80,$0C,$AE,$80,$AE,$80,$24,$E1,$02,$E6,$08,$A2<br />
dc.b $6C,$F2<br />
MusCreditsD9D1: dc.b $A5,$0C,$B1,$06,$80,$B1,$0C,$AC,$B3,$12,$B1,$0C<br />
dc.b $AC,$06,$AE,$B1,$A7,$0C,$B3,$06,$80,$B3,$0C,$AE<br />
dc.b $B5,$12,$B3,$06,$80,$AE,$B0,$B3,$A3,$0C,$AF,$06<br />
dc.b $80,$AF,$0C,$AA,$B1,$12,$AF,$0C,$AA,$06,$AC,$AF<br />
dc.b $A2,$0C,$AE,$06,$A2,$A4,$0C,$B0,$06,$A4,$A5,$0C<br />
dc.b $B1,$06,$A5,$A2,$0C,$E3<br />
MusCreditsDA13: dc.b $BE,$0C,$BC,$06,$BA,$BC,$BA,$04,$E7,$08,$BA,$04<br />
dc.b $80,$0E,$EF,$07,$B7,$06,$B2,$B5,$B7,$EF,$00,$B7<br />
dc.b $BA,$BE,$0C,$BC,$06,$BA,$BC,$BA,$0C,$BC,$04,$80<br />
dc.b $08,$BA,$04,$80,$08,$BC,$04,$80,$08,$BE,$12,$BA<br />
dc.b $06,$B7,$80,$B7,$80,$24,$EF,$07,$B7,$06,$B2,$B5<br />
dc.b $B7,$80,$0C,$80,$30,$BE,$06,$BE,$BA,$04,$80,$08<br />
dc.b $BC,$06,$BE,$E3<br />
MusCreditsDA5F: dc.b $C3,$01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$02,$C3<br />
dc.b $01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01<br />
dc.b $E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$FC,$C3,$01,$E7<br />
dc.b $C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01,$E7,$C4<br />
dc.b $E7,$C5,$E7,$C6,$2D,$E7,$30,$E7,$30,$E3<br />
MusCreditsDA99: dc.b $A7,$0C,$B3,$06,$80,$B1,$80,$B3,$0C,$A7,$03,$80<br />
dc.b $06,$A7,$03,$B3,$0C,$B1,$B3,$09,$AE,$03,$AC,$06<br />
dc.b $80,$AC,$0C,$AE,$06,$80,$AE,$0C,$AF,$06,$80,$27<br />
dc.b $E3<br />
MusCreditsDABE: dc.b $80,$0C,$CA,$15,$80,$03,$CA,$06,$80,$CB,$0F,$80<br />
dc.b $03,$C8,$18,$80,$06,$CA,$80,$CA,$80,$CA,$80,$C6<br />
dc.b $80,$C4,$0F,$80,$03,$C8,$18,$80,$06<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E3<br />
MusCreditsDAE5: dc.b $80,$12,$94,$97,$06,$80,$18,$99,$12,$94,$06,$80<br />
dc.b $80,$12,$92,$96,$06,$80,$18,$97,$12,$92,$06,$80<br />
dc.b $E3<br />
MusCreditsDAFE: dc.b $80,$99,$80,$99,$80,$9E,$80,$E3<br />
MusCreditsDB06: dc.b $EF,$07,$80,$54,$C7,$04,$C8,$C9,$CA,$24,$CD,$D2<br />
dc.b $18,$D0,$24,$CF,$CB,$18,$CB,$0C,$CA,$80,$CD,$60<br />
dc.b $E7,$3C,$CA,$24,$CD,$D2,$18,$D4,$24,$D0,$D4,$18<br />
dc.b $D4,$24,$D6,$60,$E7,$3C,$E3<br />
MusCred_FM2: dc.b $80,$60,$EF,$01,$E8,$06,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $85,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8A,$87,$88,$89,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $88<br />
dc.b $F7,$00,$0B<br />
dc.w z80_ptr(-)<br />
- dc.b $8A<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$E6,$FC,$8A,$8B,$8C,$E6,$04,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$8D,$8A,$8B,$8C,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8D,$06,$99,$E8,$00,$8A,$0C,$8B,$8C,$E9,$E8,$E6<br />
dc.b $0C,$EF,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E6,$F9,$EF,$08<br />
MusCreditsDB93: dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $06,$9C,$12,$9D,$0C,$9E,$F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9D,$04,$80,$08,$9D,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $9C,$04,$80,$08,$9C,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(MusCreditsDB93)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$13,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$60,$EF,$0F,$E6,$F3<br />
dc.b $F0,$04,$02,$03,$02<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$30,$E7,$18,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$EF,$13,$E6,$F5,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$0C,$A9,$08,$A1,$10,$F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$08,$A9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E1,$02,$E9,$F4,$E6,$0A,$F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$EF,$1B,$E1,$00<br />
dc.b $E8,$06,$80,$3C,$B8,$06,$06,$BA,$BD,$BD,$BA,$EF<br />
dc.b $1D,$E6,$FA,$E8,$00,$F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $EF,$1C,$BD,$EF,$1D,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $80,$30,$80,$EF,$01,$E9,$18,$E6,$F9<br />
- dc.b $99,$0C,$A5,$06,$80,$96,$0C,$A2,$06,$80,$97,$0C<br />
dc.b $A3,$06,$80,$98,$0C,$A8,$06,$A7,$99,$06,$99,$12<br />
dc.b $96,$0C,$A2,$06,$80,$97,$0C,$A3,$06,$80,$98,$0C<br />
dc.b $A4,$06,$80<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$22,$E9,$E8,$E6,$03<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$AC,$04,$AE,$08,$B1,$04,$B5,$30,$80,$0C<br />
dc.b $B5,$08,$80,$04,$B6,$08,$B5,$10,$B9,$08,$04,$80<br />
dc.b $08,$B5,$34,$80,$0C,$B5,$BA,$08,$04,$80,$08,$B5<br />
dc.b $04,$B1,$24,$80,$0C,$B1,$08,$80,$04,$B3,$08,$B1<br />
dc.b $04,$B4,$0C,$B3,$08,$B1,$4C,$80,$0C,$B5,$08,$80<br />
dc.b $04,$B6,$08,$80,$04,$B5,$08,$80,$04,$B9,$08,$04<br />
dc.b $80,$08,$B5,$1C,$80,$0C,$BA,$18,$BC,$08,$BA,$04<br />
dc.b $BD,$18,$80,$0C,$BA,$04,$80,$08,$B8,$18,$B5,$B1<br />
dc.b $B3,$0C,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$0C,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$14,$B1,$04,$E6,$FF,$EF,$24,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $AC,$12,$AB,$0C,$AC,$06,$AB,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $B3,$12,$B2,$0C,$B3,$06,$B2,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $AC,$06,$80,$A9,$80,$AA,$80,$AB,$80,$AC,$AC,$A9<br />
dc.b $80,$AA,$80,$AC,$80,$A9,$80,$A9,$80,$AD,$80,$AD<br />
dc.b $80,$B0,$80,$B0,$80,$B3,$80,$B3,$80,$80,$0C,$A2<br />
dc.b $12,$80,$06,$A2,$12,$AD,$AE,$06,$80,$E6,$FD,$A2<br />
dc.b $6C,$F2<br />
MusCreditsDD59: dc.b $80,$0C,$C4,$06,$80,$C6,$80,$C4,$80,$C9,$80,$C9<br />
dc.b $80,$CB,$CD,$80,$0C,$80,$CB,$18,$C6,$06,$80,$C9<br />
dc.b $C9,$80,$CB,$0C,$80,$12,$80,$1E,$C7,$06,$C9,$C7<br />
dc.b $CB,$80,$C9,$80,$C7,$C9,$80,$C6,$E7,$C6,$30,$E7<br />
dc.b $18,$80,$18,$E3<br />
MusCreditsDD8D: dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
dc.b $06,$AB,$9F,$0C,$E3<br />
MusCreditsDD9D: dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$B6,$80,$18<br />
dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$30,$E7,$E3<br />
MusCreditsDDB5: dc.b $BF,$06,$BD,$BF,$12,$C2,$BF,$0C,$C1,$80,$06,$12<br />
dc.b $C4,$0C,$C2,$06,$80,$C9,$C6,$3C,$80,$06,$0C,$C7<br />
dc.b $12,$C6,$C4,$06,$C2,$C1,$18,$E3<br />
MusCreditsDDD5: dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$E3<br />
MusCreditsDDEA: dc.b $A2,$0C,$AE,$AC,$08,$AE,$04,$AC,$08,$A9,$04,$A7<br />
dc.b $08,$04,$E3<br />
MusCreditsDDF9: dc.b $80,$0C,$B1,$AE,$06,$06,$AC,$0C,$80,$B0,$AE,$06<br />
dc.b $06,$AC,$0C,$E3<br />
MusCreditsDE09: dc.b $AE,$AC,$06,$06,$AA,$0C,$80,$AC,$0C,$06,$06,$AE<br />
dc.b $AC,$E3<br />
MusCreditsDE17: dc.b $BA,$04,$80,$08,$B8,$18,$B5,$B1,$E3<br />
MusCreditsDE20: dc.b $AE,$06,$80,$AE,$80,$A9,$80,$A9,$80,$E3<br />
MusCreditsDE2A: dc.b $8A,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $E3<br />
MusCred_FM3: dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$18,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $B8,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $BD,$3C,$E9,$E8,$E6,$02,$E1,$03,$EF,$04,$E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$09,$E9,$0C,$E6,$FD,$E0,$40<br />
dc.b $F0,$06,$01,$05,$04<br />
dc.b $E1,$00<br />
- dc.b $9F,$0C,$AB,$06,$80,$A9,$80,$AB,$9F,$80,$9F,$AB<br />
dc.b $80,$A9,$80,$AB,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $9D,$0C,$A9,$06,$80,$A8,$80,$A9,$9C,$80,$9C,$A8<br />
dc.b $80,$A6,$80,$A8,$0C<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0D,$E6,$FB,$E0,$C0,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0F,$E0,$80,$E6,$0B,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$48,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$0C<br />
dc.b $F0,$18,$01,$03,$04<br />
dc.b $E6,$F3,$E0,$C0,$EF,$14,$A2,$14,$A4,$04,$A5,$04<br />
dc.b $80,$08,$A9,$04,$80,$08,$A8,$04,$80,$08,$A9,$04<br />
dc.b $80,$08,$AC,$08,$A9,$10<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$18,$E9,$F4,$E6,$08,$F4,$E0,$40,$80,$60,$80<br />
dc.b $30,$C6,$06,$80,$C2,$0C,$C4,$09,$C2,$03,$BF,$0C<br />
dc.b $80,$60,$80,$3C,$80,$60,$EF,$1B,$E6,$FB,$E0,$C0<br />
dc.b $E8,$06,$C4,$06,$06,$C6,$C9,$C9,$C6,$E8,$00,$CD<br />
dc.b $0C,$E8,$06,$C9,$06,$C6,$C9,$0C,$80,$80,$12,$EF<br />
dc.b $1C,$E8,$00,$BD,$BA,$0C,$E8,$06,$EF,$1B,$CE,$06<br />
dc.b $CE,$80,$CE,$80,$CE,$E8,$00,$CF,$0C,$D0,$80,$E8<br />
dc.b $06,$D0,$06,$06,$D2,$D0,$E8,$00,$CD,$0C,$E8,$06<br />
dc.b $C9,$06,$C6,$C9,$0C,$E8,$00,$EF,$1C,$80,$1E,$C2<br />
dc.b $0C,$C2,$BD,$06,$80,$60,$80,$60,$EF,$00,$E9,$18<br />
dc.b $80,$60,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC,$06<br />
dc.b $AE,$B1,$80,$B4,$B1,$80,$B1,$80,$60,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$60,$EF,$22,$E9,$DC,$E6,$FF,$E0,$80<br />
dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $CD,$30,$CB,$18,$CD,$0C,$CB,$C9,$30,$CE,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$FC,$80,$C4,$80,$C4,$80,$C6,$18,$08,$C4,$04<br />
dc.b $E9,$0C,$E6,$FF,$E0,$C0,$EF,$00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $CB,$12,$CB,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $D0,$12,$D0,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$CB,$12,$80,$06,$CB,$80,$CA,$12,$CB,$CA<br />
dc.b $0C,$C5,$18,$C8,$CB,$D1,$80,$0C,$CD,$80,$CD,$12<br />
dc.b $CC,$CD,$06,$80,$E6,$F8,$EF,$01,$E1,$03,$A2,$6C<br />
dc.b $F2<br />
MusCreditsDFF2: dc.b $80,$60,$BC,$06,$BD,$BC,$B8,$BA,$B6,$0C,$B8,$B3<br />
dc.b $B3,$06,$B6,$0C,$B8,$E3<br />
MusCreditsE004: dc.b $80,$0C,$CD,$04,$80,$10,$CD,$04,$80,$0C,$CD,$0C<br />
dc.b $CE,$08,$CD,$04,$80,$18,$80,$0C,$CB,$04,$80,$10<br />
dc.b $CB,$04,$80,$0C,$CB,$0C,$CD,$08,$CB,$04,$80,$18<br />
- dc.b $80,$0C,$C9,$04,$80,$10,$C9,$04,$80,$0C,$C9,$0C<br />
dc.b $CB,$08,$C9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E3<br />
MusCreditsE040: dc.b $80,$18,$B8,$0B,$80,$0D,$BA,$0C,$0B,$80,$19,$BD<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE051: dc.b $80,$0C,$C4,$80,$C4,$80,$C6,$80,$C6,$E3<br />
MusCreditsE05B: dc.b $CD,$06,$80,$CD,$80,$CA,$80,$CA,$80,$E3<br />
MusCreditsE065: dc.b $EF,$05,$E9,$F4,$C6,$60,$CB,$CD,$E7,$CD,$C6,$60<br />
dc.b $D0,$D0,$24,$D2,$60,$E7,$3C,$E3<br />
MusCred_FM4: dc.b $80,$60,$E9,$FB,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$1D,$E6,$02,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B5,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B8,$3C,$E6,$06,$EF,$05<br />
dc.b $F0,$02,$01,$FE,$04<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E9,$F4,$E6,$F7<br />
dc.b $F0,$0C,$01,$FB,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$25,$C3,$06,$C3,$80,$0C,$C3,$06,$C3,$05,$80<br />
dc.b $0D,$C3,$06,$C5,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$05,$F4,$E1,$02,$E0<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$0C,$80,$60,$EF,$10,$E6,$F7,$E1,$00,$E0<br />
dc.b $40,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $B3,$B7,$06,$AE,$0C,$B1,$B3,$B7,$06,$80,$B7,$AE<br />
dc.b $0C,$B1,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $EF,$15,$E6,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
- dc.b $EF,$14,$80,$4E,$E0,$40,$A1,$12,$A2,$06,$E0,$C0<br />
dc.b $EF,$16,$80,$30,$80,$06,$BA,$08,$B9,$04,$B8,$08<br />
dc.b $B7,$04,$B6,$08,$B5,$04<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E9,$F4,$E6,$02,$E0,$C0<br />
dc.b $F0,$01,$01,$03,$03<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$1E,$E0,$40,$E6,$FE,$E9,$F4,$F4,$E8<br />
dc.b $06,$80,$0C,$C1,$06,$12,$18,$C4,$06,$12,$0C,$EF<br />
dc.b $1C,$E0,$C0,$E6,$FA,$E8,$00,$C6,$E8,$06,$E6,$06<br />
dc.b $EF,$1E,$E0,$40,$C2,$06,$12,$18,$C4,$06,$12,$18<br />
dc.b $C1,$06,$12,$18,$C4,$06,$12,$0C,$EF,$1A,$E0,$C0<br />
dc.b $E9,$0C,$C6,$06,$C6,$80,$C6,$80,$C6,$E8,$00,$C7<br />
dc.b $0C,$C8,$06,$EF,$1E,$E0,$40,$E9,$F4,$E8,$06,$80<br />
dc.b $C4,$06,$12,$0C,$80,$60,$EF,$20,$E9,$18,$E6,$FA<br />
dc.b $E0,$C0,$E8,$00,$B4,$03,$E7,$B6,$5D,$B3,$03,$E7<br />
dc.b $B5,$5D,$B1,$03,$E7,$B3,$5D,$B3,$03,$E7,$B5,$5D<br />
dc.b $80,$60,$EF,$22,$E0,$40,$E9,$E8,$E6,$04,$80,$30<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $C9,$30,$C8,$18,$C9,$0C,$C8,$C6,$30,$C9,$80,$0C<br />
dc.b $C1,$80,$C1,$80,$C2,$80,$C2,$E6,$04,$80,$C1,$80<br />
dc.b $C1,$80,$C2,$80,$C2,$E6,$FC,$80,$C1,$80,$C1,$80<br />
dc.b $C2,$18,$08,$C1,$04,$E9,$0C,$E6,$FF,$E0,$C0,$EF<br />
dc.b $00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $C8,$12,$C8,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $CB,$12,$CB,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E1,$03,$E6,$08,$F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $E6,$F0,$EF,$01<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $A2,$6C,$F2<br />
MusCreditsE22D: dc.b $A2,$14,$A4,$04,$A5,$04,$80,$08,$A9,$04,$80,$08<br />
dc.b $A8,$04,$80,$08,$A9,$04,$80,$08,$AC,$08,$A9,$10<br />
dc.b $E3<br />
MusCreditsE246: dc.b $80,$0C<br />
dc.b $C9,$04,$80,$10<br />
dc.b $C9,$04,$80,$0C<br />
dc.b $C9,$0C<br />
dc.b $CB,$08<br />
dc.b $C9,$04,$80,$18,$80,$0C<br />
dc.b $C8,$04,$80,$10<br />
dc.b $C8,$04,$80,$0C<br />
dc.b $C8,$0C<br />
dc.b $C9,$08<br />
dc.b $C8,$04,$80,$18,$80,$0C<br />
<br />
if 1==1<br />
; this part of the original credits music (CNZ PSG) sounds buggy (dissonant)<br />
dc.b $C6,$04,$80,$10<br />
dc.b $C6,$04,$80,$0C<br />
dc.b $C6,$0C<br />
dc.b $C8,$08<br />
dc.b $C6,$04,$80,$18,$80,$0C<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $C7,$08<br />
else<br />
; replace the above block of notes with this to fix it.<br />
; (I'm not sure why, but the notes $C6 and $C7 are broken here,<br />
; so I've replaced them with pitch-shifted $C8s)<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$10 ; $C6<br />
dc.b $C8,$04,$80,$0C ; $C6<br />
dc.b $C8,$0C ; $C6<br />
dc.b $E1,0<br />
dc.b $C8,$08<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$24 ; $C6<br />
dc.b $E1,0<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $E1,-32<br />
dc.b $C8,$08 ; $C7<br />
dc.b $E1,0<br />
endif<br />
<br />
dc.b $C5,$04,$80,$18<br />
dc.b $E3<br />
MusCreditsE28F: dc.b $EF,$25,$80,$0C,$D0,$D4,$D7,$DB,$0C,$80,$06,$DB<br />
dc.b $0C,$DC,$06,$DB,$0C,$DD,$60,$DE,$0C,$80,$DE,$80<br />
dc.b $80,$06,$DD,$12,$DE,$0C,$E3<br />
MusCreditsE2AE: dc.b $80,$18,$B5,$0B,$80,$0D,$B7,$0C,$0B,$80,$19,$BA<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE2BF: dc.b $C3,$05,$80,$13,$C3,$12,$C3,$05,$E3<br />
MusCreditsE2C8: dc.b $CA,$06,$80,$CA,$80,$C6,$80,$C6,$80,$E3<br />
MusCreditsE2D2: dc.b $AF,$0C,$B3,$06,$B6,$0C,$AF,$B1,$06,$80,$B1,$0C<br />
dc.b $B5,$06,$B8,$0C,$B1,$06,$80,$B6,$0C,$BA,$06,$B1<br />
dc.b $0C,$B5,$B6,$BA,$06,$80,$BA,$AF,$0C,$B3,$B5,$B8<br />
dc.b $06,$B2,$0C,$B3,$B5,$B8,$06,$80,$B8,$B2,$0C,$B5<br />
dc.b $E3<br />
MusCred_FM5: dc.b $E9,$E8,$E6,$F8,$E1,$05,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$18,$E6,$08,$E1,$00,$EF,$02<br />
dc.b $F0,$0C,$01,$FC,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B1,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B5,$3C,$E9,$F4,$E6,$07<br />
dc.b $F0,$30,$01,$04,$04<br />
dc.b $EF,$06<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E6,$F6<br />
dc.b $F0,$0C,$01,$05,$04<br />
dc.b $E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$25,$C6,$06,$C6,$80,$0C,$C6,$06,$C6,$05,$80<br />
dc.b $0D,$C6,$06,$C8,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$E6,$05,$F4,$80,$01,$EF,$0C,$E1<br />
dc.b $FE,$E0,$40,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $23,$80,$0C,$80,$60,$EF,$11,$E9,$F4,$E6,$F4,$E1<br />
dc.b $00,$E0,$C0<br />
dc.b $F0,$06,$01,$06,$05<br />
dc.b $80,$60,$80,$30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60<br />
dc.b $80,$06,$CB,$80,$CB,$C9,$80,$C9,$80,$C7,$80,$C7<br />
dc.b $80,$C6,$03,$80,$C6,$80,$09,$80,$06,$80,$60,$80<br />
dc.b $30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60,$EF,$16,$E9<br />
dc.b $0C,$E6,$04,$F4,$E0,$80,$80,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
dc.b $80,$2F,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$30,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$60,$EF,$19,$E9,$F4,$E0,$C0,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$27,$B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$2A,$80,$60,$EF,$1E,$E9,$F4,$E8,$06<br />
- dc.b $80,$0C,$C4,$06,$12,$18,$C8,$06,$12,$0C,$80,$C6<br />
dc.b $06,$12,$18,$C8,$06,$12,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$20,$E8,$00,$E9,$18,$E6,$FA,$B8,$03<br />
dc.b $E7,$BA,$5D,$B6,$03,$E7,$B8,$5D,$B4,$03,$E7,$B6<br />
dc.b $5D,$B6,$03,$E7,$B8,$5D,$80,$60,$EF,$22,$E9,$F4<br />
dc.b $E6,$05<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$A7,$04,$A9,$08,$AC,$04,$B1,$30,$80,$0C<br />
dc.b $B1,$08,$80,$04,$B3,$08,$B1,$10,$B5,$08,$B5,$04<br />
dc.b $80,$08,$B0,$34,$80,$0C,$B0,$B5,$08,$04,$80,$08<br />
dc.b $B1,$04,$AE,$24,$80,$0C,$AE,$08,$80,$04,$B0,$08<br />
dc.b $AE,$04,$B1,$0C,$AF,$08,$AD,$4C,$80,$0C,$B1,$08<br />
dc.b $80,$04,$B3,$08,$80,$04,$B1,$08,$80,$04,$B5,$08<br />
dc.b $B5,$04,$80,$08,$B0,$1C,$80,$0C,$B5,$18,$B8,$08<br />
dc.b $B5,$04,$BA,$18,$80,$0C,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$04,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$F8,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$AA,$14,$A9,$04,$E6,$0C,$EF,$23,$E1,$03<br />
dc.b $E6,$F7,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E6,$09<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $F2<br />
MusCreditsE4CD: dc.b $80,$1E,$EF,$14,$A4,$12,$A5,$06,$EF,$16,$80,$30<br />
dc.b $80,$06,$BD,$08,$BC,$04,$BB,$08,$BA,$04,$B9,$08<br />
dc.b $B8,$04,$E3<br />
MusCreditsE4E8: dc.b $80,$18,$B1,$0B,$80,$0D,$B3,$0C,$0B,$80,$19,$B6<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE4F9: dc.b $C6,$05,$80,$13,$C6,$12,$C6,$05,$E3<br />
MusCreditsE502: dc.b $80,$60,$AC,$06,$80,$AC,$0C,$AE,$06,$80,$AE,$0C<br />
dc.b $AF,$06,$E3<br />
MusCred_PSG1: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG1)<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$F4,$E6,$FE,$F5,$01,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $AE,$B3,$06,$AC,$0C,$AE,$AE,$B3,$06,$80,$B3,$AB<br />
dc.b $0C,$AE,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $F5,$0B,$80,$04,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$20,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$F5,$00,$E8,$06,$E9,$F4,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$80,$C2,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$04,$80,$C2,$80,$0C,$C2,$80,$60,$F5,$08,$E9<br />
dc.b $04,$EC,$02,$E8,$06<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F0,$EC,$FF,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $E9,$18,$EC,$02,$B5,$30,$B3,$18,$B5,$0C,$B3,$B1<br />
dc.b $30,$B6,$EC,$FE,$80,$0C,$B8,$80,$B8,$80,$BA,$80<br />
dc.b $BA,$EC,$03,$C4,$18,$C1,$BD,$BF,$0C,$80,$EC,$FC<br />
dc.b $80,$B8,$80,$B8,$80,$BA,$18,$08,$B8,$04,$E9,$F4<br />
dc.b $EC,$01,$F5,$05<br />
- dc.b $80,$60<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$C8,$12,$80,$06,$C8,$80,$C6,$12,$C8,$C6<br />
dc.b $0C,$C1,$18,$C5,$C8,$CB,$80,$0C,$CA,$80,$CA,$12<br />
dc.b $C9,$CA,$06,$80,$09,$E9,$30,$EC,$FC,$F6<br />
dc.w z80_ptr(MusCreditsE770)<br />
dc.b $F2<br />
MusCreditsE618: dc.b $80,$0C,$BD,$06,$12,$18,$C4,$06,$12,$0C,$80,$C2<br />
dc.b $06,$12,$18,$C4,$06,$12,$0C,$E3<br />
MusCreditsE62C: dc.b $80,$60,$80,$0C,$C2,$80,$C2,$80,$E3<br />
MusCreditsE635: dc.b $AC,$0C,$AF,$06,$B3,$0C,$AC,$AC,$06,$80,$AC,$0C<br />
dc.b $AF,$06,$B5,$0C,$AC,$06,$80,$06,$B1,$0C,$B6,$06<br />
dc.b $AE,$0C,$B1,$B3,$B6,$06,$80,$B6,$AA,$0C,$AF,$AF<br />
dc.b $B5,$06,$AC,$0C,$AF,$B2,$B5,$06,$80,$B5,$AE,$0C<br />
dc.b $B2,$E3<br />
MusCred_PSG2: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG2)<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$0C,$EC,$FD,$F5,$04,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
dc.b $F0,$03,$02,$01,$05<br />
dc.b $F5,$0A,$E9,$E8,$EC,$02,$80,$30,$80,$80,$BD,$06<br />
dc.b $BF,$C6,$C2,$1E,$80,$60,$80,$06,$C6,$80,$C6,$C4<br />
dc.b $80,$C4,$80,$C3,$80,$C3,$80,$BF,$03,$80,$BF,$80<br />
dc.b $09,$80,$06,$80,$30,$80,$80,$BD,$06,$BF,$C6,$C2<br />
dc.b $1E,$80,$60,$F4<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$00,$EC,$FE,$E8,$06,$80,$60,$80,$0C,$BF,$80<br />
dc.b $BF,$80,$BF,$80,$BF,$80,$60,$80,$0C,$BF,$80,$BF<br />
dc.b $80,$BF,$04,$80,$BF,$80,$0C,$BF,$80,$60,$EC,$02<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F4,$EC,$FF,$E9,$E8,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $E9,$18,$EC,$02,$B1,$30,$B0,$18,$B1,$0C,$B0,$AE<br />
dc.b $30,$B1,$EC,$FE,$80,$0C,$B5,$80,$B5,$80,$B6,$80<br />
dc.b $B6,$EC,$03,$80,$B1,$80,$B1,$80,$B1,$80,$B1,$EC<br />
dc.b $FC,$80,$B1,$80,$B1,$80,$B1,$18,$08,$B1,$04,$EC<br />
dc.b $01,$E9,$18,$F5,$05,$E1,$01,$80,$60,$80,$80,$80<br />
dc.b $80,$80,$80,$0C,$CD,$06,$80,$D4,$CD,$80,$0C,$CD<br />
dc.b $06,$80,$D4,$CD,$80,$18,$80,$54,$E9,$24,$EC,$FD<br />
MusCreditsE770: dc.b $F5,$03,$80,$06<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$FF<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$01<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusCred_PSG3: dc.b $F3,$E7,$80,$60,$F5,$02<br />
- dc.b $C6,$0C,$0C,$0C,$06,$06,$0C,$0C,$06,$06,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$1F<br />
dc.w z80_ptr(-)<br />
dc.b $0C,$F5,$03,$C6,$F5,$02<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $06,$06,$06,$06<br />
dc.b $F7,$01,$04<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$04,$EC,$02<br />
- dc.b $E8,$03,$C6,$06,$06,$E8,$00,$0C<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$02,$EC,$FD<br />
- dc.b $80,$0C,$C6,$06,$80,$07,$C6,$06,$80,$11,$C6,$0C<br />
dc.b $80,$06,$C6,$0C,$80,$06,$C6,$80<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$02<br />
- dc.b $C6,$0C,$08,$04<br />
dc.b $F7,$00,$18<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$0C,$0C,$08,$04<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$04,$EC,$02<br />
- dc.b $C6,$06,$06,$0C<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EC,$FF<br />
- dc.b $F5,$01,$C6,$0C,$F5,$02,$EC,$FF,$08,$F5,$01,$EC<br />
dc.b $01,$04<br />
dc.b $F7,$00,$27<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$FF,$F5,$04<br />
- dc.b $E8,$03,$C6,$0C,$E8,$0C,$0C<br />
dc.b $F7,$00,$1E<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$03,$C6,$06,$E8,$0E,$12,$E8,$03,$0C,$E8,$0F<br />
dc.b $0C,$F2<br />
MusCred_DAC: dc.b $82,$06,$82,$82,$82,$82,$0C,$06,$0C,$06,$0C,$0C<br />
dc.b $0C<br />
- dc.b $81,$18,$82<br />
dc.b $F7,$00,$0E<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C<br />
- dc.b $82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EA,$EA,$F8<br />
dc.w z80_ptr(MusCreditsEA6E)<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$82,$06,$82,$82,$82,$81,$0C,$82,$06,$82<br />
dc.b $81,$81,$82,$82,$82,$82<br />
- dc.b $81,$18,$82,$81,$82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$82,$82,$82,$06,$82,$8C,$8C,$8D,$8D<br />
dc.b $8E,$8E,$F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$18,$82,$0C,$81,$18,$82,$0C,$82,$82,$06,$82<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$0C,$82,$82,$82,$8D,$06,$8D,$8E,$8E,$82,$06<br />
dc.b $82,$8D,$0C,$82,$0C,$82,$06,$82,$80,$82,$82,$0C<br />
MusCreditsE8E5: dc.b $82,$0C,$82,$82,$06,$82,$8D,$8D<br />
- dc.b $81,$0C,$8F,$06,$90,$82,$0C,$90,$06,$91,$81,$0C<br />
dc.b $8F,$06,$91,$82,$0C,$8F,$06,$91<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$8F,$06,$91,$82,$0C,$8F,$06,$91,$8C,$06<br />
dc.b $03,$03,$8D,$06,$8D,$8D,$8E,$8E,$8E,$81,$06,$0C<br />
dc.b $82,$06,$80,$0C,$81,$82,$8E,$82,$06,$82,$82,$82<br />
- dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$12,$8C,$06<br />
dc.b $82,$0C,$83,$06,$81,$80<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$06,$82,$06<br />
dc.b $81,$0C,$06,$82,$0C,$08,$04,$EA,$CD,$82,$30,$82<br />
dc.b $0C,$82,$82,$82,$08,$04,$F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$04,$82,$08,$04<br />
dc.b $08,$04,$04,$04,$04,$08,$04,$EA,$C5<br />
- dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82,$0C,$06<br />
dc.b $06,$81,$0C,$82,$06,$82,$82,$82,$8D,$0C,$82,$0C<br />
dc.b $0C,$0C,$06,$06<br />
- dc.b $81,$0C,$81,$82,$80,$81,$81,$82,$83<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$82,$82,$82,$82,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $81,$06,$81,$82,$82,$81,$82,$81,$81,$82,$02,$82<br />
dc.b $04,$81,$0C,$06,$82,$0C,$06,$06,$81,$18,$82,$0C<br />
dc.b $81,$81,$18,$82,$81,$06,$81,$12,$82,$0C,$81,$81<br />
dc.b $18,$82,$81,$18,$82,$0C,$81,$81,$18,$82,$81,$06<br />
dc.b $81,$12,$82,$0C,$0C,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $82,$02,$04,$81,$0C,$06,$0C,$82,$02,$04,$81,$0C<br />
dc.b $06,$0C,$82,$06,$82,$82,$82,$EA,$C0,$81,$0C,$82<br />
dc.b $81,$82,$81,$82,$81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$0F<br />
dc.w z80_ptr(-)<br />
dc.b $81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$13<br />
dc.w z80_ptr(-)<br />
dc.b $82,$08,$0C,$04,$81,$0C,$82,$81,$82,$81,$0C,$82<br />
dc.b $81,$06,$80,$02,$82,$82,$82,$09,$82,$03<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$06,$80,$02,$82,$82,$82,$09,$82<br />
dc.b $03<br />
dc.b $F7,$01,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$82,$81,$06,$82,$12,$82,$0C,$81<br />
dc.b $F2<br />
MusCreditsEA6E: dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$83,$E3<br />
MusCreditsEA84: dc.b $81,$18,$82,$0C,$81,$18,$0C,$82,$81,$81,$18,$82<br />
dc.b $0C,$81,$12,$81,$82,$18,$81,$82,$0C,$81,$18,$0C<br />
dc.b $82,$81,$E3<br />
MusCreditsEA9F: dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$0C,$82,$04,$81<br />
dc.b $0C,$82,$81,$81,$08,$0C,$04,$82,$0C,$81,$08,$0C<br />
dc.b $82,$04,$81,$0C,$82,$82,$08,$04,$E3,$81,$06,$80<br />
dc.b $03,$81,$81,$06,$82,$81,$06,$80,$03,$81,$81,$06<br />
dc.b $82,$03,$82,$81,$06,$80,$03,$81,$81,$06,$82,$E3<br />
MusCred_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$01,$1F,$1F,$FF,$0F,$17,$27,$28,$80<br />
dc.b $08,$09,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$25,$0E,$30,$84<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$0B,$0D,$19,$0B,$80,$80<br />
dc.b $08,$0A,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$24,$13,$2D,$80<br />
dc.b $3D,$01,$51,$21,$01,$12,$14,$14,$0F,$0A,$05,$05<br />
dc.b $05,$00,$00,$00,$00,$2B,$2B,$2B,$1B,$19,$80,$80,$80<br />
dc.b $04,$57,$70,$02,$50,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$06,$00,$0A,$0A,$00,$00,$0F,$0F,$1A,$10,$80,$80<br />
dc.b $35,$01,$13,$01,$00,$1F,$18,$1D,$19,$00,$06,$09<br />
dc.b $0D,$00,$02,$00,$03,$00,$15,$06,$16,$1E,$83,$80,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1A,$16,$88,$88<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$14,$0F,$37,$80<br />
dc.b $3B,$0F,$01,$06,$02,$DF,$1F,$1F,$DF,$0C,$0A,$00<br />
dc.b $03,$0F,$00,$00,$01,$F3,$55,$05,$5C,$22,$22,$20,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1C,$14,$84,$80<br />
dc.b $3A,$69,$50,$70,$60,$1C,$1A,$18,$18,$10,$02,$0C<br />
dc.b $09,$08,$06,$06,$03,$F9,$06,$56,$06,$28,$14,$15,$00<br />
dc.b $3D,$00,$02,$01,$01,$4C,$50,$0F,$12,$0C,$00,$02<br />
dc.b $05,$01,$00,$00,$00,$28,$2A,$29,$19,$1A,$06,$00,$00<br />
dc.b $2C,$71,$31,$71,$31,$1F,$1F,$16,$16,$00,$00,$0F<br />
dc.b $0F,$00,$00,$0F,$0F,$00,$00,$FA,$FA,$15,$14,$00,$00<br />
dc.b $18,$37,$31,$32,$31,$9E,$1C,$DC,$9C,$0D,$04,$06<br />
dc.b $01,$08,$03,$0A,$05,$B6,$36,$B6,$28,$2C,$14,$22,$00<br />
dc.b $3D,$01,$02,$02,$02,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$24,$18,$18,$18,$1C,$82,$82,$82<br />
dc.b $32,$71,$33,$0D,$01,$5F,$5F,$99,$94,$05,$05,$05<br />
dc.b $07,$02,$02,$02,$02,$11,$11,$11,$72,$23,$26,$2D,$80<br />
dc.b $3A,$32,$52,$01,$31,$1F,$1F,$1F,$18,$01,$00,$1F<br />
dc.b $00,$00,$00,$0F,$00,$5A,$03,$0F,$1A,$3B,$4F,$30,$00<br />
dc.b $3C,$42,$32,$41,$41,$12,$12,$12,$12,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$06,$06,$08,$08,$24,$24,$08,$08<br />
dc.b $31,$34,$30,$35,$31,$DF,$9F,$DF,$9F,$0C,$0C,$07<br />
dc.b $09,$07,$07,$07,$08,$2F,$1F,$1F,$2F,$17,$14,$32,$80<br />
dc.b $3D,$01,$01,$01,$01,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$20,$1A,$1A,$1A,$19,$84,$84,$84<br />
dc.b $24,$70,$30,$74,$38,$12,$1F,$1F,$1F,$05,$05,$03<br />
dc.b $03,$05,$05,$03,$03,$36,$26,$2C,$2C,$0A,$06,$08,$08<br />
dc.b $3A,$01,$01,$01,$02,$8D,$07,$07,$52,$09,$00,$00<br />
dc.b $03,$01,$02,$02,$00,$5F,$0F,$0F,$2F,$18,$18,$22,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$03,$03,$08,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$17,$20,$28,$80<br />
dc.b $20,$7A,$00,$31,$00,$9F,$DC,$D8,$DF,$10,$04,$0A<br />
dc.b $04,$0F,$08,$08,$08,$5F,$BF,$5F,$BF,$14,$17,$2B,$80<br />
dc.b $3A,$61,$51,$08,$02,$5D,$5D,$5D,$50,$04,$1F,$0F<br />
dc.b $1F,$00,$00,$00,$00,$1F,$0F,$5F,$0F,$22,$22,$1E,$80<br />
dc.b $02,$01,$02,$55,$04,$92,$8E,$8D,$54,$0D,$00,$0C<br />
dc.b $03,$00,$00,$00,$00,$FF,$0F,$2F,$5F,$16,$1D,$2A,$80<br />
dc.b $02,$75,$73,$71,$31,$1F,$96,$58,$9F,$01,$03,$1B<br />
dc.b $08,$01,$01,$04,$05,$FF,$3F,$2F,$2F,$24,$30,$29,$80<br />
dc.b $20,$66,$60,$65,$60,$DF,$9F,$DF,$1F,$00,$09,$06<br />
dc.b $0C,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$1C,$16,$3A,$80<br />
dc.b $0D,$32,$06,$08,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$86,$80,$8D<br />
dc.b $38,$3A,$11,$0A,$02,$D4,$50,$14,$0E,$05,$02,$08<br />
dc.b $88,$00,$00,$00,$00,$99,$09,$09,$1A,$2D,$19,$2C,$86<br />
dc.b $0D,$32,$02,$04,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$8B,$86,$93<br />
dc.b $3A,$20,$60,$23,$01,$1E,$1F,$1F,$1F,$0A,$0B,$0A<br />
dc.b $0A,$05,$0A,$07,$08,$A4,$96,$85,$78,$21,$28,$25,$00<br />
dc.b $3A,$32,$32,$56,$42,$8D,$15,$4F,$52,$06,$07,$08<br />
dc.b $04,$02,$00,$00,$00,$18,$28,$18,$28,$19,$2A,$20,$00<br />
dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$19,$13,$37,$80<br />
dc.b $3D,$01,$02,$02,$02,$14,$8C,$0E,$0E,$08,$02,$05<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$1A,$80,$80,$80<br />
; end of Mus_Credits<br />
<br />
; ------------------------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ------------------------------------------------------------------------------------------<br />
; WARNING the sound driver treats certain sounds specially<br />
; going by the ID of the sound.<br />
; SndID_Ring, SndID_RingLeft, SndID_Gloop, SndID_SpindashRev<br />
; are referenced by the sound driver directly.<br />
; If needed you can change this in s2.sounddriver.asm<br />
<br />
<br />
; NOTE: the exact order of this list determines the priority of each sound, since it determines the sound's SndID.<br />
; a sound can get dropped if a higher-priority sound is already playing.<br />
; the rules for sound priority are currently unknown, but you can generally swap pointer lines around to resolve priority conflicts.<br />
; loc_FEE91: SoundPoint:<br />
SoundIndex:<br />
SndPtr_Jump: rom_ptr_z80 Sound20 ; jumping sound<br />
SndPtr_Checkpoint: rom_ptr_z80 Sound21 ; checkpoint ding-dong sound<br />
SndPtr_SpikeSwitch: rom_ptr_z80 Sound22 ; spike switch sound<br />
SndPtr_Hurt: rom_ptr_z80 Sound23 ; hurt sound<br />
SndPtr_Skidding: rom_ptr_z80 Sound24 ; skidding sound<br />
SndPtr_BlockPush: rom_ptr_z80 Sound25 ; block push sound<br />
SndPtr_HurtBySpikes: rom_ptr_z80 Sound26 ; spiky impalement sound<br />
SndPtr_Sparkle: rom_ptr_z80 Sound27 ; sparkling sound<br />
SndPtr_Beep: rom_ptr_z80 Sound28 ; short beep<br />
SndPtr_Bwoop: rom_ptr_z80 Sound29 ; bwoop<br />
SndPtr_Splash: rom_ptr_z80 Sound2A ; splash sound<br />
SndPtr_Swish: rom_ptr_z80 Sound2B ; swish<br />
SndPtr_BossHit: rom_ptr_z80 Sound2C ; boss hit<br />
SndPtr_InhalingBubble: rom_ptr_z80 Sound2D ; inhaling a bubble<br />
SndPtr_ArrowFiring:<br />
SndPtr_LavaBall: rom_ptr_z80 Sound2E ; arrow firing<br />
SndPtr_Shield: rom_ptr_z80 Sound2F ; shield sound<br />
SndPtr_LaserBeam: rom_ptr_z80 Sound30 ; laser beam<br />
SndPtr_Zap: rom_ptr_z80 Sound31 ; zap<br />
SndPtr_Drown: rom_ptr_z80 Sound32 ; drownage<br />
SndPtr_FireBurn: rom_ptr_z80 Sound33 ; fire + burn<br />
SndPtr_Bumper: rom_ptr_z80 Sound34 ; bumper bing<br />
SndPtr_Ring:<br />
SndPtr_RingRight: rom_ptr_z80 Sound35 ; ring sound<br />
SndPtr_SpikesMove: rom_ptr_z80 Sound36<br />
SndPtr_Rumbling: rom_ptr_z80 Sound37 ; rumbling<br />
rom_ptr_z80 Sound38<br />
SndPtr_Smash: rom_ptr_z80 Sound39 ; smash/breaking<br />
rom_ptr_z80 Sound3A ; nondescript ding<br />
SndPtr_DoorSlam: rom_ptr_z80 Sound3B ; door slamming shut<br />
SndPtr_SpindashRelease: rom_ptr_z80 Sound3C ; spindash unleashed<br />
SndPtr_Hammer: rom_ptr_z80 Sound3D ; slide-thunk<br />
SndPtr_Roll: rom_ptr_z80 Sound3E ; rolling sound<br />
SndPtr_ContinueJingle: rom_ptr_z80 Sound3F ; got continue<br />
SndPtr_CasinoBonus: rom_ptr_z80 Sound40 ; short bonus ding<br />
SndPtr_Explosion: rom_ptr_z80 Sound41 ; badnik bust<br />
SndPtr_WaterWarning: rom_ptr_z80 Sound42 ; warning ding-ding<br />
SndPtr_EnterGiantRing: rom_ptr_z80 Sound43 ; special stage ring flash (unused)<br />
SndPtr_BossExplosion: rom_ptr_z80 Sound44 ; thunk<br />
SndPtr_TallyEnd: rom_ptr_z80 Sound45 ; cha-ching<br />
SndPtr_RingSpill: rom_ptr_z80 Sound46 ; losing rings<br />
rom_ptr_z80 Sound47 ; chain pull chink-chink<br />
SndPtr_Flamethrower: rom_ptr_z80 Sound48 ; flamethrower<br />
SndPtr_Bonus: rom_ptr_z80 Sound49 ; bonus pwoieeew (unused)<br />
SndPtr_SpecStageEntry: rom_ptr_z80 Sound4A ; special stage entry<br />
SndPtr_SlowSmash: rom_ptr_z80 Sound4B ; slower smash/crumble<br />
SndPtr_Spring: rom_ptr_z80 Sound4C ; spring boing<br />
SndPtr_Blip: rom_ptr_z80 Sound4D ; selection blip<br />
SndPtr_RingLeft: rom_ptr_z80 Sound4E ; another ring sound (only plays in the left speaker?)<br />
SndPtr_Signpost: rom_ptr_z80 Sound4F ; signpost spin sound<br />
SndPtr_CNZBossZap: rom_ptr_z80 Sound50 ; mosquito zapper<br />
rom_ptr_z80 Sound51<br />
rom_ptr_z80 Sound52<br />
SndPtr_Signpost2P: rom_ptr_z80 Sound53<br />
SndPtr_OOZLidPop: rom_ptr_z80 Sound54 ; OOZ lid pop sound<br />
SndPtr_SlidingSpike: rom_ptr_z80 Sound55<br />
SndPtr_CNZElevator: rom_ptr_z80 Sound56<br />
SndPtr_PlatformKnock: rom_ptr_z80 Sound57<br />
SndPtr_BonusBumper: rom_ptr_z80 Sound58 ; CNZ bonusy bumper sound<br />
SndPtr_LargeBumper: rom_ptr_z80 Sound59 ; CNZ baaang bumper sound<br />
SndPtr_Gloop: rom_ptr_z80 Sound5A ; CNZ gloop / water droplet sound<br />
SndPtr_PreArrowFiring: rom_ptr_z80 Sound5B<br />
SndPtr_Fire: rom_ptr_z80 Sound5C<br />
SndPtr_ArrowStick: rom_ptr_z80 Sound5D ; chain clink<br />
SndPtr_Helicopter:<br />
SndPtr_WingFortress: rom_ptr_z80 Sound5E ; helicopter<br />
SndPtr_SuperTransform: rom_ptr_z80 Sound5F<br />
SndPtr_SpindashRev: rom_ptr_z80 Sound60 ; spindash charge<br />
SndPtr_Rumbling2: rom_ptr_z80 Sound61 ; rumbling<br />
SndPtr_CNZLaunch: rom_ptr_z80 Sound62<br />
SndPtr_Flipper: rom_ptr_z80 Sound63 ; CNZ blooing bumper<br />
SndPtr_HTZLiftClick: rom_ptr_z80 Sound64 ; HTZ track click sound<br />
SndPtr_Leaves: rom_ptr_z80 Sound65 ; kicking up leaves sound<br />
SndPtr_MegaMackDrop: rom_ptr_z80 Sound66 ; leaf splash?<br />
SndPtr_DrawbridgeMove: rom_ptr_z80 Sound67<br />
SndPtr_QuickDoorSlam: rom_ptr_z80 Sound68 ; door slamming quickly (seems unused)<br />
SndPtr_DrawbridgeDown: rom_ptr_z80 Sound69<br />
SndPtr_LaserBurst: rom_ptr_z80 Sound6A ; robotic laser burst<br />
SndPtr_Scatter:<br />
SndPtr_LaserFloor: rom_ptr_z80 Sound6B ; scatter<br />
SndPtr_Teleport: rom_ptr_z80 Sound6C<br />
SndPtr_Error: rom_ptr_z80 Sound6D ; error sound<br />
SndPtr_MechaSonicBuzz: rom_ptr_z80 Sound6E ; silver sonic buzz saw<br />
SndPtr_LargeLaser: rom_ptr_z80 Sound6F<br />
SndPtr_OilSlide: rom_ptr_z80 Sound70<br />
SndPtr__End:<br />
<br />
; There are many non-relative pointers in these sound effects,<br />
; so the sounds shouldn't simply be BINCLUDE'd.<br />
; They could be included as separate .asm files using "include" instead of "binclude",<br />
; but I wanted to minimize the number of included asm files.<br />
<br />
; some comments on what the various script commands do (after the header):<br />
; 0x00-0x7F sets the note duration (of the previous note and following notes)<br />
; 0x81-0xDF plays a note (the valid range may be smaller for PSG or DAC)<br />
; 0x80 plays silence<br />
; 0xE0-0xFF does special things. I won't list them here... search for "Coordination flags" sonic 2.<br />
<br />
; the FM voices (poorly named "ssamp" or "samples" below)<br />
; are 25 bytes each and go directly to YM2612 registers.<br />
; they can be hard to edit (there's an art to it)<br />
; but search for sonic "Voice editing" for more info if you want to try.<br />
<br />
; jumping sound<br />
Sound20: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$F400<br />
+ dc.b $F5,$00,$9E,$05,$F0,$02,$01,$F8,$65,$A3,$15,$F2<br />
<br />
; checkpoint ding-dong sound<br />
Sound21: dc.w z80_ptr(ssamp21),$0101<br />
dc.w $8005,z80_ptr(+),$0001<br />
ssamp21: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
+ dc.b $EF,$00,$BD,$06,$BA,$16,$F2<br />
<br />
; spike switch sound<br />
Sound22: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C0,$04,$CA,$04<br />
- dc.b $C0,$01,$EC<br />
dc.w $01F7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; hurt sound<br />
Sound23: dc.w z80_ptr(ssamp23),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B0,$07,$E7,$AD<br />
- dc.b $01,$E6<br />
dc.w $01F7,$002F,z80_ptr(-)<br />
dc.b $F2<br />
ssamp23: dc.b $30,$30,$30,$30,$30,$9E,$DC,$D8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$14,$14,$3C,$80<br />
<br />
; skidding sound<br />
Sound24: dc.w $0000,$0102 ; sound header... no sample and 2 script entries<br />
dc.w $80A0,z80_ptr(+),$F400 ; entry 1 header<br />
dc.w $80C0,z80_ptr(++),$F400 ; entry 2 header<br />
+ dc.b $F5,$00,$AF,$01,$80,$AF,$80,$03 ; script entry 1<br />
- dc.b $AF,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 1 end<br />
+ dc.b $F5,$00,$80,$01,$AD,$80,$AD,$80,$03 ; script entry 2<br />
- dc.b $AD,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 2 end<br />
<br />
; block push sound<br />
Sound25: dc.w z80_ptr(ssamp25),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$01,$8B,$0A,$80,$02,$F2<br />
ssamp25: dc.b $FA,$21,$10,$30,$32,$2F,$2F,$1F,$2F,$05,$09,$08<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
; spiky impalement sound<br />
Sound26: dc.w z80_ptr(ssamp26),$0101<br />
dc.w $8005,z80_ptr(+),$F200<br />
+ dc.b $EF,$00,$F0,$01,$01,$10,$FF,$CF,$05,$D7,$25,$F2<br />
ssamp26: dc.b $3B,$3C,$30,$39,$31,$DF,$1F,$1F,$DF,$04,$04,$05<br />
dc.b $01,$04,$04,$04,$02,$FF,$1F,$0F,$AF,$29,$0F,$20,$80<br />
<br />
; sparkling sound<br />
Sound27: dc.w z80_ptr(ssamp27),$0101<br />
dc.w $8004,z80_ptr(+),$0C1C<br />
+ dc.b $EF,$00,$C1,$05,$C4,$05,$C9,$2B,$F2<br />
ssamp27: dc.b $07,$73,$33,$33,$73,$0F,$19,$14,$1A,$0A,$0A,$0A<br />
dc.b $0A,$0A,$0A,$0A,$0A,$57,$57,$57,$57,$00,$00,$00,$00<br />
<br />
; short beep<br />
Sound28: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$E803<br />
+ dc.b $F5,$04,$CB,$04,$F2<br />
<br />
; bwoop<br />
Sound29: dc.w $0000,$0101<br />
dc.w $80A0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$E6,$35,$8E,$06,$F2<br />
<br />
; splash sound<br />
Sound2A: dc.w z80_ptr(ssamp2A),$0102<br />
dc.w $80C0,z80_ptr(+),$0000<br />
dc.w $8005,z80_ptr(++),$0003<br />
+ dc.b $F5,$00,$F3,$E7,$C2,$05,$C6,$05,$E7<br />
- dc.b $07,$EC,$01<br />
dc.w $E7F7,$000F,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$A6,$14,$F2<br />
ssamp2A: dc.b $00,$00,$02,$03,$00,$D9,$1F,$DF,$1F,$12,$14,$11<br />
dc.b $0F,$0A,$0A,$00,$0D,$FF,$FF,$FF,$FF,$22,$27,$07,$80<br />
<br />
; swish<br />
Sound2B: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$C6,$03,$80,$03,$C6,$01,$E7<br />
- dc.b $01,$EC,$01<br />
dc.w $E7F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; boss hit<br />
Sound2C: dc.w z80_ptr(smashsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$0C,$01<br />
- dc.b $81,$0A,$E6<br />
dc.w $10F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
smashsamp: dc.b $F9,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
<br />
; inhaling a bubble<br />
Sound2D: dc.w z80_ptr(ssamp2D),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$21,$6E,$A6,$07<br />
dc.b $80,$06,$F0,$01,$01,$44,$1E,$AD,$08,$F2<br />
ssamp2D: dc.b $35,$05,$08,$09,$07,$1E,$0D,$0D,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$1F,$2F,$1F,$15,$12,$12,$80<br />
<br />
; arrow firing<br />
Sound2E: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$C6,$01,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp2E: dc.b $FA,$02,$00,$03,$05,$12,$0F,$11,$13,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$2F,$0E,$1A,$80<br />
<br />
; shield sound<br />
Sound2F: dc.w z80_ptr(ssamp2F),$0101<br />
dc.w $8005,z80_ptr(+),$0C00<br />
+ dc.b $EF,$00,$80,$01,$A3,$05,$E7,$A4,$26,$F2<br />
ssamp2F: dc.b $30,$30,$30,$30,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$04,$14,$2C,$80<br />
<br />
; laser beam<br />
Sound30: dc.w z80_ptr(ssamp30),$0101 ; sound header... a voice and 1 script entry<br />
dc.w $8005,z80_ptr(+),$FB05 ; script entry header<br />
+ dc.b $EF,$00,$DF,$7F ; script start<br />
- dc.b $DF,$02,$E6 ; script continued<br />
dc.w $01F7,$001B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script end<br />
ssamp30: dc.b $83,$1F,$1F,$15,$1F,$1F,$1F,$1F,$1F,$00,$00,$00 ; voice<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$0B,$01,$16,$82 ; (fixed length)<br />
<br />
; zap<br />
Sound31: dc.w z80_ptr(ssamp31),$0101<br />
dc.w $8005,z80_ptr(+),$FB02<br />
+ dc.b $EF,$00,$B3,$05,$80,$01,$B3,$09,$F2<br />
ssamp31: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$05,$34,$10,$87<br />
<br />
; drownage<br />
Sound32: dc.w z80_ptr(ssamp32),$0102<br />
dc.w $8004,z80_ptr(++),$0C04<br />
dc.w $8005,z80_ptr(+),$0E02<br />
+ dc.b $EF,$00,$F0,$01,$01,$83,$0C<br />
- dc.b $8A,$05,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $80,$06,$EF,$00,$F0,$01,$01,$6F,$0E<br />
- dc.b $8D,$04,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp32: dc.b $35,$14,$04,$1A,$09,$0E,$11,$10,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$4F,$2F,$4F,$2F,$12,$12,$80<br />
<br />
; fire + burn<br />
Sound33: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$A7,$25,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; bumper bing<br />
Sound34: dc.w z80_ptr(ssamp34),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $8002,z80_ptr(+++),$0002<br />
+ dc.b $EF,$00,$F6<br />
dc.w z80_ptr(Sound34_3)<br />
+ dc.b $EF,$00,$E1,$07,$80,$01<br />
Sound34_3:<br />
dc.b $BA,$20,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
ssamp34: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$1F,$2B,$80,$80<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; ring sound<br />
Sound35: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$40,$C1,$05,$C4,$05,$C9,$1B,$F2<br />
<br />
<br />
Sound36: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C1,$07<br />
- dc.b $D0,$01,$EC<br />
dc.w $01F7,$000C,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; rumbling<br />
Sound37: dc.w z80_ptr(ssamp37),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$20,$08<br />
- dc.b $8B<br />
dc.w $0AF7,$0008,z80_ptr(-)<br />
- dc.b $8B,$10,$E6<br />
dc.w $03F7,$0009,z80_ptr(-)<br />
dc.b $F2<br />
ssamp37: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
<br />
Sound38: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$B4,$08<br />
- dc.b $B0,$02,$EC<br />
dc.w $01F7,$0003,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; smash/breaking<br />
Sound39: dc.w z80_ptr(smashsamp),$0104<br />
dc.w $8002,z80_ptr(+),$1000<br />
dc.w $8004,z80_ptr(+++),$0000<br />
dc.w $8005,z80_ptr(++),$1000<br />
dc.w $80C0,z80_ptr(s39s4),$0000<br />
+ dc.b $E0,$40,$80,$02,$F6<br />
dc.w z80_ptr(++)<br />
+ dc.b $E0,$80,$80,$01<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
s39s4: dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; nondescript ding<br />
Sound3A: dc.w z80_ptr(ssamp3A),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$AE,$08,$F2<br />
ssamp3A: dc.b $1C,$2E,$0F,$02,$02,$1F,$1F,$1F,$1F,$18,$14,$0F<br />
dc.b $0E,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$20,$1B,$80,$80<br />
<br />
; door slamming shut<br />
Sound3B: dc.w z80_ptr(ssamp3B),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$80,$A0,$06,$F2<br />
ssamp3B: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; spindash unleashed<br />
Sound3C: dc.w z80_ptr(ssamp3C),$0102<br />
dc.w $8005,z80_ptr(+),$9000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$F2<br />
+ dc.b $F5,$07,$80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$4F,$F2<br />
ssamp3C: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
<br />
; slide-thunk<br />
Sound3D: dc.w z80_ptr(ssamp3D),$0102<br />
dc.w $8005,z80_ptr(+),$100A<br />
dc.w $8004,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$60,$01,$A7,$08,$F2<br />
+ dc.b $80,$08,$EF,$01,$84,$22,$F2<br />
ssamp3D: dc.b $FA,$21,$19,$3A,$30,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
dc.b $FA,$31,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$1F,$2F,$2F,$0D,$01,$00,$80<br />
<br />
; rolling sound<br />
Sound3E: dc.w z80_ptr(ssamp3E),$0101<br />
dc.w $8004,z80_ptr(+),$0C05<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$09,$FF,$CA,$25,$F4<br />
- dc.b $E7,$E6,$01,$D0<br />
dc.w $02F7,$002A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3E: dc.b $3C,$00,$02,$44,$02,$1F,$1F,$1F,$15,$00,$00,$1F<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0D,$28,$00,$00<br />
<br />
; got continue<br />
Sound3F: dc.w z80_ptr(ssamp3F),$0103<br />
dc.w $8002,z80_ptr(+),$F406<br />
dc.w $8004,z80_ptr(++),$F406<br />
dc.w $8005,z80_ptr(+++),$F406<br />
+ dc.b $EF,$00,$C9,$07,$CD,$D0,$CB,$CE,$D2,$CD,$D0,$D4,$CE,$D2,$D5<br />
- dc.b $D0,$07,$D4,$D7,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$80,$07,$CD,$15,$CE,$D0,$D2<br />
- dc.b $D4,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$C9,$15,$CB,$CD,$CE<br />
- dc.b $D0,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3F: dc.b $14,$25,$36,$33,$11,$1F,$1F,$1F,$1F,$15,$1C,$18<br />
dc.b $13,$0B,$0D,$08,$09,$0F,$8F,$9F,$0F,$24,$0A,$05,$80<br />
<br />
; short bonus ding<br />
Sound40: dc.w z80_ptr(ssamp3F),$0102<br />
dc.w $8005,z80_ptr(++),$0008<br />
dc.w $8004,z80_ptr(+),$0008<br />
+ dc.b $E1,$03,$80,$02<br />
+ dc.b $EF,$00,$C4,$16,$F2<br />
<br />
; badnik bust<br />
Sound41: dc.w z80_ptr(ssamp41),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0002<br />
+ dc.b $F0,$03,$01,$72,$0B,$EF,$00,$BA,$16,$F2<br />
+ dc.b $F5,$01,$F3,$E7,$B0,$1B,$F2<br />
ssamp41: dc.b $3C,$0F,$03,$01,$01,$1F,$1F,$1F,$1F,$19,$19,$12<br />
dc.b $0E,$05,$00,$12,$0F,$0F,$FF,$7F,$FF,$00,$00,$80,$80<br />
<br />
; warning ding-ding<br />
Sound42: dc.w z80_ptr(ssamp3F),$0101<br />
dc.w $8005,z80_ptr(+),$0C08<br />
+ dc.b $EF,$00,$BA,$08,$BA,$25,$F2<br />
<br />
; special stage ring flash (unused)<br />
Sound43: dc.w z80_ptr(ssamp43),$0102<br />
dc.w $8004,z80_ptr(+),$0C00<br />
dc.w $8005,z80_ptr(++),$0013<br />
+ dc.b $EF,$01,$80,$01,$A2,$08,$EF,$00,$E7,$AD,$26,$F2<br />
+ dc.b $EF,$02,$F0,$06,$01,$03,$FF,$80,$0A<br />
- dc.b $C3<br />
dc.w $06F7,$0005,z80_ptr(-)<br />
dc.b $C3,$17,$F2<br />
ssamp43: dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$1C,$80<br />
dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$2C,$80<br />
dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$13,$13,$81,$88<br />
<br />
; thunk<br />
Sound44: dc.w z80_ptr(ssamp44),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$8A,$22,$F2<br />
ssamp44: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$4F,$2F,$2F,$0D,$04,$07,$80<br />
<br />
; cha-ching<br />
Sound45: dc.w z80_ptr(ssamp45),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$8A,$08,$80,$02,$8A,$08,$F2<br />
+ dc.b $EF,$01,$80,$12,$C6,$55,$F2<br />
+ dc.b $F5,$02,$F3,$E7,$80,$02,$C2,$05,$C4,$04,$C2,$05,$C4,$04,$F2<br />
ssamp45: dc.b $3B,$03,$02,$02,$06,$18,$1A,$1A,$96,$17,$0A,$0E<br />
dc.b $10,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$39,$28,$80<br />
ringsamp: dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$23,$80,$80<br />
<br />
; losing rings (scatter)<br />
Sound46: dc.w z80_ptr(ringsamp),$0102<br />
dc.w $8004,z80_ptr(+),$0005<br />
dc.w $8005,z80_ptr(++),$0008<br />
+ dc.b $EF,$00,$C6,$02,$05,$05,$05,$05,$05,$05,$3A,$F2<br />
+ dc.b $EF,$00,$80,$02,$C4,$02,$05,$15,$02,$05,$32,$F2<br />
<br />
; chain pull chink-chink<br />
Sound47: dc.w z80_ptr(ssamp47),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$BE,$05,$80,$04,$BE,$04,$80,$04,$F2<br />
ssamp47: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; flamethrower<br />
Sound48: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$25,$F2<br />
<br />
; bonus pwoieeew (unused)<br />
Sound49: dc.w z80_ptr(ssamp49),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$33,$18,$B9,$1A,$F2<br />
ssamp49: dc.b $3B,$0A,$05,$31,$02,$5F,$5F,$5F,$5F,$04,$16,$14<br />
dc.b $0C,$00,$00,$04,$00,$1F,$D8,$6F,$FF,$03,$00,$25,$80<br />
<br />
; special stage entry<br />
Sound4A: dc.w z80_ptr(ssamp4A),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$F0,$01,$01,$5B,$02,$CC,$65,$F2<br />
ssamp4A: dc.b $20,$36,$30,$35,$31,$41,$3B,$49,$4B,$09,$09,$06<br />
dc.b $08,$01,$02,$03,$A9,$0F,$0F,$0F,$0F,$29,$23,$27,$80<br />
<br />
; slower smash/crumble<br />
Sound4B: dc.w z80_ptr(smashsamp),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; spring boing<br />
Sound4C: dc.w z80_ptr(ssamp4C),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$5D,$0F,$B0,$0C,$F4<br />
- dc.b $E7,$E6,$02,$BD<br />
dc.w $02F7,$0019,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4C: dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$16,$13,$30,$80<br />
<br />
; selection blip<br />
Sound4D: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $BB,$02,$F2<br />
<br />
; another ring sound (only plays in the left speaker?)<br />
Sound4E: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8004,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$80,$C1,$04,$C4,$05,$C9,$1B,$F2<br />
<br />
; signpost spin sound<br />
Sound4F: dc.w z80_ptr(ssamp4F),$0102<br />
dc.w $8004,z80_ptr(+),$2703<br />
dc.w $8005,z80_ptr(++),$2700<br />
+ dc.b $80,$04<br />
+ dc.b $EF,$00<br />
- dc.b $B4,$05,$E6<br />
dc.w $02F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4F: dc.b $F4,$06,$0F,$04,$0E,$1F,$1F,$1F,$1F,$00,$0B,$00<br />
dc.b $0B,$00,$05,$00,$08,$0F,$FF,$0F,$FF,$0C,$03,$8B,$80<br />
<br />
; mosquito zapper<br />
Sound50: dc.w z80_ptr(ssamp50),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B3,$04,$80,$01<br />
- dc.b $B4,$04,$80<br />
dc.w $01F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
ssamp50: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$06,$34,$10,$87<br />
<br />
<br />
Sound51: dc.w z80_ptr(ssamp51),$0102<br />
dc.w $80C0,z80_ptr(+),$0001<br />
dc.w $8005,z80_ptr(++),$000B<br />
+ dc.b $F5,$02,$F3,$E4,$B0,$04,$85,$02,$F2<br />
+ dc.b $EF,$00,$E8,$04,$A5,$06,$F2<br />
ssamp51: dc.b $3C,$02,$01,$00,$01,$1F,$1F,$1F,$1F,$00,$19,$0E<br />
dc.b $10,$00,$00,$0C,$0F,$0F,$FF,$EF,$FF,$05,$00,$80,$80<br />
<br />
<br />
Sound52: dc.w z80_ptr(ssamp52),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $F0,$01,$01,$2A,$07,$EF,$00<br />
- dc.b $A5,$03<br />
dc.w $E7F7,$0013,z80_ptr(-)<br />
- dc.b $A5,$03,$E7,$E6<br />
dc.w $02F7,$0013,z80_ptr(-)<br />
dc.b $F2<br />
ssamp52: dc.b $28,$21,$21,$21,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$29,$20,$29,$80<br />
<br />
<br />
Sound53: dc.w z80_ptr(ssamp53),$0101<br />
dc.w $8005,z80_ptr(+),$F503<br />
+ dc.b $EF,$00,$F0,$01,$01,$46,$09,$A7,$14,$E7,$14,$E7,$E6,$04<br />
dc.b $14,$E7,$E6,$04,$14,$E7,$E6,$04,$0A,$E7,$E6,$04,$0A,$F2<br />
ssamp53: dc.b $07,$0A,$0C,$0C,$0C,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$2A,$0F,$0F,$80<br />
<br />
; OOZ lid pop sound<br />
Sound54: dc.w z80_ptr(ssamp54),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0006<br />
+ dc.b $EF,$00,$B6,$15,$F2<br />
+ dc.b $F3,$E7,$F5,$04,$C6,$03,$E7,$C5,$E7<br />
dc.b $C4,$E7,$C3,$E7,$C2,$E7,$C1,$E7,$C0,$F2<br />
ssamp54: dc.b $07,$03,$02,$03,$00,$FF,$6F,$6F,$3F,$12,$14,$11<br />
dc.b $0E,$1A,$0A,$03,$0D,$FF,$FF,$FF,$FF,$03,$07,$07,$80<br />
<br />
<br />
Sound55: dc.w z80_ptr(ssamp55),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$AA,$07,$B6,$15,$F2<br />
ssamp55: dc.b $42,$20,$0E,$0F,$0F,$1F,$1F,$1F,$1F,$1F,$1F,$1F<br />
dc.b $1F,$0F,$0E,$0F,$0E,$0F,$0F,$0F,$0F,$2E,$80,$20,$80<br />
<br />
<br />
Sound56: dc.w z80_ptr(ssamp56),$0101<br />
dc.w $8005,z80_ptr(+),$100E<br />
+ dc.b $EF,$00,$F0,$01,$01,$1E,$FF,$8F,$1C,$F4<br />
- dc.b $E7,$9A<br />
dc.w $05F7,$0009,z80_ptr(-)<br />
- dc.b $E7,$9A,$04,$E6,$02,$E7,$9A,$04,$E6<br />
dc.w $02F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp56: dc.b $0D,$06,$00,$00,$E5,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$27,$80,$80,$80<br />
<br />
<br />
Sound57: dc.w z80_ptr(ssamp57),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$CA,$15,$F2<br />
ssamp57: dc.b $04,$09,$70,$00,$30,$1C,$1F,$DF,$1F,$15,$12,$0B<br />
dc.b $0F,$0C,$0D,$00,$0D,$07,$2F,$FA,$FA,$00,$29,$00,$00<br />
<br />
; CNZ bonusy bumper sound<br />
Sound58: dc.w z80_ptr(ssamp58),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$B3,$06,$B3,$15,$F2<br />
ssamp58: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
<br />
; CNZ baaang bumper sound<br />
Sound59: dc.w z80_ptr(ssamp59),$0103<br />
dc.w $8004,z80_ptr(+),$0000<br />
dc.w $8002,z80_ptr(++),$0002<br />
dc.w $8005,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$E1,$0C,$B5,$14,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
+ dc.b $EF,$00,$B6,$14,$F2<br />
ssamp59: dc.b $32,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $0D,$00,$01,$01,$0C,$00,$23,$C3,$F6,$08,$07,$1C,$03<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; CNZ gloop / water droplet sound<br />
Sound5A: dc.w z80_ptr(ssamp5A),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$7F,$F1,$AA,$0A,$F2<br />
ssamp5A: dc.b $47,$03,$02,$02,$04,$5F,$5F,$5F,$5F,$0E,$1A,$11<br />
dc.b $0A,$09,$0A,$0A,$0A,$4F,$3F,$3F,$3F,$7F,$80,$80,$A3<br />
<br />
<br />
Sound5B: dc.w z80_ptr(ssamp5B),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$02,$A5,$01,$E7<br />
- dc.b $01,$E7,$E6<br />
dc.w $02F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5B: dc.b $38,$0F,$0F,$0F,$0F,$1F,$1F,$1F,$0E,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$1F,$00,$00,$00,$80<br />
<br />
<br />
Sound5C: dc.w z80_ptr(ssamp5C),$0102<br />
dc.w $8004,z80_ptr(+),$000E<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$85,$40<br />
- dc.b $E7,$04,$E6<br />
dc.w $04F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$40<br />
- dc.b $E7,$08,$E6<br />
dc.w $01F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5C: dc.b $FA,$12,$01,$01,$01,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$81,$8E,$14,$80<br />
<br />
; chain clink<br />
Sound5D: dc.w z80_ptr(ssamp5D),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$C0,$04,$F2<br />
ssamp5D: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; helicopter<br />
Sound5E: dc.w z80_ptr(ssamp5E),$0101<br />
dc.w $8002,z80_ptr(+),$1405<br />
+ dc.b $EF,$00<br />
- dc.b $95,$02,$95<br />
dc.w $01F7,$0013,z80_ptr(-)<br />
- dc.b $95,$02,$95,$01,$E6<br />
dc.w $01F7,$001B,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5E: dc.b $35,$30,$44,$40,$51,$1F,$1F,$1F,$1F,$10,$00,$13<br />
dc.b $15,$1F,$00,$1F,$1A,$7F,$0F,$7F,$5F,$02,$A8,$80,$80<br />
<br />
<br />
Sound5F: dc.w z80_ptr(ssamp5F),$0103<br />
dc.w $8005,z80_ptr(s5Fs1),$0000<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
s5Fs1 dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$E6,$0A,$80<br />
dc.b $06,$EF,$01,$F0,$01,$01,$11,$FF,$A2,$28<br />
- dc.b $E7,$03,$E6<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs2 dc.b $80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$1D<br />
- dc.b $E7,$07,$EC<br />
dc.w $01F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs3 dc.b $80,$16,$F5,$03<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $FFF7,$0005,z80_ptr(-)<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $01F7,$0007,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5F: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
dc.b $3A,$70,$30,$04,$01,$0F,$14,$19,$16,$08,$0A,$0B<br />
dc.b $05,$03,$03,$03,$05,$1F,$6F,$8F,$5F,$1F,$22,$1F,$80<br />
<br />
; spindash charge<br />
Sound60: dc.w z80_ptr(ssamp60),$0101<br />
dc.w $8005,z80_ptr(+),$FE00<br />
+ dc.b $EF,$00,$F0,$00,$01,$20,$F6,$C4,$16,$E7,$F4,$D0,$18,$E7<br />
- dc.b $04,$E7,$E6<br />
dc.w $03F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp60: dc.b $34,$00,$03,$0C,$09,$9F,$8C,$8F,$95,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$00,$1D,$00,$00<br />
<br />
; rumbling<br />
Sound61: dc.w z80_ptr(ssamp61),$0101<br />
dc.w $8004,z80_ptr(+),$0004<br />
+ dc.b $80,$01,$EF,$00,$F0,$00,$01,$70,$06,$82,$06,$85,$08,$83<br />
dc.b $01,$82,$05,$86,$06,$89,$03,$82,$08,$88,$04,$82,$06,$E6<br />
dc.b $02,$85,$08,$E6,$02,$83,$01,$E6,$02,$82,$05,$E6,$02,$86<br />
dc.b $06,$E6,$02,$89,$03,$E6,$02,$82,$08,$E6,$02,$88,$04,$E6,$02,$F2<br />
ssamp61: dc.b $32,$30,$30,$50,$30,$1F,$0E,$19,$0E,$07,$12,$15<br />
dc.b $09,$0A,$09,$1D,$06,$E8,$03,$0A,$17,$07,$00,$00,$00<br />
<br />
<br />
Sound62: dc.w z80_ptr(ssamp62),$0101<br />
dc.w $8005,z80_ptr(+),$FF00<br />
+ dc.b $EF,$00,$A6,$05,$F0,$01,$01,$E7,$40<br />
- dc.b $C4,$02,$E7,$E6<br />
dc.w $01F7,$0012,z80_ptr(-)<br />
dc.b $F2<br />
ssamp62: dc.b $34,$0C,$10,$73,$0C,$AF,$AC,$FF,$D5,$06,$00,$02<br />
dc.b $01,$02,$0A,$04,$08,$BF,$BF,$BF,$BF,$00,$08,$80,$80<br />
<br />
; CNZ blooing bumper<br />
Sound63: dc.w z80_ptr(ssamp63),$0101<br />
dc.w $8005,z80_ptr(+),$0907<br />
+ dc.b $EF,$00,$F0,$01,$01,$04,$56,$92,$03,$9A,$25,$F2<br />
ssamp63: dc.b $3D,$12,$10,$77,$30,$5F,$5F,$5F,$5F,$0F,$0A,$00<br />
dc.b $01,$0A,$0A,$0D,$0D,$4F,$0F,$0F,$0F,$13,$80,$80,$80<br />
<br />
; HTZ track click sound<br />
Sound64: dc.w z80_ptr(ssamp64),$0101<br />
dc.w $8005,z80_ptr(+),$1100<br />
+ dc.b $EF,$00,$C7,$02,$F2<br />
ssamp64: dc.b $24,$2A,$02,$05,$01,$1A,$1F,$10,$1F,$0F,$1F,$1F<br />
dc.b $1F,$0C,$0D,$11,$11,$0C,$09,$09,$0F,$0E,$04,$80,$80<br />
<br />
; kicking up leaves sound<br />
Sound65: dc.w z80_ptr(ssamp65),$0101<br />
dc.w $80C0,z80_ptr(+),$F800<br />
+ dc.b $F5,$03,$F3,$E7,$CE,$03,$F5,$06,$CE,$04,$EC<br />
dc.b $02,$CE,$02,$F5,$03,$EC,$FE,$CE,$08,$CE,$18,$F2<br />
ssamp65: ; uhm... apparently they forgot to null out the pointer to here.<br />
; luckily, sound 65 doesn't really use its sample<br />
<br />
; leaf splash?<br />
Sound66: dc.w z80_ptr(ssamp66),$0102<br />
dc.w $8005,z80_ptr(++),$EE08<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$F5,$09,$C6,$36,$F2<br />
+ dc.b $EF,$00,$80,$01,$92,$02,$02,$02,$30,$F2<br />
ssamp66: dc.b $32,$33,$17,$34,$13,$0F,$0D,$1B,$17,$00,$04,$02<br />
dc.b $0B,$08,$00,$08,$09,$6F,$5F,$4F,$6F,$05,$00,$00,$80<br />
<br />
<br />
Sound67: dc.w z80_ptr(ssamp67),$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$06,$F3,$E7,$90,$0A,$94,$0A,$98,$0A,$9C<br />
dc.b $0A,$A0,$0A,$A4,$08,$A8,$08,$AC,$08,$B0,$08,$F2<br />
ssamp67: ; another not-really-used sample (like Sound65)<br />
<br />
; door slamming quickly (seems unused)<br />
Sound68: dc.w z80_ptr(ssamp68),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$A5,$06,$F2<br />
ssamp68: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
<br />
Sound69: dc.w z80_ptr(ssamp69),$0102<br />
dc.w $8005,z80_ptr(+),$F400<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$9B,$03,$A8,$06,$9E,$08,$F2<br />
+ dc.b $F5,$04,$F3,$E7,$C6,$03,$C6,$06,$C6,$08,$F2<br />
ssamp69: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; robotic laser burst<br />
Sound6A: dc.w z80_ptr(ssamp6A),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$DF,$14,$E6,$18,$06,$F2<br />
ssamp6A: dc.b $3D,$09,$34,$34,$28,$1F,$16,$16,$16,$00,$00,$00<br />
dc.b $04,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$15,$02,$02,$00<br />
<br />
; scatter<br />
Sound6B: dc.w z80_ptr(ssamp6B),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$81,$04,$80,$0C,$F2<br />
ssamp6B: dc.b $3A,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $07,$00,$01,$01,$03,$00,$23,$C3,$46,$08,$07,$1C,$03<br />
<br />
<br />
Sound6C: dc.w z80_ptr(ssamp6C),$0104<br />
dc.w $8005,z80_ptr(++),$0010<br />
dc.w $8004,z80_ptr(+),$0010<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
+ dc.b $E1,$10<br />
+ dc.b $EF,$01,$F0,$01,$01,$EC,$56,$C0,$24,$F4,$EF,$00,$E6,$F0<br />
- dc.b $BB,$02,$E7,$E6,$02,$E9<br />
dc.w $01F7,$0020,z80_ptr(-)<br />
dc.b $F2<br />
ssamp6C: dc.b $00,$53,$30,$03,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$06,$23,$80<br />
dc.b $3C,$72,$32,$32,$72,$14,$14,$0F,$0F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$02,$02,$08,$08,$35,$14,$00,$00<br />
<br />
; error sound<br />
Sound6D: dc.w z80_ptr(ssamp6D),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$B0,$06,$80,$06,$B0,$18,$F2<br />
ssamp6D: dc.b $38,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$1F,$0C,$17,$00<br />
<br />
; silver sonic buzz saw<br />
Sound6E: dc.w z80_ptr(ssamp6E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$C6,$24,$E7<br />
- dc.b $C6,$04,$E7,$E6<br />
dc.w $04F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F3,$E7,$C7,$44,$F2<br />
ssamp6E: dc.b $33,$00,$10,$00,$31,$1F,$1D,$1E,$0E,$00,$0C,$1D<br />
dc.b $00,$00,$00,$01,$00,$0F,$0F,$0F,$0F,$08,$06,$07,$80<br />
<br />
<br />
Sound6F: dc.w z80_ptr(ssamp6A),$0103<br />
dc.w $8005,z80_ptr(++),$000B<br />
dc.w $8004,z80_ptr(+),$0012<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $E1,$02,$80,$02<br />
+ dc.b $EF,$00,$E6,$0C,$DF,$06,$E7,$E6,$F4,$06,$E7<br />
dc.b $E6,$F4,$12,$E7,$E6,$0C,$06,$E7,$E6,$0C,$06,$F2<br />
+ dc.b $F3,$E7,$C6,$04,$C0,$BA,$B4,$AE,$E6<br />
dc.b $01,$AE,$E6,$01,$AE,$E6,$01,$AE,$F2<br />
<br />
<br />
Sound70: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$C6,$18<br />
- dc.b $E7,$03,$E6<br />
dc.w $01F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to the other bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
; share these symbols externally (WARNING: don't rename, move or remove these labels!)<br />
shared movewZ80CompSize<br />
</asm><br />
<br />
We want to replace it with this optimized code:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===sound playback routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #$GameModeID_TitleScreen,($FFFFF600).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
==Driver data files==<br />
then unpack this into the sound folder and optionally remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music Playlist==</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208747
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-25T00:46:19Z
<p>Kram1024: /* Upgrading Pause / Resume routines */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==<br />
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><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
move sr,-(sp)<br />
movem.l d0-a6,-(sp)<br />
move #$2700,sr<br />
lea (Z80_Bus_Request).l,a3<br />
lea (Z80_Reset).l,a2<br />
moveq #0,d2<br />
move.w #$100,d1<br />
move.w d1,(a3) ; get Z80 bus<br />
move.w d1,(a2) ; release Z80 reset (was held high by console on startup)<br />
- btst d2,(a3)<br />
bne.s - ; wait until the 68000 has the bus<br />
jsr DecompressSoundDriver(pc)<br />
btst #0,(VDP_control_port+1).l ; check video mode<br />
sne (Z80_RAM+zPalModeByte).l ; set if PAL<br />
move.w d2,(a2) ; hold Z80 reset<br />
move.w d2,(a3) ; release Z80 bus<br />
moveq #$E6,d0<br />
- dbf d0,- ; wait for 2,314 cycles<br />
move.w d1,(a2) ; release Z80 reset<br />
movem.l (sp)+,d0-a6<br />
move (sp)+,sr<br />
rts<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; slightly modified Saxman decompression of the sound driver<br />
; a4 == $A00000 (start of Z80 RAM)<br />
; a5 == current position in Z80 RAM?<br />
; a6 == current position in compressed sound driver?<br />
; d0 == data to decompress? (byte)<br />
; d4 == ???<br />
; d5 == ???<br />
; d6 == ???<br />
; d7 == bytes left to decompress<br />
; loc_EC04A:<br />
DecompressSoundDriver:<br />
lea Snd_Driver(pc),a6<br />
; WARNING: the build script needs editing if you rename this label<br />
movewZ80CompSize: move.w #Snd_Driver_End-Snd_Driver,d7 ; patched (by fixpointer.exe) after compression since the exact size can't be known beforehand<br />
moveq #0,d6<br />
lea (Z80_RAM).l,a5<br />
moveq #0,d5<br />
lea (Z80_RAM).l,a4<br />
<br />
loc_EC062:<br />
lsr.w #1,d6<br />
btst #8,d6<br />
bne.s +<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d6<br />
ori.w #$FF00,d6<br />
+<br />
btst #0,d6<br />
beq.s loc_EC086<br />
jsr sub_EC0DE(pc)<br />
move.b d0,(a5)+<br />
addq.w #1,d5<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC086:<br />
jsr sub_EC0DE(pc)<br />
moveq #0,d4<br />
move.b d0,d4<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d3<br />
andi.w #$F,d3<br />
addq.w #2,d3<br />
andi.w #$F0,d0<br />
lsl.w #4,d0<br />
add.w d0,d4<br />
addi.w #$12,d4<br />
andi.w #$FFF,d4<br />
move.w d5,d0<br />
andi.w #$F000,d0<br />
add.w d0,d4<br />
cmp.w d4,d5<br />
bhs.s loc_EC0CC<br />
subi.w #$1000,d4<br />
bcc.s loc_EC0CC<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b #0,(a5)+<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC0CC:<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b (a4,d4.w),(a5)+<br />
addq.w #1,d4<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; End of function DecompressSoundDriver<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_EC0DE:<br />
move.b (a6)+,d0<br />
subq.w #1,d7<br />
bne.s +<br />
addq.w #4,sp<br />
+<br />
rts<br />
; End of function sub_EC0DE<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; S2 sound driver (Sound driver compression (slightly modified Saxman))<br />
; ---------------------------------------------------------------------------<br />
; loc_EC0E8:<br />
Snd_Driver:<br />
save<br />
include "s2.sounddriver.asm" ; CPU Z80<br />
restore<br />
padding off<br />
!org (Snd_Driver+Size_of_Snd_driver_guess) ; don't worry; I know what I'm doing<br />
<br />
<br />
; loc_ED04C:<br />
Snd_Driver_End:<br />
<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ---------------------------------------------------------------------------<br />
; the DAC data has to line up with the end of the bank.<br />
<br />
; actually it only has to fit within one bank, but we'll line it up to the end anyway<br />
; because the padding gives the sound driver some room to grow<br />
cnop -Size_of_DAC_samples, $8000<br />
<br />
; ---------------------------------------------------------------------------<br />
; DAC samples<br />
; ---------------------------------------------------------------------------<br />
; loc_ED100:<br />
SndDAC_Start:<br />
<br />
SndDAC_Sample1:<br />
BINCLUDE "sound/DAC/Sample 1.bin"<br />
SndDAC_Sample1_End<br />
<br />
SndDAC_Sample2:<br />
BINCLUDE "sound/DAC/Sample 2.bin"<br />
SndDAC_Sample2_End<br />
<br />
SndDAC_Sample5:<br />
BINCLUDE "sound/DAC/Sample 5.bin"<br />
SndDAC_Sample5_End<br />
<br />
SndDAC_Sample6:<br />
BINCLUDE "sound/DAC/Sample 6.bin"<br />
SndDAC_Sample6_End<br />
<br />
SndDAC_Sample3:<br />
BINCLUDE "sound/DAC/Sample 3.bin"<br />
SndDAC_Sample3_End<br />
<br />
SndDAC_Sample4:<br />
BINCLUDE "sound/DAC/Sample 4.bin"<br />
SndDAC_Sample4_End<br />
<br />
SndDAC_Sample7:<br />
BINCLUDE "sound/DAC/Sample 7.bin"<br />
SndDAC_Sample7_End<br />
<br />
SndDAC_End<br />
<br />
if SndDAC_End - SndDAC_Start > $8000<br />
fatal "DAC samples must fit within $8000 bytes, but you have $\{SndDAC_End-SndDAC_Start } bytes of DAC samples."<br />
endif<br />
if SndDAC_End - SndDAC_Start > Size_of_DAC_samples<br />
fatal "Size_of_DAC_samples = $\{Size_of_DAC_samples}, but you have $\{SndDAC_End-SndDAC_Start} bytes of DAC samples."<br />
endif<br />
<br />
; ---------------------------------------------------------------------------<br />
; Music pointers<br />
; ---------------------------------------------------------------------------<br />
align $8000<br />
<br />
; loc_F0000:<br />
MusicPoint1:<br />
MusPtr_Continue: rom_ptr_z80 Mus_Continue-MusicPoint2<br />
<br />
<br />
Mus_Continue: BINCLUDE "sound/music/Continue.bin"<br />
<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ----------------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ----------------------------------------------------------------------------------<br />
; the PCM data has to line up with the end of the bank.<br />
cnop -Size_of_SEGA_sound, $8000<br />
<br />
; -------------------------------------------------------------------------------<br />
; Sega Intro Sound<br />
; 8-bit unsigned raw audio at 16Khz<br />
; -------------------------------------------------------------------------------<br />
; loc_F1E8C:<br />
Snd_Sega: BINCLUDE "sound/PCM/SEGA.bin"<br />
Snd_Sega_End:<br />
<br />
if Snd_Sega_End - Snd_Sega > $8000<br />
fatal "Sega sound must fit within $8000 bytes, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
if Snd_Sega_End - Snd_Sega > Size_of_SEGA_sound<br />
fatal "Size_of_SEGA_sound = $\{Size_of_SEGA_sound}, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
<br />
; ------------------------------------------------------------------------------<br />
; Music pointers<br />
; ------------------------------------------------------------------------------<br />
align $8000<br />
soundBankStart := *<br />
<br />
; loc_F8000:<br />
MusicPoint2:<br />
MusPtr_CNZ_2P: rom_ptr_z80 Mus_CNZ_2P<br />
MusPtr_EHZ: rom_ptr_z80 Mus_EHZ<br />
MusPtr_MTZ: rom_ptr_z80 Mus_MTZ<br />
MusPtr_CNZ: rom_ptr_z80 Mus_CNZ<br />
MusPtr_MCZ: rom_ptr_z80 Mus_MCZ<br />
MusPtr_MCZ_2P: rom_ptr_z80 Mus_MCZ_2P<br />
MusPtr_ARZ: rom_ptr_z80 Mus_ARZ<br />
MusPtr_DEZ: rom_ptr_z80 Mus_DEZ<br />
MusPtr_SpecStage: rom_ptr_z80 Mus_SpecStage<br />
MusPtr_Options: rom_ptr_z80 Mus_Options<br />
MusPtr_Ending: rom_ptr_z80 Mus_Ending<br />
MusPtr_EndBoss: rom_ptr_z80 Mus_EndBoss<br />
MusPtr_CPZ: rom_ptr_z80 Mus_CPZ<br />
MusPtr_Boss: rom_ptr_z80 Mus_Boss<br />
MusPtr_SCZ: rom_ptr_z80 Mus_SCZ<br />
MusPtr_OOZ: rom_ptr_z80 Mus_OOZ<br />
MusPtr_WFZ: rom_ptr_z80 Mus_WFZ<br />
MusPtr_EHZ_2P: rom_ptr_z80 Mus_EHZ_2P<br />
MusPtr_2PResult: rom_ptr_z80 Mus_2PResult<br />
MusPtr_SuperSonic: rom_ptr_z80 Mus_SuperSonic<br />
MusPtr_HTZ: rom_ptr_z80 Mus_HTZ<br />
MusPtr_ExtraLife: rom_ptr_z80 Mus_ExtraLife<br />
MusPtr_Title: rom_ptr_z80 Mus_Title<br />
MusPtr_EndLevel: rom_ptr_z80 Mus_EndLevel<br />
MusPtr_GameOver: rom_ptr_z80 Mus_GameOver<br />
MusPtr_Invincible: rom_ptr_z80 Mus_Invincible<br />
MusPtr_Emerald: rom_ptr_z80 Mus_Emerald<br />
MusPtr_HPZ: rom_ptr_z80 Mus_HPZ<br />
MusPtr_Drowning: rom_ptr_z80 Mus_Drowning<br />
MusPtr_Credits: rom_ptr_z80 Mus_Credits<br />
<br />
; loc_F803C:<br />
Mus_HPZ: BINCLUDE "sound/music/HPZ.bin"<br />
Mus_Drowning: BINCLUDE "sound/music/Drowning.bin"<br />
Mus_Invincible: BINCLUDE "sound/music/Invincible.bin"<br />
Mus_CNZ_2P: BINCLUDE "sound/music/CNZ_2p.bin"<br />
Mus_EHZ: BINCLUDE "sound/music/EHZ.bin"<br />
Mus_MTZ: BINCLUDE "sound/music/MTZ.bin"<br />
Mus_CNZ: BINCLUDE "sound/music/CNZ.bin"<br />
Mus_MCZ: BINCLUDE "sound/music/MCZ.bin"<br />
Mus_MCZ_2P: BINCLUDE "sound/music/MCZ_2p.bin"<br />
Mus_ARZ: BINCLUDE "sound/music/ARZ.bin"<br />
Mus_DEZ: BINCLUDE "sound/music/DEZ.bin"<br />
Mus_SpecStage: BINCLUDE "sound/music/SpecStg.bin"<br />
Mus_Options: BINCLUDE "sound/music/Options.bin"<br />
Mus_Ending: BINCLUDE "sound/music/Ending.bin"<br />
Mus_EndBoss: BINCLUDE "sound/music/End_Boss.bin"<br />
Mus_CPZ: BINCLUDE "sound/music/CPZ.bin"<br />
Mus_Boss: BINCLUDE "sound/music/Boss.bin"<br />
Mus_SCZ: BINCLUDE "sound/music/SCZ.bin"<br />
Mus_OOZ: BINCLUDE "sound/music/OOZ.bin"<br />
Mus_WFZ: BINCLUDE "sound/music/WFZ.bin"<br />
Mus_EHZ_2P: BINCLUDE "sound/music/EHZ_2p.bin"<br />
Mus_2PResult: BINCLUDE "sound/music/2player results screen.bin"<br />
Mus_SuperSonic: BINCLUDE "sound/music/Supersonic.bin"<br />
Mus_HTZ: BINCLUDE "sound/music/HTZ.bin"<br />
Mus_Title: BINCLUDE "sound/music/Title screen.bin"<br />
Mus_EndLevel: BINCLUDE "sound/music/End of level.bin"<br />
<br />
; The following act mostly like sound effects<br />
; despite being listed with the music.<br />
; This means they're uncompressed format with absolute pointers<br />
; instead of compressed with relative pointers.<br />
; Because they have absolute pointers,<br />
; they have to be assembled rather than BINCLUDE'd.<br />
; See below (right before Sound20) for other notes<br />
; about the sound format that apply to these too.<br />
<br />
;Mus_ExtraLife: BINCLUDE "sound/music/Extra life.bin"<br />
Mus_ExtraLife: dc.w z80_ptr(Mus_EL_Voices),$0603,$02CD<br />
dc.w z80_ptr(Mus_EL_DAC),$0000<br />
dc.w z80_ptr(Mus_EL_FM1),$E810<br />
dc.w z80_ptr(Mus_EL_FM2),$E810<br />
dc.w z80_ptr(Mus_EL_FM3),$E810<br />
dc.w z80_ptr(Mus_EL_FM4),$E810<br />
dc.w z80_ptr(Mus_EL_FM5),$E810<br />
dc.w z80_ptr(Mus_EL_PSG1),$D008,$0005<br />
dc.w z80_ptr(Mus_EL_PSG2),$DC08,$0005<br />
dc.w z80_ptr(Mus_EL_PSG3),$DC00,$0004<br />
Mus_EL_FM4: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM1: dc.b $E0,$80<br />
+ dc.b $EF,$00,$E8,$06,$D9,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$DB,$09,$D7,$D6,$06,$D9,$18,$F2<br />
Mus_EL_FM2: dc.b $EF,$01,$E8,$06,$E2,$01,$D6,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$D7,$09,$D4,$D2,$06,$D6,$18,$E2,$01,$F2<br />
Mus_EL_FM5: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM3: dc.b $E0,$80<br />
+ dc.b $EF,$02,$BA,$0C,$80,$06,$BA,$B8,$80,$03<br />
dc.b $B8,$06,$80,$03,$B8,$06,$BA,$18,$F2<br />
Mus_EL_PSG1: dc.b $E8,$06,$D6,$06,$03,$03,$06,$06,$E8,$00,$D7,$09<br />
dc.b $D4,$D2,$06,$D6,$18<br />
Mus_EL_PSG2:<br />
Mus_EL_PSG3: dc.b $F2<br />
Mus_EL_DAC: dc.b $88,$12,$06,$8B,$09,$09,$06,$88,$06,$8A,$88,$8A<br />
dc.b $88,$0C,$E4<br />
Mus_EL_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
<br />
<br />
;Mus_GameOver: BINCLUDE "sound/music/Game over.bin"<br />
Mus_GameOver: dc.w z80_ptr(MusGO_Voices),$0603,$02F2<br />
dc.w z80_ptr(MusGOver_DAC),$0000<br />
dc.w z80_ptr(MusGOver_FM1),$E80A<br />
dc.w z80_ptr(MusGOver_FM2),$F40F<br />
dc.w z80_ptr(MusGOver_FM3),$F40F<br />
dc.w z80_ptr(MusGOver_FM4),$F40D<br />
dc.w z80_ptr(MusGOver_FM5),$DC16<br />
dc.w z80_ptr(MusGOver_PSG),$D003,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC06,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC00,$0004<br />
MusGOver_FM1: dc.b $EF,$00<br />
dc.b $F0,$20,$01,$04,$05<br />
dc.b $80,$0C,$CA,$12,$80,$06,$CA,$80,$CB,$12,$C8,$1E<br />
dc.b $CA,$06,$80,$CA,$80,$CA,$80,$C6,$80,$C4,$12,$C8<br />
dc.b $0C,$80,$12,$C9,$04,$80,$C9,$C8,$06,$80,$C7,$80<br />
dc.b $C6,$80<br />
dc.b $F0,$28,$01,$18,$05<br />
dc.b $C5,$60,$F2<br />
MusGOver_FM2: dc.b $EF,$01,$80,$01,$D9,$06,$80,$D9,$80,$D6,$80,$D6<br />
dc.b $80,$D7,$15,$D7,$1B,$D9,$06,$80,$D9,$80,$D6,$80<br />
dc.b $D6,$80,$DC,$15,$DC,$1B,$F2<br />
MusGOver_FM3: dc.b $EF,$01,$D6,$0C,$D6,$D2,$D2,$D4,$15,$D4,$1B,$D6<br />
dc.b $0C,$D6,$D2,$D2,$D7,$15,$D7,$1B,$F2<br />
MusGOver_FM4: dc.b $EF,$02,$E2,$01,$AE,$06,$80,$AE,$80,$A9,$80,$A9<br />
dc.b $80,$AC,$15,$AB,$0C,$AC,$03,$AB,$0C,$AE,$06,$80<br />
dc.b $AE,$80,$A9,$80,$A9,$80,$B3,$15,$B2,$0C,$B3,$03<br />
dc.b $B2,$0C,$AE,$04,$80,$AE,$AD,$06,$80,$AC,$80,$AB<br />
dc.b $80,$AB,$60,$E2,$01,$F2<br />
MusGOver_FM5: dc.b $EF,$03,$80,$30,$D7,$12,$80,$03,$D7,$1B,$80,$30<br />
dc.b $DC,$12,$80,$03,$DC,$1B<br />
MusGOver_PSG: dc.b $F2<br />
MusGOver_DAC: dc.b $80,$18,$81<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(MusGOver_DAC)<br />
dc.b $F2<br />
MusGO_Voices: dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $3C,$33,$73,$30,$70,$94,$96,$9F,$9F,$12,$14,$00<br />
dc.b $0F,$04,$04,$0A,$0D,$2F,$4F,$0F,$2F,$33,$1A,$80,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$1C,$27,$28,$80<br />
dc.b $1F,$66,$53,$31,$22,$1C,$1F,$98,$1F,$12,$0F,$0F<br />
dc.b $0F,$00,$00,$00,$00,$FF,$0F,$0F,$0F,$8C,$8A,$8D,$8B<br />
<br />
;Mus_Emerald: BINCLUDE "sound/music/Got an emerald.bin"<br />
Mus_Emerald: dc.w z80_ptr(MusEmrldVoices),$0703,$01D5<br />
dc.w z80_ptr(MusEmeraldDAC),$0000<br />
dc.w z80_ptr(MusEmeraldFM1),$F408<br />
dc.w z80_ptr(MusEmeraldFM2),$F408<br />
dc.w z80_ptr(MusEmeraldFM3),$F407<br />
dc.w z80_ptr(MusEmeraldFM4),$F416<br />
dc.w z80_ptr(MusEmeraldFM5),$F416<br />
dc.w z80_ptr(MusEmeraldFM6),$F416<br />
dc.w z80_ptr(MusEmeraldPSG1),$F402,$0004<br />
dc.w z80_ptr(MusEmeraldPSG2),$F402,$0005<br />
dc.w z80_ptr(MusEmeraldPSG3),$F400,$0004<br />
MusEmeraldFM3: dc.b $E1,$02<br />
MusEmeraldFM1: dc.b $EF,$00,$C1,$06,$C4,$C9,$CD,$0C,$C9,$D0,$2A,$F2<br />
MusEmeraldFM2: dc.b $EF,$00,$BD,$06,$C1,$C4,$C9,$0C,$C6,$CB,$2A,$F2<br />
MusEmeraldFM4: dc.b $EF,$01,$C1,$0C,$C1,$06,$C4,$06,$80,$C4,$80,$C9<br />
dc.b $2A,$F2<br />
MusEmeraldFM5: dc.b $EF,$01,$C9,$0C,$C9,$06,$CD,$06,$80,$CD,$80,$D0<br />
dc.b $2A,$F2<br />
MusEmeraldFM6: dc.b $EF,$01,$C4,$0C,$C4,$06,$C9,$06,$80,$C9,$80,$CD<br />
dc.b $2A,$F2<br />
MusEmeraldPSG2: dc.b $80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusEmeraldPSG1: dc.b $E2,$01,$80,$02,$80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
MusEmeraldPSG3:<br />
MusEmeraldDAC: dc.b $E2,$01,$F2<br />
MusEmrldVoices: dc.b $04,$35,$54,$72,$46,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$1D,$14,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$07,$07,$1A,$16,$80,$80<br />
<br />
;Mus_Credits: BINCLUDE "sound/music/Credits.bin"<br />
Mus_Credits: dc.w z80_ptr(MusCred_Voices),$0603,$01F0<br />
dc.w z80_ptr(MusCred_DAC),$0000<br />
dc.w z80_ptr(MusCred_FM1),$000E<br />
dc.w z80_ptr(MusCred_FM2),$180A<br />
dc.w z80_ptr(MusCred_FM3),$0014<br />
dc.w z80_ptr(MusCred_FM4),$0016<br />
dc.w z80_ptr(MusCred_FM5),$0C16<br />
dc.w z80_ptr(MusCred_PSG1),$E806,$000B<br />
dc.w z80_ptr(MusCred_PSG2),$DC07,$000B<br />
dc.w z80_ptr(MusCred_PSG3),$0002,$0003<br />
MusCred_FM1: dc.b $E9,$F4,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$0C,$E6,$02<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$03,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $AE,$06,$A2,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $E6,$FD<br />
- dc.b $EF,$00,$B7,$06,$BA,$F8<br />
dc.w z80_ptr(MusCreditsDA13)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$06,$80,$80,$30,$80,$EF,$0B,$E9,$18,$E6,$02<br />
- dc.b $94,$0C,$8F,$92,$8F,$06,$94,$05,$94,$07,$06,$8F<br />
dc.b $0C,$92,$8F<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$30,$80,$EF,$0E,$E6,$FF,$E9,$E8,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$91,$94,$06,$80,$18,$96,$12,$9A,$06,$80<br />
dc.b $80,$12,$8F,$93,$08,$80,$16,$96,$06,$91,$92,$94<br />
dc.b $96,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$9D,$9A,$08,$80,$16,$96,$12,$9D,$08,$80<br />
dc.b $04,$EF,$12<br />
dc.b $F0,$18,$01,$0A,$04<br />
dc.b $80,$30,$80,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$24,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$EF,$01,$E9,$F4,$E6,$FA,$F4<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $80,$03,$80,$60,$E6,$04,$E1,$01,$EF,$1B,$E6,$06<br />
dc.b $C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80,$EF<br />
dc.b $1C,$E6,$FA,$E8,$00,$BC,$0C,$12,$06,$EF,$1B,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$80,$E8,$06,$C4,$06,$06,$C6,$C4,$E8<br />
dc.b $00,$C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80<br />
dc.b $E8,$00,$EF,$1C,$E6,$FA,$C1,$C4,$C1,$EF,$1A,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$06,$80,$80,$24,$80,$30,$80,$EF,$1F<br />
dc.b $E9,$18,$E6,$F7,$E1,$00,$80,$06,$AC,$AE,$80,$B1<br />
dc.b $80,$B3,$80,$B4,$80,$B3,$80,$B1,$B3,$80,$B1,$E9<br />
dc.b $F4,$EF,$00,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC<br />
dc.b $06,$AE,$B1,$80,$B4,$B1,$80,$B1,$E9,$0C,$EF,$1F<br />
dc.b $80,$06,$B8,$12,$B4,$06,$80,$B3,$80,$B4,$80,$B3<br />
dc.b $80,$B1,$AE,$80,$B1,$E9,$F4,$EF,$00,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$30,$80,$EF,$21,$E9,$0C,$80,$30,$80<br />
dc.b $08,$A0,$04,$9E,$0C,$9D,$9B,$99,$08,$04,$91,$0C<br />
dc.b $92,$93,$94,$98,$99,$9B,$9D,$98,$95,$93,$91,$98<br />
dc.b $9D,$91,$96,$98,$99,$98,$96,$99,$9D,$96,$95,$97<br />
dc.b $99,$97,$95,$96,$97,$98,$99,$98,$99,$9B,$9D,$08<br />
dc.b $04,$98,$0C,$91,$95,$96,$98,$99,$9D,$9E,$08,$96<br />
dc.b $10,$97,$0C,$98,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$08,$99,$04,$EF,$23,$E9,$E8,$E6,$07,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $80,$60,$E6,$FB,$80,$0C,$CD,$06,$80,$D4,$CD,$06<br />
dc.b $80,$0C,$CD,$06,$80,$D4,$CD,$06,$80,$18,$E6,$05<br />
dc.b $80,$0C,$AE,$80,$AE,$80,$24,$E1,$02,$E6,$08,$A2<br />
dc.b $6C,$F2<br />
MusCreditsD9D1: dc.b $A5,$0C,$B1,$06,$80,$B1,$0C,$AC,$B3,$12,$B1,$0C<br />
dc.b $AC,$06,$AE,$B1,$A7,$0C,$B3,$06,$80,$B3,$0C,$AE<br />
dc.b $B5,$12,$B3,$06,$80,$AE,$B0,$B3,$A3,$0C,$AF,$06<br />
dc.b $80,$AF,$0C,$AA,$B1,$12,$AF,$0C,$AA,$06,$AC,$AF<br />
dc.b $A2,$0C,$AE,$06,$A2,$A4,$0C,$B0,$06,$A4,$A5,$0C<br />
dc.b $B1,$06,$A5,$A2,$0C,$E3<br />
MusCreditsDA13: dc.b $BE,$0C,$BC,$06,$BA,$BC,$BA,$04,$E7,$08,$BA,$04<br />
dc.b $80,$0E,$EF,$07,$B7,$06,$B2,$B5,$B7,$EF,$00,$B7<br />
dc.b $BA,$BE,$0C,$BC,$06,$BA,$BC,$BA,$0C,$BC,$04,$80<br />
dc.b $08,$BA,$04,$80,$08,$BC,$04,$80,$08,$BE,$12,$BA<br />
dc.b $06,$B7,$80,$B7,$80,$24,$EF,$07,$B7,$06,$B2,$B5<br />
dc.b $B7,$80,$0C,$80,$30,$BE,$06,$BE,$BA,$04,$80,$08<br />
dc.b $BC,$06,$BE,$E3<br />
MusCreditsDA5F: dc.b $C3,$01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$02,$C3<br />
dc.b $01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01<br />
dc.b $E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$FC,$C3,$01,$E7<br />
dc.b $C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01,$E7,$C4<br />
dc.b $E7,$C5,$E7,$C6,$2D,$E7,$30,$E7,$30,$E3<br />
MusCreditsDA99: dc.b $A7,$0C,$B3,$06,$80,$B1,$80,$B3,$0C,$A7,$03,$80<br />
dc.b $06,$A7,$03,$B3,$0C,$B1,$B3,$09,$AE,$03,$AC,$06<br />
dc.b $80,$AC,$0C,$AE,$06,$80,$AE,$0C,$AF,$06,$80,$27<br />
dc.b $E3<br />
MusCreditsDABE: dc.b $80,$0C,$CA,$15,$80,$03,$CA,$06,$80,$CB,$0F,$80<br />
dc.b $03,$C8,$18,$80,$06,$CA,$80,$CA,$80,$CA,$80,$C6<br />
dc.b $80,$C4,$0F,$80,$03,$C8,$18,$80,$06<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E3<br />
MusCreditsDAE5: dc.b $80,$12,$94,$97,$06,$80,$18,$99,$12,$94,$06,$80<br />
dc.b $80,$12,$92,$96,$06,$80,$18,$97,$12,$92,$06,$80<br />
dc.b $E3<br />
MusCreditsDAFE: dc.b $80,$99,$80,$99,$80,$9E,$80,$E3<br />
MusCreditsDB06: dc.b $EF,$07,$80,$54,$C7,$04,$C8,$C9,$CA,$24,$CD,$D2<br />
dc.b $18,$D0,$24,$CF,$CB,$18,$CB,$0C,$CA,$80,$CD,$60<br />
dc.b $E7,$3C,$CA,$24,$CD,$D2,$18,$D4,$24,$D0,$D4,$18<br />
dc.b $D4,$24,$D6,$60,$E7,$3C,$E3<br />
MusCred_FM2: dc.b $80,$60,$EF,$01,$E8,$06,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $85,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8A,$87,$88,$89,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $88<br />
dc.b $F7,$00,$0B<br />
dc.w z80_ptr(-)<br />
- dc.b $8A<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$E6,$FC,$8A,$8B,$8C,$E6,$04,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$8D,$8A,$8B,$8C,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8D,$06,$99,$E8,$00,$8A,$0C,$8B,$8C,$E9,$E8,$E6<br />
dc.b $0C,$EF,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E6,$F9,$EF,$08<br />
MusCreditsDB93: dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $06,$9C,$12,$9D,$0C,$9E,$F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9D,$04,$80,$08,$9D,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $9C,$04,$80,$08,$9C,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(MusCreditsDB93)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$13,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$60,$EF,$0F,$E6,$F3<br />
dc.b $F0,$04,$02,$03,$02<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$30,$E7,$18,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$EF,$13,$E6,$F5,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$0C,$A9,$08,$A1,$10,$F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$08,$A9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E1,$02,$E9,$F4,$E6,$0A,$F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$EF,$1B,$E1,$00<br />
dc.b $E8,$06,$80,$3C,$B8,$06,$06,$BA,$BD,$BD,$BA,$EF<br />
dc.b $1D,$E6,$FA,$E8,$00,$F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $EF,$1C,$BD,$EF,$1D,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $80,$30,$80,$EF,$01,$E9,$18,$E6,$F9<br />
- dc.b $99,$0C,$A5,$06,$80,$96,$0C,$A2,$06,$80,$97,$0C<br />
dc.b $A3,$06,$80,$98,$0C,$A8,$06,$A7,$99,$06,$99,$12<br />
dc.b $96,$0C,$A2,$06,$80,$97,$0C,$A3,$06,$80,$98,$0C<br />
dc.b $A4,$06,$80<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$22,$E9,$E8,$E6,$03<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$AC,$04,$AE,$08,$B1,$04,$B5,$30,$80,$0C<br />
dc.b $B5,$08,$80,$04,$B6,$08,$B5,$10,$B9,$08,$04,$80<br />
dc.b $08,$B5,$34,$80,$0C,$B5,$BA,$08,$04,$80,$08,$B5<br />
dc.b $04,$B1,$24,$80,$0C,$B1,$08,$80,$04,$B3,$08,$B1<br />
dc.b $04,$B4,$0C,$B3,$08,$B1,$4C,$80,$0C,$B5,$08,$80<br />
dc.b $04,$B6,$08,$80,$04,$B5,$08,$80,$04,$B9,$08,$04<br />
dc.b $80,$08,$B5,$1C,$80,$0C,$BA,$18,$BC,$08,$BA,$04<br />
dc.b $BD,$18,$80,$0C,$BA,$04,$80,$08,$B8,$18,$B5,$B1<br />
dc.b $B3,$0C,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$0C,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$14,$B1,$04,$E6,$FF,$EF,$24,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $AC,$12,$AB,$0C,$AC,$06,$AB,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $B3,$12,$B2,$0C,$B3,$06,$B2,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $AC,$06,$80,$A9,$80,$AA,$80,$AB,$80,$AC,$AC,$A9<br />
dc.b $80,$AA,$80,$AC,$80,$A9,$80,$A9,$80,$AD,$80,$AD<br />
dc.b $80,$B0,$80,$B0,$80,$B3,$80,$B3,$80,$80,$0C,$A2<br />
dc.b $12,$80,$06,$A2,$12,$AD,$AE,$06,$80,$E6,$FD,$A2<br />
dc.b $6C,$F2<br />
MusCreditsDD59: dc.b $80,$0C,$C4,$06,$80,$C6,$80,$C4,$80,$C9,$80,$C9<br />
dc.b $80,$CB,$CD,$80,$0C,$80,$CB,$18,$C6,$06,$80,$C9<br />
dc.b $C9,$80,$CB,$0C,$80,$12,$80,$1E,$C7,$06,$C9,$C7<br />
dc.b $CB,$80,$C9,$80,$C7,$C9,$80,$C6,$E7,$C6,$30,$E7<br />
dc.b $18,$80,$18,$E3<br />
MusCreditsDD8D: dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
dc.b $06,$AB,$9F,$0C,$E3<br />
MusCreditsDD9D: dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$B6,$80,$18<br />
dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$30,$E7,$E3<br />
MusCreditsDDB5: dc.b $BF,$06,$BD,$BF,$12,$C2,$BF,$0C,$C1,$80,$06,$12<br />
dc.b $C4,$0C,$C2,$06,$80,$C9,$C6,$3C,$80,$06,$0C,$C7<br />
dc.b $12,$C6,$C4,$06,$C2,$C1,$18,$E3<br />
MusCreditsDDD5: dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$E3<br />
MusCreditsDDEA: dc.b $A2,$0C,$AE,$AC,$08,$AE,$04,$AC,$08,$A9,$04,$A7<br />
dc.b $08,$04,$E3<br />
MusCreditsDDF9: dc.b $80,$0C,$B1,$AE,$06,$06,$AC,$0C,$80,$B0,$AE,$06<br />
dc.b $06,$AC,$0C,$E3<br />
MusCreditsDE09: dc.b $AE,$AC,$06,$06,$AA,$0C,$80,$AC,$0C,$06,$06,$AE<br />
dc.b $AC,$E3<br />
MusCreditsDE17: dc.b $BA,$04,$80,$08,$B8,$18,$B5,$B1,$E3<br />
MusCreditsDE20: dc.b $AE,$06,$80,$AE,$80,$A9,$80,$A9,$80,$E3<br />
MusCreditsDE2A: dc.b $8A,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $E3<br />
MusCred_FM3: dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$18,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $B8,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $BD,$3C,$E9,$E8,$E6,$02,$E1,$03,$EF,$04,$E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$09,$E9,$0C,$E6,$FD,$E0,$40<br />
dc.b $F0,$06,$01,$05,$04<br />
dc.b $E1,$00<br />
- dc.b $9F,$0C,$AB,$06,$80,$A9,$80,$AB,$9F,$80,$9F,$AB<br />
dc.b $80,$A9,$80,$AB,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $9D,$0C,$A9,$06,$80,$A8,$80,$A9,$9C,$80,$9C,$A8<br />
dc.b $80,$A6,$80,$A8,$0C<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0D,$E6,$FB,$E0,$C0,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0F,$E0,$80,$E6,$0B,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$48,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$0C<br />
dc.b $F0,$18,$01,$03,$04<br />
dc.b $E6,$F3,$E0,$C0,$EF,$14,$A2,$14,$A4,$04,$A5,$04<br />
dc.b $80,$08,$A9,$04,$80,$08,$A8,$04,$80,$08,$A9,$04<br />
dc.b $80,$08,$AC,$08,$A9,$10<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$18,$E9,$F4,$E6,$08,$F4,$E0,$40,$80,$60,$80<br />
dc.b $30,$C6,$06,$80,$C2,$0C,$C4,$09,$C2,$03,$BF,$0C<br />
dc.b $80,$60,$80,$3C,$80,$60,$EF,$1B,$E6,$FB,$E0,$C0<br />
dc.b $E8,$06,$C4,$06,$06,$C6,$C9,$C9,$C6,$E8,$00,$CD<br />
dc.b $0C,$E8,$06,$C9,$06,$C6,$C9,$0C,$80,$80,$12,$EF<br />
dc.b $1C,$E8,$00,$BD,$BA,$0C,$E8,$06,$EF,$1B,$CE,$06<br />
dc.b $CE,$80,$CE,$80,$CE,$E8,$00,$CF,$0C,$D0,$80,$E8<br />
dc.b $06,$D0,$06,$06,$D2,$D0,$E8,$00,$CD,$0C,$E8,$06<br />
dc.b $C9,$06,$C6,$C9,$0C,$E8,$00,$EF,$1C,$80,$1E,$C2<br />
dc.b $0C,$C2,$BD,$06,$80,$60,$80,$60,$EF,$00,$E9,$18<br />
dc.b $80,$60,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC,$06<br />
dc.b $AE,$B1,$80,$B4,$B1,$80,$B1,$80,$60,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$60,$EF,$22,$E9,$DC,$E6,$FF,$E0,$80<br />
dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $CD,$30,$CB,$18,$CD,$0C,$CB,$C9,$30,$CE,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$FC,$80,$C4,$80,$C4,$80,$C6,$18,$08,$C4,$04<br />
dc.b $E9,$0C,$E6,$FF,$E0,$C0,$EF,$00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $CB,$12,$CB,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $D0,$12,$D0,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$CB,$12,$80,$06,$CB,$80,$CA,$12,$CB,$CA<br />
dc.b $0C,$C5,$18,$C8,$CB,$D1,$80,$0C,$CD,$80,$CD,$12<br />
dc.b $CC,$CD,$06,$80,$E6,$F8,$EF,$01,$E1,$03,$A2,$6C<br />
dc.b $F2<br />
MusCreditsDFF2: dc.b $80,$60,$BC,$06,$BD,$BC,$B8,$BA,$B6,$0C,$B8,$B3<br />
dc.b $B3,$06,$B6,$0C,$B8,$E3<br />
MusCreditsE004: dc.b $80,$0C,$CD,$04,$80,$10,$CD,$04,$80,$0C,$CD,$0C<br />
dc.b $CE,$08,$CD,$04,$80,$18,$80,$0C,$CB,$04,$80,$10<br />
dc.b $CB,$04,$80,$0C,$CB,$0C,$CD,$08,$CB,$04,$80,$18<br />
- dc.b $80,$0C,$C9,$04,$80,$10,$C9,$04,$80,$0C,$C9,$0C<br />
dc.b $CB,$08,$C9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E3<br />
MusCreditsE040: dc.b $80,$18,$B8,$0B,$80,$0D,$BA,$0C,$0B,$80,$19,$BD<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE051: dc.b $80,$0C,$C4,$80,$C4,$80,$C6,$80,$C6,$E3<br />
MusCreditsE05B: dc.b $CD,$06,$80,$CD,$80,$CA,$80,$CA,$80,$E3<br />
MusCreditsE065: dc.b $EF,$05,$E9,$F4,$C6,$60,$CB,$CD,$E7,$CD,$C6,$60<br />
dc.b $D0,$D0,$24,$D2,$60,$E7,$3C,$E3<br />
MusCred_FM4: dc.b $80,$60,$E9,$FB,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$1D,$E6,$02,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B5,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B8,$3C,$E6,$06,$EF,$05<br />
dc.b $F0,$02,$01,$FE,$04<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E9,$F4,$E6,$F7<br />
dc.b $F0,$0C,$01,$FB,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$25,$C3,$06,$C3,$80,$0C,$C3,$06,$C3,$05,$80<br />
dc.b $0D,$C3,$06,$C5,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$05,$F4,$E1,$02,$E0<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$0C,$80,$60,$EF,$10,$E6,$F7,$E1,$00,$E0<br />
dc.b $40,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $B3,$B7,$06,$AE,$0C,$B1,$B3,$B7,$06,$80,$B7,$AE<br />
dc.b $0C,$B1,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $EF,$15,$E6,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
- dc.b $EF,$14,$80,$4E,$E0,$40,$A1,$12,$A2,$06,$E0,$C0<br />
dc.b $EF,$16,$80,$30,$80,$06,$BA,$08,$B9,$04,$B8,$08<br />
dc.b $B7,$04,$B6,$08,$B5,$04<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E9,$F4,$E6,$02,$E0,$C0<br />
dc.b $F0,$01,$01,$03,$03<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$1E,$E0,$40,$E6,$FE,$E9,$F4,$F4,$E8<br />
dc.b $06,$80,$0C,$C1,$06,$12,$18,$C4,$06,$12,$0C,$EF<br />
dc.b $1C,$E0,$C0,$E6,$FA,$E8,$00,$C6,$E8,$06,$E6,$06<br />
dc.b $EF,$1E,$E0,$40,$C2,$06,$12,$18,$C4,$06,$12,$18<br />
dc.b $C1,$06,$12,$18,$C4,$06,$12,$0C,$EF,$1A,$E0,$C0<br />
dc.b $E9,$0C,$C6,$06,$C6,$80,$C6,$80,$C6,$E8,$00,$C7<br />
dc.b $0C,$C8,$06,$EF,$1E,$E0,$40,$E9,$F4,$E8,$06,$80<br />
dc.b $C4,$06,$12,$0C,$80,$60,$EF,$20,$E9,$18,$E6,$FA<br />
dc.b $E0,$C0,$E8,$00,$B4,$03,$E7,$B6,$5D,$B3,$03,$E7<br />
dc.b $B5,$5D,$B1,$03,$E7,$B3,$5D,$B3,$03,$E7,$B5,$5D<br />
dc.b $80,$60,$EF,$22,$E0,$40,$E9,$E8,$E6,$04,$80,$30<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $C9,$30,$C8,$18,$C9,$0C,$C8,$C6,$30,$C9,$80,$0C<br />
dc.b $C1,$80,$C1,$80,$C2,$80,$C2,$E6,$04,$80,$C1,$80<br />
dc.b $C1,$80,$C2,$80,$C2,$E6,$FC,$80,$C1,$80,$C1,$80<br />
dc.b $C2,$18,$08,$C1,$04,$E9,$0C,$E6,$FF,$E0,$C0,$EF<br />
dc.b $00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $C8,$12,$C8,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $CB,$12,$CB,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E1,$03,$E6,$08,$F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $E6,$F0,$EF,$01<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $A2,$6C,$F2<br />
MusCreditsE22D: dc.b $A2,$14,$A4,$04,$A5,$04,$80,$08,$A9,$04,$80,$08<br />
dc.b $A8,$04,$80,$08,$A9,$04,$80,$08,$AC,$08,$A9,$10<br />
dc.b $E3<br />
MusCreditsE246: dc.b $80,$0C<br />
dc.b $C9,$04,$80,$10<br />
dc.b $C9,$04,$80,$0C<br />
dc.b $C9,$0C<br />
dc.b $CB,$08<br />
dc.b $C9,$04,$80,$18,$80,$0C<br />
dc.b $C8,$04,$80,$10<br />
dc.b $C8,$04,$80,$0C<br />
dc.b $C8,$0C<br />
dc.b $C9,$08<br />
dc.b $C8,$04,$80,$18,$80,$0C<br />
<br />
if 1==1<br />
; this part of the original credits music (CNZ PSG) sounds buggy (dissonant)<br />
dc.b $C6,$04,$80,$10<br />
dc.b $C6,$04,$80,$0C<br />
dc.b $C6,$0C<br />
dc.b $C8,$08<br />
dc.b $C6,$04,$80,$18,$80,$0C<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $C7,$08<br />
else<br />
; replace the above block of notes with this to fix it.<br />
; (I'm not sure why, but the notes $C6 and $C7 are broken here,<br />
; so I've replaced them with pitch-shifted $C8s)<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$10 ; $C6<br />
dc.b $C8,$04,$80,$0C ; $C6<br />
dc.b $C8,$0C ; $C6<br />
dc.b $E1,0<br />
dc.b $C8,$08<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$24 ; $C6<br />
dc.b $E1,0<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $E1,-32<br />
dc.b $C8,$08 ; $C7<br />
dc.b $E1,0<br />
endif<br />
<br />
dc.b $C5,$04,$80,$18<br />
dc.b $E3<br />
MusCreditsE28F: dc.b $EF,$25,$80,$0C,$D0,$D4,$D7,$DB,$0C,$80,$06,$DB<br />
dc.b $0C,$DC,$06,$DB,$0C,$DD,$60,$DE,$0C,$80,$DE,$80<br />
dc.b $80,$06,$DD,$12,$DE,$0C,$E3<br />
MusCreditsE2AE: dc.b $80,$18,$B5,$0B,$80,$0D,$B7,$0C,$0B,$80,$19,$BA<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE2BF: dc.b $C3,$05,$80,$13,$C3,$12,$C3,$05,$E3<br />
MusCreditsE2C8: dc.b $CA,$06,$80,$CA,$80,$C6,$80,$C6,$80,$E3<br />
MusCreditsE2D2: dc.b $AF,$0C,$B3,$06,$B6,$0C,$AF,$B1,$06,$80,$B1,$0C<br />
dc.b $B5,$06,$B8,$0C,$B1,$06,$80,$B6,$0C,$BA,$06,$B1<br />
dc.b $0C,$B5,$B6,$BA,$06,$80,$BA,$AF,$0C,$B3,$B5,$B8<br />
dc.b $06,$B2,$0C,$B3,$B5,$B8,$06,$80,$B8,$B2,$0C,$B5<br />
dc.b $E3<br />
MusCred_FM5: dc.b $E9,$E8,$E6,$F8,$E1,$05,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$18,$E6,$08,$E1,$00,$EF,$02<br />
dc.b $F0,$0C,$01,$FC,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B1,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B5,$3C,$E9,$F4,$E6,$07<br />
dc.b $F0,$30,$01,$04,$04<br />
dc.b $EF,$06<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E6,$F6<br />
dc.b $F0,$0C,$01,$05,$04<br />
dc.b $E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$25,$C6,$06,$C6,$80,$0C,$C6,$06,$C6,$05,$80<br />
dc.b $0D,$C6,$06,$C8,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$E6,$05,$F4,$80,$01,$EF,$0C,$E1<br />
dc.b $FE,$E0,$40,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $23,$80,$0C,$80,$60,$EF,$11,$E9,$F4,$E6,$F4,$E1<br />
dc.b $00,$E0,$C0<br />
dc.b $F0,$06,$01,$06,$05<br />
dc.b $80,$60,$80,$30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60<br />
dc.b $80,$06,$CB,$80,$CB,$C9,$80,$C9,$80,$C7,$80,$C7<br />
dc.b $80,$C6,$03,$80,$C6,$80,$09,$80,$06,$80,$60,$80<br />
dc.b $30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60,$EF,$16,$E9<br />
dc.b $0C,$E6,$04,$F4,$E0,$80,$80,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
dc.b $80,$2F,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$30,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$60,$EF,$19,$E9,$F4,$E0,$C0,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$27,$B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$2A,$80,$60,$EF,$1E,$E9,$F4,$E8,$06<br />
- dc.b $80,$0C,$C4,$06,$12,$18,$C8,$06,$12,$0C,$80,$C6<br />
dc.b $06,$12,$18,$C8,$06,$12,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$20,$E8,$00,$E9,$18,$E6,$FA,$B8,$03<br />
dc.b $E7,$BA,$5D,$B6,$03,$E7,$B8,$5D,$B4,$03,$E7,$B6<br />
dc.b $5D,$B6,$03,$E7,$B8,$5D,$80,$60,$EF,$22,$E9,$F4<br />
dc.b $E6,$05<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$A7,$04,$A9,$08,$AC,$04,$B1,$30,$80,$0C<br />
dc.b $B1,$08,$80,$04,$B3,$08,$B1,$10,$B5,$08,$B5,$04<br />
dc.b $80,$08,$B0,$34,$80,$0C,$B0,$B5,$08,$04,$80,$08<br />
dc.b $B1,$04,$AE,$24,$80,$0C,$AE,$08,$80,$04,$B0,$08<br />
dc.b $AE,$04,$B1,$0C,$AF,$08,$AD,$4C,$80,$0C,$B1,$08<br />
dc.b $80,$04,$B3,$08,$80,$04,$B1,$08,$80,$04,$B5,$08<br />
dc.b $B5,$04,$80,$08,$B0,$1C,$80,$0C,$B5,$18,$B8,$08<br />
dc.b $B5,$04,$BA,$18,$80,$0C,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$04,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$F8,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$AA,$14,$A9,$04,$E6,$0C,$EF,$23,$E1,$03<br />
dc.b $E6,$F7,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E6,$09<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $F2<br />
MusCreditsE4CD: dc.b $80,$1E,$EF,$14,$A4,$12,$A5,$06,$EF,$16,$80,$30<br />
dc.b $80,$06,$BD,$08,$BC,$04,$BB,$08,$BA,$04,$B9,$08<br />
dc.b $B8,$04,$E3<br />
MusCreditsE4E8: dc.b $80,$18,$B1,$0B,$80,$0D,$B3,$0C,$0B,$80,$19,$B6<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE4F9: dc.b $C6,$05,$80,$13,$C6,$12,$C6,$05,$E3<br />
MusCreditsE502: dc.b $80,$60,$AC,$06,$80,$AC,$0C,$AE,$06,$80,$AE,$0C<br />
dc.b $AF,$06,$E3<br />
MusCred_PSG1: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG1)<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$F4,$E6,$FE,$F5,$01,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $AE,$B3,$06,$AC,$0C,$AE,$AE,$B3,$06,$80,$B3,$AB<br />
dc.b $0C,$AE,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $F5,$0B,$80,$04,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$20,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$F5,$00,$E8,$06,$E9,$F4,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$80,$C2,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$04,$80,$C2,$80,$0C,$C2,$80,$60,$F5,$08,$E9<br />
dc.b $04,$EC,$02,$E8,$06<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F0,$EC,$FF,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $E9,$18,$EC,$02,$B5,$30,$B3,$18,$B5,$0C,$B3,$B1<br />
dc.b $30,$B6,$EC,$FE,$80,$0C,$B8,$80,$B8,$80,$BA,$80<br />
dc.b $BA,$EC,$03,$C4,$18,$C1,$BD,$BF,$0C,$80,$EC,$FC<br />
dc.b $80,$B8,$80,$B8,$80,$BA,$18,$08,$B8,$04,$E9,$F4<br />
dc.b $EC,$01,$F5,$05<br />
- dc.b $80,$60<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$C8,$12,$80,$06,$C8,$80,$C6,$12,$C8,$C6<br />
dc.b $0C,$C1,$18,$C5,$C8,$CB,$80,$0C,$CA,$80,$CA,$12<br />
dc.b $C9,$CA,$06,$80,$09,$E9,$30,$EC,$FC,$F6<br />
dc.w z80_ptr(MusCreditsE770)<br />
dc.b $F2<br />
MusCreditsE618: dc.b $80,$0C,$BD,$06,$12,$18,$C4,$06,$12,$0C,$80,$C2<br />
dc.b $06,$12,$18,$C4,$06,$12,$0C,$E3<br />
MusCreditsE62C: dc.b $80,$60,$80,$0C,$C2,$80,$C2,$80,$E3<br />
MusCreditsE635: dc.b $AC,$0C,$AF,$06,$B3,$0C,$AC,$AC,$06,$80,$AC,$0C<br />
dc.b $AF,$06,$B5,$0C,$AC,$06,$80,$06,$B1,$0C,$B6,$06<br />
dc.b $AE,$0C,$B1,$B3,$B6,$06,$80,$B6,$AA,$0C,$AF,$AF<br />
dc.b $B5,$06,$AC,$0C,$AF,$B2,$B5,$06,$80,$B5,$AE,$0C<br />
dc.b $B2,$E3<br />
MusCred_PSG2: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG2)<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$0C,$EC,$FD,$F5,$04,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
dc.b $F0,$03,$02,$01,$05<br />
dc.b $F5,$0A,$E9,$E8,$EC,$02,$80,$30,$80,$80,$BD,$06<br />
dc.b $BF,$C6,$C2,$1E,$80,$60,$80,$06,$C6,$80,$C6,$C4<br />
dc.b $80,$C4,$80,$C3,$80,$C3,$80,$BF,$03,$80,$BF,$80<br />
dc.b $09,$80,$06,$80,$30,$80,$80,$BD,$06,$BF,$C6,$C2<br />
dc.b $1E,$80,$60,$F4<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$00,$EC,$FE,$E8,$06,$80,$60,$80,$0C,$BF,$80<br />
dc.b $BF,$80,$BF,$80,$BF,$80,$60,$80,$0C,$BF,$80,$BF<br />
dc.b $80,$BF,$04,$80,$BF,$80,$0C,$BF,$80,$60,$EC,$02<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F4,$EC,$FF,$E9,$E8,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $E9,$18,$EC,$02,$B1,$30,$B0,$18,$B1,$0C,$B0,$AE<br />
dc.b $30,$B1,$EC,$FE,$80,$0C,$B5,$80,$B5,$80,$B6,$80<br />
dc.b $B6,$EC,$03,$80,$B1,$80,$B1,$80,$B1,$80,$B1,$EC<br />
dc.b $FC,$80,$B1,$80,$B1,$80,$B1,$18,$08,$B1,$04,$EC<br />
dc.b $01,$E9,$18,$F5,$05,$E1,$01,$80,$60,$80,$80,$80<br />
dc.b $80,$80,$80,$0C,$CD,$06,$80,$D4,$CD,$80,$0C,$CD<br />
dc.b $06,$80,$D4,$CD,$80,$18,$80,$54,$E9,$24,$EC,$FD<br />
MusCreditsE770: dc.b $F5,$03,$80,$06<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$FF<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$01<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusCred_PSG3: dc.b $F3,$E7,$80,$60,$F5,$02<br />
- dc.b $C6,$0C,$0C,$0C,$06,$06,$0C,$0C,$06,$06,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$1F<br />
dc.w z80_ptr(-)<br />
dc.b $0C,$F5,$03,$C6,$F5,$02<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $06,$06,$06,$06<br />
dc.b $F7,$01,$04<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$04,$EC,$02<br />
- dc.b $E8,$03,$C6,$06,$06,$E8,$00,$0C<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$02,$EC,$FD<br />
- dc.b $80,$0C,$C6,$06,$80,$07,$C6,$06,$80,$11,$C6,$0C<br />
dc.b $80,$06,$C6,$0C,$80,$06,$C6,$80<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$02<br />
- dc.b $C6,$0C,$08,$04<br />
dc.b $F7,$00,$18<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$0C,$0C,$08,$04<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$04,$EC,$02<br />
- dc.b $C6,$06,$06,$0C<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EC,$FF<br />
- dc.b $F5,$01,$C6,$0C,$F5,$02,$EC,$FF,$08,$F5,$01,$EC<br />
dc.b $01,$04<br />
dc.b $F7,$00,$27<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$FF,$F5,$04<br />
- dc.b $E8,$03,$C6,$0C,$E8,$0C,$0C<br />
dc.b $F7,$00,$1E<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$03,$C6,$06,$E8,$0E,$12,$E8,$03,$0C,$E8,$0F<br />
dc.b $0C,$F2<br />
MusCred_DAC: dc.b $82,$06,$82,$82,$82,$82,$0C,$06,$0C,$06,$0C,$0C<br />
dc.b $0C<br />
- dc.b $81,$18,$82<br />
dc.b $F7,$00,$0E<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C<br />
- dc.b $82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EA,$EA,$F8<br />
dc.w z80_ptr(MusCreditsEA6E)<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$82,$06,$82,$82,$82,$81,$0C,$82,$06,$82<br />
dc.b $81,$81,$82,$82,$82,$82<br />
- dc.b $81,$18,$82,$81,$82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$82,$82,$82,$06,$82,$8C,$8C,$8D,$8D<br />
dc.b $8E,$8E,$F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$18,$82,$0C,$81,$18,$82,$0C,$82,$82,$06,$82<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$0C,$82,$82,$82,$8D,$06,$8D,$8E,$8E,$82,$06<br />
dc.b $82,$8D,$0C,$82,$0C,$82,$06,$82,$80,$82,$82,$0C<br />
MusCreditsE8E5: dc.b $82,$0C,$82,$82,$06,$82,$8D,$8D<br />
- dc.b $81,$0C,$8F,$06,$90,$82,$0C,$90,$06,$91,$81,$0C<br />
dc.b $8F,$06,$91,$82,$0C,$8F,$06,$91<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$8F,$06,$91,$82,$0C,$8F,$06,$91,$8C,$06<br />
dc.b $03,$03,$8D,$06,$8D,$8D,$8E,$8E,$8E,$81,$06,$0C<br />
dc.b $82,$06,$80,$0C,$81,$82,$8E,$82,$06,$82,$82,$82<br />
- dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$12,$8C,$06<br />
dc.b $82,$0C,$83,$06,$81,$80<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$06,$82,$06<br />
dc.b $81,$0C,$06,$82,$0C,$08,$04,$EA,$CD,$82,$30,$82<br />
dc.b $0C,$82,$82,$82,$08,$04,$F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$04,$82,$08,$04<br />
dc.b $08,$04,$04,$04,$04,$08,$04,$EA,$C5<br />
- dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82,$0C,$06<br />
dc.b $06,$81,$0C,$82,$06,$82,$82,$82,$8D,$0C,$82,$0C<br />
dc.b $0C,$0C,$06,$06<br />
- dc.b $81,$0C,$81,$82,$80,$81,$81,$82,$83<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$82,$82,$82,$82,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $81,$06,$81,$82,$82,$81,$82,$81,$81,$82,$02,$82<br />
dc.b $04,$81,$0C,$06,$82,$0C,$06,$06,$81,$18,$82,$0C<br />
dc.b $81,$81,$18,$82,$81,$06,$81,$12,$82,$0C,$81,$81<br />
dc.b $18,$82,$81,$18,$82,$0C,$81,$81,$18,$82,$81,$06<br />
dc.b $81,$12,$82,$0C,$0C,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $82,$02,$04,$81,$0C,$06,$0C,$82,$02,$04,$81,$0C<br />
dc.b $06,$0C,$82,$06,$82,$82,$82,$EA,$C0,$81,$0C,$82<br />
dc.b $81,$82,$81,$82,$81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$0F<br />
dc.w z80_ptr(-)<br />
dc.b $81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$13<br />
dc.w z80_ptr(-)<br />
dc.b $82,$08,$0C,$04,$81,$0C,$82,$81,$82,$81,$0C,$82<br />
dc.b $81,$06,$80,$02,$82,$82,$82,$09,$82,$03<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$06,$80,$02,$82,$82,$82,$09,$82<br />
dc.b $03<br />
dc.b $F7,$01,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$82,$81,$06,$82,$12,$82,$0C,$81<br />
dc.b $F2<br />
MusCreditsEA6E: dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$83,$E3<br />
MusCreditsEA84: dc.b $81,$18,$82,$0C,$81,$18,$0C,$82,$81,$81,$18,$82<br />
dc.b $0C,$81,$12,$81,$82,$18,$81,$82,$0C,$81,$18,$0C<br />
dc.b $82,$81,$E3<br />
MusCreditsEA9F: dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$0C,$82,$04,$81<br />
dc.b $0C,$82,$81,$81,$08,$0C,$04,$82,$0C,$81,$08,$0C<br />
dc.b $82,$04,$81,$0C,$82,$82,$08,$04,$E3,$81,$06,$80<br />
dc.b $03,$81,$81,$06,$82,$81,$06,$80,$03,$81,$81,$06<br />
dc.b $82,$03,$82,$81,$06,$80,$03,$81,$81,$06,$82,$E3<br />
MusCred_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$01,$1F,$1F,$FF,$0F,$17,$27,$28,$80<br />
dc.b $08,$09,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$25,$0E,$30,$84<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$0B,$0D,$19,$0B,$80,$80<br />
dc.b $08,$0A,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$24,$13,$2D,$80<br />
dc.b $3D,$01,$51,$21,$01,$12,$14,$14,$0F,$0A,$05,$05<br />
dc.b $05,$00,$00,$00,$00,$2B,$2B,$2B,$1B,$19,$80,$80,$80<br />
dc.b $04,$57,$70,$02,$50,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$06,$00,$0A,$0A,$00,$00,$0F,$0F,$1A,$10,$80,$80<br />
dc.b $35,$01,$13,$01,$00,$1F,$18,$1D,$19,$00,$06,$09<br />
dc.b $0D,$00,$02,$00,$03,$00,$15,$06,$16,$1E,$83,$80,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1A,$16,$88,$88<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$14,$0F,$37,$80<br />
dc.b $3B,$0F,$01,$06,$02,$DF,$1F,$1F,$DF,$0C,$0A,$00<br />
dc.b $03,$0F,$00,$00,$01,$F3,$55,$05,$5C,$22,$22,$20,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1C,$14,$84,$80<br />
dc.b $3A,$69,$50,$70,$60,$1C,$1A,$18,$18,$10,$02,$0C<br />
dc.b $09,$08,$06,$06,$03,$F9,$06,$56,$06,$28,$14,$15,$00<br />
dc.b $3D,$00,$02,$01,$01,$4C,$50,$0F,$12,$0C,$00,$02<br />
dc.b $05,$01,$00,$00,$00,$28,$2A,$29,$19,$1A,$06,$00,$00<br />
dc.b $2C,$71,$31,$71,$31,$1F,$1F,$16,$16,$00,$00,$0F<br />
dc.b $0F,$00,$00,$0F,$0F,$00,$00,$FA,$FA,$15,$14,$00,$00<br />
dc.b $18,$37,$31,$32,$31,$9E,$1C,$DC,$9C,$0D,$04,$06<br />
dc.b $01,$08,$03,$0A,$05,$B6,$36,$B6,$28,$2C,$14,$22,$00<br />
dc.b $3D,$01,$02,$02,$02,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$24,$18,$18,$18,$1C,$82,$82,$82<br />
dc.b $32,$71,$33,$0D,$01,$5F,$5F,$99,$94,$05,$05,$05<br />
dc.b $07,$02,$02,$02,$02,$11,$11,$11,$72,$23,$26,$2D,$80<br />
dc.b $3A,$32,$52,$01,$31,$1F,$1F,$1F,$18,$01,$00,$1F<br />
dc.b $00,$00,$00,$0F,$00,$5A,$03,$0F,$1A,$3B,$4F,$30,$00<br />
dc.b $3C,$42,$32,$41,$41,$12,$12,$12,$12,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$06,$06,$08,$08,$24,$24,$08,$08<br />
dc.b $31,$34,$30,$35,$31,$DF,$9F,$DF,$9F,$0C,$0C,$07<br />
dc.b $09,$07,$07,$07,$08,$2F,$1F,$1F,$2F,$17,$14,$32,$80<br />
dc.b $3D,$01,$01,$01,$01,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$20,$1A,$1A,$1A,$19,$84,$84,$84<br />
dc.b $24,$70,$30,$74,$38,$12,$1F,$1F,$1F,$05,$05,$03<br />
dc.b $03,$05,$05,$03,$03,$36,$26,$2C,$2C,$0A,$06,$08,$08<br />
dc.b $3A,$01,$01,$01,$02,$8D,$07,$07,$52,$09,$00,$00<br />
dc.b $03,$01,$02,$02,$00,$5F,$0F,$0F,$2F,$18,$18,$22,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$03,$03,$08,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$17,$20,$28,$80<br />
dc.b $20,$7A,$00,$31,$00,$9F,$DC,$D8,$DF,$10,$04,$0A<br />
dc.b $04,$0F,$08,$08,$08,$5F,$BF,$5F,$BF,$14,$17,$2B,$80<br />
dc.b $3A,$61,$51,$08,$02,$5D,$5D,$5D,$50,$04,$1F,$0F<br />
dc.b $1F,$00,$00,$00,$00,$1F,$0F,$5F,$0F,$22,$22,$1E,$80<br />
dc.b $02,$01,$02,$55,$04,$92,$8E,$8D,$54,$0D,$00,$0C<br />
dc.b $03,$00,$00,$00,$00,$FF,$0F,$2F,$5F,$16,$1D,$2A,$80<br />
dc.b $02,$75,$73,$71,$31,$1F,$96,$58,$9F,$01,$03,$1B<br />
dc.b $08,$01,$01,$04,$05,$FF,$3F,$2F,$2F,$24,$30,$29,$80<br />
dc.b $20,$66,$60,$65,$60,$DF,$9F,$DF,$1F,$00,$09,$06<br />
dc.b $0C,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$1C,$16,$3A,$80<br />
dc.b $0D,$32,$06,$08,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$86,$80,$8D<br />
dc.b $38,$3A,$11,$0A,$02,$D4,$50,$14,$0E,$05,$02,$08<br />
dc.b $88,$00,$00,$00,$00,$99,$09,$09,$1A,$2D,$19,$2C,$86<br />
dc.b $0D,$32,$02,$04,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$8B,$86,$93<br />
dc.b $3A,$20,$60,$23,$01,$1E,$1F,$1F,$1F,$0A,$0B,$0A<br />
dc.b $0A,$05,$0A,$07,$08,$A4,$96,$85,$78,$21,$28,$25,$00<br />
dc.b $3A,$32,$32,$56,$42,$8D,$15,$4F,$52,$06,$07,$08<br />
dc.b $04,$02,$00,$00,$00,$18,$28,$18,$28,$19,$2A,$20,$00<br />
dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$19,$13,$37,$80<br />
dc.b $3D,$01,$02,$02,$02,$14,$8C,$0E,$0E,$08,$02,$05<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$1A,$80,$80,$80<br />
; end of Mus_Credits<br />
<br />
; ------------------------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ------------------------------------------------------------------------------------------<br />
; WARNING the sound driver treats certain sounds specially<br />
; going by the ID of the sound.<br />
; SndID_Ring, SndID_RingLeft, SndID_Gloop, SndID_SpindashRev<br />
; are referenced by the sound driver directly.<br />
; If needed you can change this in s2.sounddriver.asm<br />
<br />
<br />
; NOTE: the exact order of this list determines the priority of each sound, since it determines the sound's SndID.<br />
; a sound can get dropped if a higher-priority sound is already playing.<br />
; the rules for sound priority are currently unknown, but you can generally swap pointer lines around to resolve priority conflicts.<br />
; loc_FEE91: SoundPoint:<br />
SoundIndex:<br />
SndPtr_Jump: rom_ptr_z80 Sound20 ; jumping sound<br />
SndPtr_Checkpoint: rom_ptr_z80 Sound21 ; checkpoint ding-dong sound<br />
SndPtr_SpikeSwitch: rom_ptr_z80 Sound22 ; spike switch sound<br />
SndPtr_Hurt: rom_ptr_z80 Sound23 ; hurt sound<br />
SndPtr_Skidding: rom_ptr_z80 Sound24 ; skidding sound<br />
SndPtr_BlockPush: rom_ptr_z80 Sound25 ; block push sound<br />
SndPtr_HurtBySpikes: rom_ptr_z80 Sound26 ; spiky impalement sound<br />
SndPtr_Sparkle: rom_ptr_z80 Sound27 ; sparkling sound<br />
SndPtr_Beep: rom_ptr_z80 Sound28 ; short beep<br />
SndPtr_Bwoop: rom_ptr_z80 Sound29 ; bwoop<br />
SndPtr_Splash: rom_ptr_z80 Sound2A ; splash sound<br />
SndPtr_Swish: rom_ptr_z80 Sound2B ; swish<br />
SndPtr_BossHit: rom_ptr_z80 Sound2C ; boss hit<br />
SndPtr_InhalingBubble: rom_ptr_z80 Sound2D ; inhaling a bubble<br />
SndPtr_ArrowFiring:<br />
SndPtr_LavaBall: rom_ptr_z80 Sound2E ; arrow firing<br />
SndPtr_Shield: rom_ptr_z80 Sound2F ; shield sound<br />
SndPtr_LaserBeam: rom_ptr_z80 Sound30 ; laser beam<br />
SndPtr_Zap: rom_ptr_z80 Sound31 ; zap<br />
SndPtr_Drown: rom_ptr_z80 Sound32 ; drownage<br />
SndPtr_FireBurn: rom_ptr_z80 Sound33 ; fire + burn<br />
SndPtr_Bumper: rom_ptr_z80 Sound34 ; bumper bing<br />
SndPtr_Ring:<br />
SndPtr_RingRight: rom_ptr_z80 Sound35 ; ring sound<br />
SndPtr_SpikesMove: rom_ptr_z80 Sound36<br />
SndPtr_Rumbling: rom_ptr_z80 Sound37 ; rumbling<br />
rom_ptr_z80 Sound38<br />
SndPtr_Smash: rom_ptr_z80 Sound39 ; smash/breaking<br />
rom_ptr_z80 Sound3A ; nondescript ding<br />
SndPtr_DoorSlam: rom_ptr_z80 Sound3B ; door slamming shut<br />
SndPtr_SpindashRelease: rom_ptr_z80 Sound3C ; spindash unleashed<br />
SndPtr_Hammer: rom_ptr_z80 Sound3D ; slide-thunk<br />
SndPtr_Roll: rom_ptr_z80 Sound3E ; rolling sound<br />
SndPtr_ContinueJingle: rom_ptr_z80 Sound3F ; got continue<br />
SndPtr_CasinoBonus: rom_ptr_z80 Sound40 ; short bonus ding<br />
SndPtr_Explosion: rom_ptr_z80 Sound41 ; badnik bust<br />
SndPtr_WaterWarning: rom_ptr_z80 Sound42 ; warning ding-ding<br />
SndPtr_EnterGiantRing: rom_ptr_z80 Sound43 ; special stage ring flash (unused)<br />
SndPtr_BossExplosion: rom_ptr_z80 Sound44 ; thunk<br />
SndPtr_TallyEnd: rom_ptr_z80 Sound45 ; cha-ching<br />
SndPtr_RingSpill: rom_ptr_z80 Sound46 ; losing rings<br />
rom_ptr_z80 Sound47 ; chain pull chink-chink<br />
SndPtr_Flamethrower: rom_ptr_z80 Sound48 ; flamethrower<br />
SndPtr_Bonus: rom_ptr_z80 Sound49 ; bonus pwoieeew (unused)<br />
SndPtr_SpecStageEntry: rom_ptr_z80 Sound4A ; special stage entry<br />
SndPtr_SlowSmash: rom_ptr_z80 Sound4B ; slower smash/crumble<br />
SndPtr_Spring: rom_ptr_z80 Sound4C ; spring boing<br />
SndPtr_Blip: rom_ptr_z80 Sound4D ; selection blip<br />
SndPtr_RingLeft: rom_ptr_z80 Sound4E ; another ring sound (only plays in the left speaker?)<br />
SndPtr_Signpost: rom_ptr_z80 Sound4F ; signpost spin sound<br />
SndPtr_CNZBossZap: rom_ptr_z80 Sound50 ; mosquito zapper<br />
rom_ptr_z80 Sound51<br />
rom_ptr_z80 Sound52<br />
SndPtr_Signpost2P: rom_ptr_z80 Sound53<br />
SndPtr_OOZLidPop: rom_ptr_z80 Sound54 ; OOZ lid pop sound<br />
SndPtr_SlidingSpike: rom_ptr_z80 Sound55<br />
SndPtr_CNZElevator: rom_ptr_z80 Sound56<br />
SndPtr_PlatformKnock: rom_ptr_z80 Sound57<br />
SndPtr_BonusBumper: rom_ptr_z80 Sound58 ; CNZ bonusy bumper sound<br />
SndPtr_LargeBumper: rom_ptr_z80 Sound59 ; CNZ baaang bumper sound<br />
SndPtr_Gloop: rom_ptr_z80 Sound5A ; CNZ gloop / water droplet sound<br />
SndPtr_PreArrowFiring: rom_ptr_z80 Sound5B<br />
SndPtr_Fire: rom_ptr_z80 Sound5C<br />
SndPtr_ArrowStick: rom_ptr_z80 Sound5D ; chain clink<br />
SndPtr_Helicopter:<br />
SndPtr_WingFortress: rom_ptr_z80 Sound5E ; helicopter<br />
SndPtr_SuperTransform: rom_ptr_z80 Sound5F<br />
SndPtr_SpindashRev: rom_ptr_z80 Sound60 ; spindash charge<br />
SndPtr_Rumbling2: rom_ptr_z80 Sound61 ; rumbling<br />
SndPtr_CNZLaunch: rom_ptr_z80 Sound62<br />
SndPtr_Flipper: rom_ptr_z80 Sound63 ; CNZ blooing bumper<br />
SndPtr_HTZLiftClick: rom_ptr_z80 Sound64 ; HTZ track click sound<br />
SndPtr_Leaves: rom_ptr_z80 Sound65 ; kicking up leaves sound<br />
SndPtr_MegaMackDrop: rom_ptr_z80 Sound66 ; leaf splash?<br />
SndPtr_DrawbridgeMove: rom_ptr_z80 Sound67<br />
SndPtr_QuickDoorSlam: rom_ptr_z80 Sound68 ; door slamming quickly (seems unused)<br />
SndPtr_DrawbridgeDown: rom_ptr_z80 Sound69<br />
SndPtr_LaserBurst: rom_ptr_z80 Sound6A ; robotic laser burst<br />
SndPtr_Scatter:<br />
SndPtr_LaserFloor: rom_ptr_z80 Sound6B ; scatter<br />
SndPtr_Teleport: rom_ptr_z80 Sound6C<br />
SndPtr_Error: rom_ptr_z80 Sound6D ; error sound<br />
SndPtr_MechaSonicBuzz: rom_ptr_z80 Sound6E ; silver sonic buzz saw<br />
SndPtr_LargeLaser: rom_ptr_z80 Sound6F<br />
SndPtr_OilSlide: rom_ptr_z80 Sound70<br />
SndPtr__End:<br />
<br />
; There are many non-relative pointers in these sound effects,<br />
; so the sounds shouldn't simply be BINCLUDE'd.<br />
; They could be included as separate .asm files using "include" instead of "binclude",<br />
; but I wanted to minimize the number of included asm files.<br />
<br />
; some comments on what the various script commands do (after the header):<br />
; 0x00-0x7F sets the note duration (of the previous note and following notes)<br />
; 0x81-0xDF plays a note (the valid range may be smaller for PSG or DAC)<br />
; 0x80 plays silence<br />
; 0xE0-0xFF does special things. I won't list them here... search for "Coordination flags" sonic 2.<br />
<br />
; the FM voices (poorly named "ssamp" or "samples" below)<br />
; are 25 bytes each and go directly to YM2612 registers.<br />
; they can be hard to edit (there's an art to it)<br />
; but search for sonic "Voice editing" for more info if you want to try.<br />
<br />
; jumping sound<br />
Sound20: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$F400<br />
+ dc.b $F5,$00,$9E,$05,$F0,$02,$01,$F8,$65,$A3,$15,$F2<br />
<br />
; checkpoint ding-dong sound<br />
Sound21: dc.w z80_ptr(ssamp21),$0101<br />
dc.w $8005,z80_ptr(+),$0001<br />
ssamp21: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
+ dc.b $EF,$00,$BD,$06,$BA,$16,$F2<br />
<br />
; spike switch sound<br />
Sound22: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C0,$04,$CA,$04<br />
- dc.b $C0,$01,$EC<br />
dc.w $01F7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; hurt sound<br />
Sound23: dc.w z80_ptr(ssamp23),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B0,$07,$E7,$AD<br />
- dc.b $01,$E6<br />
dc.w $01F7,$002F,z80_ptr(-)<br />
dc.b $F2<br />
ssamp23: dc.b $30,$30,$30,$30,$30,$9E,$DC,$D8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$14,$14,$3C,$80<br />
<br />
; skidding sound<br />
Sound24: dc.w $0000,$0102 ; sound header... no sample and 2 script entries<br />
dc.w $80A0,z80_ptr(+),$F400 ; entry 1 header<br />
dc.w $80C0,z80_ptr(++),$F400 ; entry 2 header<br />
+ dc.b $F5,$00,$AF,$01,$80,$AF,$80,$03 ; script entry 1<br />
- dc.b $AF,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 1 end<br />
+ dc.b $F5,$00,$80,$01,$AD,$80,$AD,$80,$03 ; script entry 2<br />
- dc.b $AD,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 2 end<br />
<br />
; block push sound<br />
Sound25: dc.w z80_ptr(ssamp25),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$01,$8B,$0A,$80,$02,$F2<br />
ssamp25: dc.b $FA,$21,$10,$30,$32,$2F,$2F,$1F,$2F,$05,$09,$08<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
; spiky impalement sound<br />
Sound26: dc.w z80_ptr(ssamp26),$0101<br />
dc.w $8005,z80_ptr(+),$F200<br />
+ dc.b $EF,$00,$F0,$01,$01,$10,$FF,$CF,$05,$D7,$25,$F2<br />
ssamp26: dc.b $3B,$3C,$30,$39,$31,$DF,$1F,$1F,$DF,$04,$04,$05<br />
dc.b $01,$04,$04,$04,$02,$FF,$1F,$0F,$AF,$29,$0F,$20,$80<br />
<br />
; sparkling sound<br />
Sound27: dc.w z80_ptr(ssamp27),$0101<br />
dc.w $8004,z80_ptr(+),$0C1C<br />
+ dc.b $EF,$00,$C1,$05,$C4,$05,$C9,$2B,$F2<br />
ssamp27: dc.b $07,$73,$33,$33,$73,$0F,$19,$14,$1A,$0A,$0A,$0A<br />
dc.b $0A,$0A,$0A,$0A,$0A,$57,$57,$57,$57,$00,$00,$00,$00<br />
<br />
; short beep<br />
Sound28: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$E803<br />
+ dc.b $F5,$04,$CB,$04,$F2<br />
<br />
; bwoop<br />
Sound29: dc.w $0000,$0101<br />
dc.w $80A0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$E6,$35,$8E,$06,$F2<br />
<br />
; splash sound<br />
Sound2A: dc.w z80_ptr(ssamp2A),$0102<br />
dc.w $80C0,z80_ptr(+),$0000<br />
dc.w $8005,z80_ptr(++),$0003<br />
+ dc.b $F5,$00,$F3,$E7,$C2,$05,$C6,$05,$E7<br />
- dc.b $07,$EC,$01<br />
dc.w $E7F7,$000F,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$A6,$14,$F2<br />
ssamp2A: dc.b $00,$00,$02,$03,$00,$D9,$1F,$DF,$1F,$12,$14,$11<br />
dc.b $0F,$0A,$0A,$00,$0D,$FF,$FF,$FF,$FF,$22,$27,$07,$80<br />
<br />
; swish<br />
Sound2B: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$C6,$03,$80,$03,$C6,$01,$E7<br />
- dc.b $01,$EC,$01<br />
dc.w $E7F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; boss hit<br />
Sound2C: dc.w z80_ptr(smashsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$0C,$01<br />
- dc.b $81,$0A,$E6<br />
dc.w $10F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
smashsamp: dc.b $F9,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
<br />
; inhaling a bubble<br />
Sound2D: dc.w z80_ptr(ssamp2D),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$21,$6E,$A6,$07<br />
dc.b $80,$06,$F0,$01,$01,$44,$1E,$AD,$08,$F2<br />
ssamp2D: dc.b $35,$05,$08,$09,$07,$1E,$0D,$0D,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$1F,$2F,$1F,$15,$12,$12,$80<br />
<br />
; arrow firing<br />
Sound2E: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$C6,$01,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp2E: dc.b $FA,$02,$00,$03,$05,$12,$0F,$11,$13,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$2F,$0E,$1A,$80<br />
<br />
; shield sound<br />
Sound2F: dc.w z80_ptr(ssamp2F),$0101<br />
dc.w $8005,z80_ptr(+),$0C00<br />
+ dc.b $EF,$00,$80,$01,$A3,$05,$E7,$A4,$26,$F2<br />
ssamp2F: dc.b $30,$30,$30,$30,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$04,$14,$2C,$80<br />
<br />
; laser beam<br />
Sound30: dc.w z80_ptr(ssamp30),$0101 ; sound header... a voice and 1 script entry<br />
dc.w $8005,z80_ptr(+),$FB05 ; script entry header<br />
+ dc.b $EF,$00,$DF,$7F ; script start<br />
- dc.b $DF,$02,$E6 ; script continued<br />
dc.w $01F7,$001B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script end<br />
ssamp30: dc.b $83,$1F,$1F,$15,$1F,$1F,$1F,$1F,$1F,$00,$00,$00 ; voice<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$0B,$01,$16,$82 ; (fixed length)<br />
<br />
; zap<br />
Sound31: dc.w z80_ptr(ssamp31),$0101<br />
dc.w $8005,z80_ptr(+),$FB02<br />
+ dc.b $EF,$00,$B3,$05,$80,$01,$B3,$09,$F2<br />
ssamp31: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$05,$34,$10,$87<br />
<br />
; drownage<br />
Sound32: dc.w z80_ptr(ssamp32),$0102<br />
dc.w $8004,z80_ptr(++),$0C04<br />
dc.w $8005,z80_ptr(+),$0E02<br />
+ dc.b $EF,$00,$F0,$01,$01,$83,$0C<br />
- dc.b $8A,$05,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $80,$06,$EF,$00,$F0,$01,$01,$6F,$0E<br />
- dc.b $8D,$04,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp32: dc.b $35,$14,$04,$1A,$09,$0E,$11,$10,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$4F,$2F,$4F,$2F,$12,$12,$80<br />
<br />
; fire + burn<br />
Sound33: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$A7,$25,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; bumper bing<br />
Sound34: dc.w z80_ptr(ssamp34),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $8002,z80_ptr(+++),$0002<br />
+ dc.b $EF,$00,$F6<br />
dc.w z80_ptr(Sound34_3)<br />
+ dc.b $EF,$00,$E1,$07,$80,$01<br />
Sound34_3:<br />
dc.b $BA,$20,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
ssamp34: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$1F,$2B,$80,$80<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; ring sound<br />
Sound35: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$40,$C1,$05,$C4,$05,$C9,$1B,$F2<br />
<br />
<br />
Sound36: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C1,$07<br />
- dc.b $D0,$01,$EC<br />
dc.w $01F7,$000C,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; rumbling<br />
Sound37: dc.w z80_ptr(ssamp37),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$20,$08<br />
- dc.b $8B<br />
dc.w $0AF7,$0008,z80_ptr(-)<br />
- dc.b $8B,$10,$E6<br />
dc.w $03F7,$0009,z80_ptr(-)<br />
dc.b $F2<br />
ssamp37: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
<br />
Sound38: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$B4,$08<br />
- dc.b $B0,$02,$EC<br />
dc.w $01F7,$0003,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; smash/breaking<br />
Sound39: dc.w z80_ptr(smashsamp),$0104<br />
dc.w $8002,z80_ptr(+),$1000<br />
dc.w $8004,z80_ptr(+++),$0000<br />
dc.w $8005,z80_ptr(++),$1000<br />
dc.w $80C0,z80_ptr(s39s4),$0000<br />
+ dc.b $E0,$40,$80,$02,$F6<br />
dc.w z80_ptr(++)<br />
+ dc.b $E0,$80,$80,$01<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
s39s4: dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; nondescript ding<br />
Sound3A: dc.w z80_ptr(ssamp3A),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$AE,$08,$F2<br />
ssamp3A: dc.b $1C,$2E,$0F,$02,$02,$1F,$1F,$1F,$1F,$18,$14,$0F<br />
dc.b $0E,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$20,$1B,$80,$80<br />
<br />
; door slamming shut<br />
Sound3B: dc.w z80_ptr(ssamp3B),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$80,$A0,$06,$F2<br />
ssamp3B: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; spindash unleashed<br />
Sound3C: dc.w z80_ptr(ssamp3C),$0102<br />
dc.w $8005,z80_ptr(+),$9000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$F2<br />
+ dc.b $F5,$07,$80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$4F,$F2<br />
ssamp3C: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
<br />
; slide-thunk<br />
Sound3D: dc.w z80_ptr(ssamp3D),$0102<br />
dc.w $8005,z80_ptr(+),$100A<br />
dc.w $8004,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$60,$01,$A7,$08,$F2<br />
+ dc.b $80,$08,$EF,$01,$84,$22,$F2<br />
ssamp3D: dc.b $FA,$21,$19,$3A,$30,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
dc.b $FA,$31,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$1F,$2F,$2F,$0D,$01,$00,$80<br />
<br />
; rolling sound<br />
Sound3E: dc.w z80_ptr(ssamp3E),$0101<br />
dc.w $8004,z80_ptr(+),$0C05<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$09,$FF,$CA,$25,$F4<br />
- dc.b $E7,$E6,$01,$D0<br />
dc.w $02F7,$002A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3E: dc.b $3C,$00,$02,$44,$02,$1F,$1F,$1F,$15,$00,$00,$1F<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0D,$28,$00,$00<br />
<br />
; got continue<br />
Sound3F: dc.w z80_ptr(ssamp3F),$0103<br />
dc.w $8002,z80_ptr(+),$F406<br />
dc.w $8004,z80_ptr(++),$F406<br />
dc.w $8005,z80_ptr(+++),$F406<br />
+ dc.b $EF,$00,$C9,$07,$CD,$D0,$CB,$CE,$D2,$CD,$D0,$D4,$CE,$D2,$D5<br />
- dc.b $D0,$07,$D4,$D7,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$80,$07,$CD,$15,$CE,$D0,$D2<br />
- dc.b $D4,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$C9,$15,$CB,$CD,$CE<br />
- dc.b $D0,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3F: dc.b $14,$25,$36,$33,$11,$1F,$1F,$1F,$1F,$15,$1C,$18<br />
dc.b $13,$0B,$0D,$08,$09,$0F,$8F,$9F,$0F,$24,$0A,$05,$80<br />
<br />
; short bonus ding<br />
Sound40: dc.w z80_ptr(ssamp3F),$0102<br />
dc.w $8005,z80_ptr(++),$0008<br />
dc.w $8004,z80_ptr(+),$0008<br />
+ dc.b $E1,$03,$80,$02<br />
+ dc.b $EF,$00,$C4,$16,$F2<br />
<br />
; badnik bust<br />
Sound41: dc.w z80_ptr(ssamp41),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0002<br />
+ dc.b $F0,$03,$01,$72,$0B,$EF,$00,$BA,$16,$F2<br />
+ dc.b $F5,$01,$F3,$E7,$B0,$1B,$F2<br />
ssamp41: dc.b $3C,$0F,$03,$01,$01,$1F,$1F,$1F,$1F,$19,$19,$12<br />
dc.b $0E,$05,$00,$12,$0F,$0F,$FF,$7F,$FF,$00,$00,$80,$80<br />
<br />
; warning ding-ding<br />
Sound42: dc.w z80_ptr(ssamp3F),$0101<br />
dc.w $8005,z80_ptr(+),$0C08<br />
+ dc.b $EF,$00,$BA,$08,$BA,$25,$F2<br />
<br />
; special stage ring flash (unused)<br />
Sound43: dc.w z80_ptr(ssamp43),$0102<br />
dc.w $8004,z80_ptr(+),$0C00<br />
dc.w $8005,z80_ptr(++),$0013<br />
+ dc.b $EF,$01,$80,$01,$A2,$08,$EF,$00,$E7,$AD,$26,$F2<br />
+ dc.b $EF,$02,$F0,$06,$01,$03,$FF,$80,$0A<br />
- dc.b $C3<br />
dc.w $06F7,$0005,z80_ptr(-)<br />
dc.b $C3,$17,$F2<br />
ssamp43: dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$1C,$80<br />
dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$2C,$80<br />
dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$13,$13,$81,$88<br />
<br />
; thunk<br />
Sound44: dc.w z80_ptr(ssamp44),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$8A,$22,$F2<br />
ssamp44: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$4F,$2F,$2F,$0D,$04,$07,$80<br />
<br />
; cha-ching<br />
Sound45: dc.w z80_ptr(ssamp45),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$8A,$08,$80,$02,$8A,$08,$F2<br />
+ dc.b $EF,$01,$80,$12,$C6,$55,$F2<br />
+ dc.b $F5,$02,$F3,$E7,$80,$02,$C2,$05,$C4,$04,$C2,$05,$C4,$04,$F2<br />
ssamp45: dc.b $3B,$03,$02,$02,$06,$18,$1A,$1A,$96,$17,$0A,$0E<br />
dc.b $10,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$39,$28,$80<br />
ringsamp: dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$23,$80,$80<br />
<br />
; losing rings (scatter)<br />
Sound46: dc.w z80_ptr(ringsamp),$0102<br />
dc.w $8004,z80_ptr(+),$0005<br />
dc.w $8005,z80_ptr(++),$0008<br />
+ dc.b $EF,$00,$C6,$02,$05,$05,$05,$05,$05,$05,$3A,$F2<br />
+ dc.b $EF,$00,$80,$02,$C4,$02,$05,$15,$02,$05,$32,$F2<br />
<br />
; chain pull chink-chink<br />
Sound47: dc.w z80_ptr(ssamp47),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$BE,$05,$80,$04,$BE,$04,$80,$04,$F2<br />
ssamp47: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; flamethrower<br />
Sound48: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$25,$F2<br />
<br />
; bonus pwoieeew (unused)<br />
Sound49: dc.w z80_ptr(ssamp49),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$33,$18,$B9,$1A,$F2<br />
ssamp49: dc.b $3B,$0A,$05,$31,$02,$5F,$5F,$5F,$5F,$04,$16,$14<br />
dc.b $0C,$00,$00,$04,$00,$1F,$D8,$6F,$FF,$03,$00,$25,$80<br />
<br />
; special stage entry<br />
Sound4A: dc.w z80_ptr(ssamp4A),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$F0,$01,$01,$5B,$02,$CC,$65,$F2<br />
ssamp4A: dc.b $20,$36,$30,$35,$31,$41,$3B,$49,$4B,$09,$09,$06<br />
dc.b $08,$01,$02,$03,$A9,$0F,$0F,$0F,$0F,$29,$23,$27,$80<br />
<br />
; slower smash/crumble<br />
Sound4B: dc.w z80_ptr(smashsamp),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; spring boing<br />
Sound4C: dc.w z80_ptr(ssamp4C),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$5D,$0F,$B0,$0C,$F4<br />
- dc.b $E7,$E6,$02,$BD<br />
dc.w $02F7,$0019,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4C: dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$16,$13,$30,$80<br />
<br />
; selection blip<br />
Sound4D: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $BB,$02,$F2<br />
<br />
; another ring sound (only plays in the left speaker?)<br />
Sound4E: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8004,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$80,$C1,$04,$C4,$05,$C9,$1B,$F2<br />
<br />
; signpost spin sound<br />
Sound4F: dc.w z80_ptr(ssamp4F),$0102<br />
dc.w $8004,z80_ptr(+),$2703<br />
dc.w $8005,z80_ptr(++),$2700<br />
+ dc.b $80,$04<br />
+ dc.b $EF,$00<br />
- dc.b $B4,$05,$E6<br />
dc.w $02F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4F: dc.b $F4,$06,$0F,$04,$0E,$1F,$1F,$1F,$1F,$00,$0B,$00<br />
dc.b $0B,$00,$05,$00,$08,$0F,$FF,$0F,$FF,$0C,$03,$8B,$80<br />
<br />
; mosquito zapper<br />
Sound50: dc.w z80_ptr(ssamp50),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B3,$04,$80,$01<br />
- dc.b $B4,$04,$80<br />
dc.w $01F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
ssamp50: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$06,$34,$10,$87<br />
<br />
<br />
Sound51: dc.w z80_ptr(ssamp51),$0102<br />
dc.w $80C0,z80_ptr(+),$0001<br />
dc.w $8005,z80_ptr(++),$000B<br />
+ dc.b $F5,$02,$F3,$E4,$B0,$04,$85,$02,$F2<br />
+ dc.b $EF,$00,$E8,$04,$A5,$06,$F2<br />
ssamp51: dc.b $3C,$02,$01,$00,$01,$1F,$1F,$1F,$1F,$00,$19,$0E<br />
dc.b $10,$00,$00,$0C,$0F,$0F,$FF,$EF,$FF,$05,$00,$80,$80<br />
<br />
<br />
Sound52: dc.w z80_ptr(ssamp52),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $F0,$01,$01,$2A,$07,$EF,$00<br />
- dc.b $A5,$03<br />
dc.w $E7F7,$0013,z80_ptr(-)<br />
- dc.b $A5,$03,$E7,$E6<br />
dc.w $02F7,$0013,z80_ptr(-)<br />
dc.b $F2<br />
ssamp52: dc.b $28,$21,$21,$21,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$29,$20,$29,$80<br />
<br />
<br />
Sound53: dc.w z80_ptr(ssamp53),$0101<br />
dc.w $8005,z80_ptr(+),$F503<br />
+ dc.b $EF,$00,$F0,$01,$01,$46,$09,$A7,$14,$E7,$14,$E7,$E6,$04<br />
dc.b $14,$E7,$E6,$04,$14,$E7,$E6,$04,$0A,$E7,$E6,$04,$0A,$F2<br />
ssamp53: dc.b $07,$0A,$0C,$0C,$0C,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$2A,$0F,$0F,$80<br />
<br />
; OOZ lid pop sound<br />
Sound54: dc.w z80_ptr(ssamp54),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0006<br />
+ dc.b $EF,$00,$B6,$15,$F2<br />
+ dc.b $F3,$E7,$F5,$04,$C6,$03,$E7,$C5,$E7<br />
dc.b $C4,$E7,$C3,$E7,$C2,$E7,$C1,$E7,$C0,$F2<br />
ssamp54: dc.b $07,$03,$02,$03,$00,$FF,$6F,$6F,$3F,$12,$14,$11<br />
dc.b $0E,$1A,$0A,$03,$0D,$FF,$FF,$FF,$FF,$03,$07,$07,$80<br />
<br />
<br />
Sound55: dc.w z80_ptr(ssamp55),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$AA,$07,$B6,$15,$F2<br />
ssamp55: dc.b $42,$20,$0E,$0F,$0F,$1F,$1F,$1F,$1F,$1F,$1F,$1F<br />
dc.b $1F,$0F,$0E,$0F,$0E,$0F,$0F,$0F,$0F,$2E,$80,$20,$80<br />
<br />
<br />
Sound56: dc.w z80_ptr(ssamp56),$0101<br />
dc.w $8005,z80_ptr(+),$100E<br />
+ dc.b $EF,$00,$F0,$01,$01,$1E,$FF,$8F,$1C,$F4<br />
- dc.b $E7,$9A<br />
dc.w $05F7,$0009,z80_ptr(-)<br />
- dc.b $E7,$9A,$04,$E6,$02,$E7,$9A,$04,$E6<br />
dc.w $02F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp56: dc.b $0D,$06,$00,$00,$E5,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$27,$80,$80,$80<br />
<br />
<br />
Sound57: dc.w z80_ptr(ssamp57),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$CA,$15,$F2<br />
ssamp57: dc.b $04,$09,$70,$00,$30,$1C,$1F,$DF,$1F,$15,$12,$0B<br />
dc.b $0F,$0C,$0D,$00,$0D,$07,$2F,$FA,$FA,$00,$29,$00,$00<br />
<br />
; CNZ bonusy bumper sound<br />
Sound58: dc.w z80_ptr(ssamp58),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$B3,$06,$B3,$15,$F2<br />
ssamp58: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
<br />
; CNZ baaang bumper sound<br />
Sound59: dc.w z80_ptr(ssamp59),$0103<br />
dc.w $8004,z80_ptr(+),$0000<br />
dc.w $8002,z80_ptr(++),$0002<br />
dc.w $8005,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$E1,$0C,$B5,$14,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
+ dc.b $EF,$00,$B6,$14,$F2<br />
ssamp59: dc.b $32,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $0D,$00,$01,$01,$0C,$00,$23,$C3,$F6,$08,$07,$1C,$03<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; CNZ gloop / water droplet sound<br />
Sound5A: dc.w z80_ptr(ssamp5A),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$7F,$F1,$AA,$0A,$F2<br />
ssamp5A: dc.b $47,$03,$02,$02,$04,$5F,$5F,$5F,$5F,$0E,$1A,$11<br />
dc.b $0A,$09,$0A,$0A,$0A,$4F,$3F,$3F,$3F,$7F,$80,$80,$A3<br />
<br />
<br />
Sound5B: dc.w z80_ptr(ssamp5B),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$02,$A5,$01,$E7<br />
- dc.b $01,$E7,$E6<br />
dc.w $02F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5B: dc.b $38,$0F,$0F,$0F,$0F,$1F,$1F,$1F,$0E,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$1F,$00,$00,$00,$80<br />
<br />
<br />
Sound5C: dc.w z80_ptr(ssamp5C),$0102<br />
dc.w $8004,z80_ptr(+),$000E<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$85,$40<br />
- dc.b $E7,$04,$E6<br />
dc.w $04F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$40<br />
- dc.b $E7,$08,$E6<br />
dc.w $01F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5C: dc.b $FA,$12,$01,$01,$01,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$81,$8E,$14,$80<br />
<br />
; chain clink<br />
Sound5D: dc.w z80_ptr(ssamp5D),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$C0,$04,$F2<br />
ssamp5D: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; helicopter<br />
Sound5E: dc.w z80_ptr(ssamp5E),$0101<br />
dc.w $8002,z80_ptr(+),$1405<br />
+ dc.b $EF,$00<br />
- dc.b $95,$02,$95<br />
dc.w $01F7,$0013,z80_ptr(-)<br />
- dc.b $95,$02,$95,$01,$E6<br />
dc.w $01F7,$001B,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5E: dc.b $35,$30,$44,$40,$51,$1F,$1F,$1F,$1F,$10,$00,$13<br />
dc.b $15,$1F,$00,$1F,$1A,$7F,$0F,$7F,$5F,$02,$A8,$80,$80<br />
<br />
<br />
Sound5F: dc.w z80_ptr(ssamp5F),$0103<br />
dc.w $8005,z80_ptr(s5Fs1),$0000<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
s5Fs1 dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$E6,$0A,$80<br />
dc.b $06,$EF,$01,$F0,$01,$01,$11,$FF,$A2,$28<br />
- dc.b $E7,$03,$E6<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs2 dc.b $80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$1D<br />
- dc.b $E7,$07,$EC<br />
dc.w $01F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs3 dc.b $80,$16,$F5,$03<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $FFF7,$0005,z80_ptr(-)<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $01F7,$0007,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5F: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
dc.b $3A,$70,$30,$04,$01,$0F,$14,$19,$16,$08,$0A,$0B<br />
dc.b $05,$03,$03,$03,$05,$1F,$6F,$8F,$5F,$1F,$22,$1F,$80<br />
<br />
; spindash charge<br />
Sound60: dc.w z80_ptr(ssamp60),$0101<br />
dc.w $8005,z80_ptr(+),$FE00<br />
+ dc.b $EF,$00,$F0,$00,$01,$20,$F6,$C4,$16,$E7,$F4,$D0,$18,$E7<br />
- dc.b $04,$E7,$E6<br />
dc.w $03F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp60: dc.b $34,$00,$03,$0C,$09,$9F,$8C,$8F,$95,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$00,$1D,$00,$00<br />
<br />
; rumbling<br />
Sound61: dc.w z80_ptr(ssamp61),$0101<br />
dc.w $8004,z80_ptr(+),$0004<br />
+ dc.b $80,$01,$EF,$00,$F0,$00,$01,$70,$06,$82,$06,$85,$08,$83<br />
dc.b $01,$82,$05,$86,$06,$89,$03,$82,$08,$88,$04,$82,$06,$E6<br />
dc.b $02,$85,$08,$E6,$02,$83,$01,$E6,$02,$82,$05,$E6,$02,$86<br />
dc.b $06,$E6,$02,$89,$03,$E6,$02,$82,$08,$E6,$02,$88,$04,$E6,$02,$F2<br />
ssamp61: dc.b $32,$30,$30,$50,$30,$1F,$0E,$19,$0E,$07,$12,$15<br />
dc.b $09,$0A,$09,$1D,$06,$E8,$03,$0A,$17,$07,$00,$00,$00<br />
<br />
<br />
Sound62: dc.w z80_ptr(ssamp62),$0101<br />
dc.w $8005,z80_ptr(+),$FF00<br />
+ dc.b $EF,$00,$A6,$05,$F0,$01,$01,$E7,$40<br />
- dc.b $C4,$02,$E7,$E6<br />
dc.w $01F7,$0012,z80_ptr(-)<br />
dc.b $F2<br />
ssamp62: dc.b $34,$0C,$10,$73,$0C,$AF,$AC,$FF,$D5,$06,$00,$02<br />
dc.b $01,$02,$0A,$04,$08,$BF,$BF,$BF,$BF,$00,$08,$80,$80<br />
<br />
; CNZ blooing bumper<br />
Sound63: dc.w z80_ptr(ssamp63),$0101<br />
dc.w $8005,z80_ptr(+),$0907<br />
+ dc.b $EF,$00,$F0,$01,$01,$04,$56,$92,$03,$9A,$25,$F2<br />
ssamp63: dc.b $3D,$12,$10,$77,$30,$5F,$5F,$5F,$5F,$0F,$0A,$00<br />
dc.b $01,$0A,$0A,$0D,$0D,$4F,$0F,$0F,$0F,$13,$80,$80,$80<br />
<br />
; HTZ track click sound<br />
Sound64: dc.w z80_ptr(ssamp64),$0101<br />
dc.w $8005,z80_ptr(+),$1100<br />
+ dc.b $EF,$00,$C7,$02,$F2<br />
ssamp64: dc.b $24,$2A,$02,$05,$01,$1A,$1F,$10,$1F,$0F,$1F,$1F<br />
dc.b $1F,$0C,$0D,$11,$11,$0C,$09,$09,$0F,$0E,$04,$80,$80<br />
<br />
; kicking up leaves sound<br />
Sound65: dc.w z80_ptr(ssamp65),$0101<br />
dc.w $80C0,z80_ptr(+),$F800<br />
+ dc.b $F5,$03,$F3,$E7,$CE,$03,$F5,$06,$CE,$04,$EC<br />
dc.b $02,$CE,$02,$F5,$03,$EC,$FE,$CE,$08,$CE,$18,$F2<br />
ssamp65: ; uhm... apparently they forgot to null out the pointer to here.<br />
; luckily, sound 65 doesn't really use its sample<br />
<br />
; leaf splash?<br />
Sound66: dc.w z80_ptr(ssamp66),$0102<br />
dc.w $8005,z80_ptr(++),$EE08<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$F5,$09,$C6,$36,$F2<br />
+ dc.b $EF,$00,$80,$01,$92,$02,$02,$02,$30,$F2<br />
ssamp66: dc.b $32,$33,$17,$34,$13,$0F,$0D,$1B,$17,$00,$04,$02<br />
dc.b $0B,$08,$00,$08,$09,$6F,$5F,$4F,$6F,$05,$00,$00,$80<br />
<br />
<br />
Sound67: dc.w z80_ptr(ssamp67),$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$06,$F3,$E7,$90,$0A,$94,$0A,$98,$0A,$9C<br />
dc.b $0A,$A0,$0A,$A4,$08,$A8,$08,$AC,$08,$B0,$08,$F2<br />
ssamp67: ; another not-really-used sample (like Sound65)<br />
<br />
; door slamming quickly (seems unused)<br />
Sound68: dc.w z80_ptr(ssamp68),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$A5,$06,$F2<br />
ssamp68: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
<br />
Sound69: dc.w z80_ptr(ssamp69),$0102<br />
dc.w $8005,z80_ptr(+),$F400<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$9B,$03,$A8,$06,$9E,$08,$F2<br />
+ dc.b $F5,$04,$F3,$E7,$C6,$03,$C6,$06,$C6,$08,$F2<br />
ssamp69: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; robotic laser burst<br />
Sound6A: dc.w z80_ptr(ssamp6A),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$DF,$14,$E6,$18,$06,$F2<br />
ssamp6A: dc.b $3D,$09,$34,$34,$28,$1F,$16,$16,$16,$00,$00,$00<br />
dc.b $04,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$15,$02,$02,$00<br />
<br />
; scatter<br />
Sound6B: dc.w z80_ptr(ssamp6B),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$81,$04,$80,$0C,$F2<br />
ssamp6B: dc.b $3A,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $07,$00,$01,$01,$03,$00,$23,$C3,$46,$08,$07,$1C,$03<br />
<br />
<br />
Sound6C: dc.w z80_ptr(ssamp6C),$0104<br />
dc.w $8005,z80_ptr(++),$0010<br />
dc.w $8004,z80_ptr(+),$0010<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
+ dc.b $E1,$10<br />
+ dc.b $EF,$01,$F0,$01,$01,$EC,$56,$C0,$24,$F4,$EF,$00,$E6,$F0<br />
- dc.b $BB,$02,$E7,$E6,$02,$E9<br />
dc.w $01F7,$0020,z80_ptr(-)<br />
dc.b $F2<br />
ssamp6C: dc.b $00,$53,$30,$03,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$06,$23,$80<br />
dc.b $3C,$72,$32,$32,$72,$14,$14,$0F,$0F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$02,$02,$08,$08,$35,$14,$00,$00<br />
<br />
; error sound<br />
Sound6D: dc.w z80_ptr(ssamp6D),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$B0,$06,$80,$06,$B0,$18,$F2<br />
ssamp6D: dc.b $38,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$1F,$0C,$17,$00<br />
<br />
; silver sonic buzz saw<br />
Sound6E: dc.w z80_ptr(ssamp6E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$C6,$24,$E7<br />
- dc.b $C6,$04,$E7,$E6<br />
dc.w $04F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F3,$E7,$C7,$44,$F2<br />
ssamp6E: dc.b $33,$00,$10,$00,$31,$1F,$1D,$1E,$0E,$00,$0C,$1D<br />
dc.b $00,$00,$00,$01,$00,$0F,$0F,$0F,$0F,$08,$06,$07,$80<br />
<br />
<br />
Sound6F: dc.w z80_ptr(ssamp6A),$0103<br />
dc.w $8005,z80_ptr(++),$000B<br />
dc.w $8004,z80_ptr(+),$0012<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $E1,$02,$80,$02<br />
+ dc.b $EF,$00,$E6,$0C,$DF,$06,$E7,$E6,$F4,$06,$E7<br />
dc.b $E6,$F4,$12,$E7,$E6,$0C,$06,$E7,$E6,$0C,$06,$F2<br />
+ dc.b $F3,$E7,$C6,$04,$C0,$BA,$B4,$AE,$E6<br />
dc.b $01,$AE,$E6,$01,$AE,$E6,$01,$AE,$F2<br />
<br />
<br />
Sound70: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$C6,$18<br />
- dc.b $E7,$03,$E6<br />
dc.w $01F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to the other bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
; share these symbols externally (WARNING: don't rename, move or remove these labels!)<br />
shared movewZ80CompSize<br />
</asm><br />
<br />
We want to replace it with this optimized code:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===sound playback routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume routines==<br />
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.<br />
<br />
Find:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w ; do you have any lives left?<br />
beq.w Unpause ; if not, branch<br />
tst.w (Game_paused).w ; is game already paused?<br />
bne.s + ; if yes, branch<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_DoNothing ; if not, branch<br />
+<br />
move.w #1,(Game_paused).w ; freeze time<br />
move.b #MusID_Pause,(Music_to_play).w ; pause music<br />
; loc_13B2:<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
bsr.w WaitForVint<br />
tst.b (Slow_motion_flag).w ; is slow-motion cheat on?<br />
beq.s Pause_ChkStart ; if not, branch<br />
btst #button_A,(Ctrl_1_Press).w ; is button A pressed?<br />
beq.s Pause_ChkBC ; if not, branch<br />
move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen<br />
nop<br />
bra.s Pause_Resume<br />
; ===========================================================================<br />
; loc_13D4:<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w ; is button B pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
btst #button_C,(Ctrl_1_Press).w ; is button C pressed?<br />
bne.s Pause_SlowMo ; if yes, branch<br />
; loc_13E4:<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
; loc_13F2:<br />
Pause_Resume:<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
; loc_13F8:<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
; return_13FE:<br />
Pause_DoNothing:<br />
rts<br />
; ===========================================================================<br />
; loc_1400:<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
move.b #MusID_Unpause,(Music_to_play).w<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to pause the game<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1388:<br />
PauseGame:<br />
nop<br />
tst.b (Life_count).w<br />
beq Unpause<br />
tst.w (Game_paused).w<br />
bne.s +<br />
move.b (Ctrl_1_Press).w,d0<br />
or.b (Ctrl_2_Press).w,d0<br />
andi.b #$80,d0<br />
beq Pause_DoNothing<br />
+ move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #1,($A01C10).l<br />
startZ80<br />
<br />
Pause_Loop:<br />
move.b #$10,(Vint_routine).w<br />
jsr WaitForVint<br />
tst.b (Slow_motion_flag).w<br />
beq.s Pause_ChkStart<br />
btst #button_A,(Ctrl_1_Press).w<br />
beq.s Pause_ChkBC<br />
move.b #$GameModeID_TitleScreen,($FFFFF600).w ; Go To Title Screen<br />
nop<br />
bra.s Pause_Resume<br />
<br />
Pause_ChkBC:<br />
btst #button_B,(Ctrl_1_Held).w<br />
bne.s Pause_SlowMo<br />
btst #button_C,(Ctrl_1_Press).w<br />
bne.s Pause_SlowMo<br />
<br />
Pause_ChkStart:<br />
move.b (Ctrl_1_Press).w,d0 ; is Start button pressed?<br />
or.b (Ctrl_2_Press).w,d0 ; (either player)<br />
andi.b #button_start_mask,d0<br />
beq.s Pause_Loop ; if not, branch<br />
<br />
Pause_Resume:<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
<br />
Unpause:<br />
move.w #0,(Game_paused).w<br />
<br />
Pause_DoNothing:<br />
rts<br />
<br />
Pause_SlowMo:<br />
move.w #1,(Game_paused).w<br />
stopZ80<br />
move.b #$80,($A01C10).l<br />
startZ80<br />
rts<br />
; End of function PauseGame<br />
</asm><br />
===Driver data files===<br />
then unpack this into the sound folder and optionally remove the original files since we no longer need them anymore:<br />
{{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}}<br />
<br />
==Fixing the Music Playlist==</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208746
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-25T00:08:36Z
<p>Kram1024: /* sound playback routines */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==<br />
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><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
move sr,-(sp)<br />
movem.l d0-a6,-(sp)<br />
move #$2700,sr<br />
lea (Z80_Bus_Request).l,a3<br />
lea (Z80_Reset).l,a2<br />
moveq #0,d2<br />
move.w #$100,d1<br />
move.w d1,(a3) ; get Z80 bus<br />
move.w d1,(a2) ; release Z80 reset (was held high by console on startup)<br />
- btst d2,(a3)<br />
bne.s - ; wait until the 68000 has the bus<br />
jsr DecompressSoundDriver(pc)<br />
btst #0,(VDP_control_port+1).l ; check video mode<br />
sne (Z80_RAM+zPalModeByte).l ; set if PAL<br />
move.w d2,(a2) ; hold Z80 reset<br />
move.w d2,(a3) ; release Z80 bus<br />
moveq #$E6,d0<br />
- dbf d0,- ; wait for 2,314 cycles<br />
move.w d1,(a2) ; release Z80 reset<br />
movem.l (sp)+,d0-a6<br />
move (sp)+,sr<br />
rts<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; slightly modified Saxman decompression of the sound driver<br />
; a4 == $A00000 (start of Z80 RAM)<br />
; a5 == current position in Z80 RAM?<br />
; a6 == current position in compressed sound driver?<br />
; d0 == data to decompress? (byte)<br />
; d4 == ???<br />
; d5 == ???<br />
; d6 == ???<br />
; d7 == bytes left to decompress<br />
; loc_EC04A:<br />
DecompressSoundDriver:<br />
lea Snd_Driver(pc),a6<br />
; WARNING: the build script needs editing if you rename this label<br />
movewZ80CompSize: move.w #Snd_Driver_End-Snd_Driver,d7 ; patched (by fixpointer.exe) after compression since the exact size can't be known beforehand<br />
moveq #0,d6<br />
lea (Z80_RAM).l,a5<br />
moveq #0,d5<br />
lea (Z80_RAM).l,a4<br />
<br />
loc_EC062:<br />
lsr.w #1,d6<br />
btst #8,d6<br />
bne.s +<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d6<br />
ori.w #$FF00,d6<br />
+<br />
btst #0,d6<br />
beq.s loc_EC086<br />
jsr sub_EC0DE(pc)<br />
move.b d0,(a5)+<br />
addq.w #1,d5<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC086:<br />
jsr sub_EC0DE(pc)<br />
moveq #0,d4<br />
move.b d0,d4<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d3<br />
andi.w #$F,d3<br />
addq.w #2,d3<br />
andi.w #$F0,d0<br />
lsl.w #4,d0<br />
add.w d0,d4<br />
addi.w #$12,d4<br />
andi.w #$FFF,d4<br />
move.w d5,d0<br />
andi.w #$F000,d0<br />
add.w d0,d4<br />
cmp.w d4,d5<br />
bhs.s loc_EC0CC<br />
subi.w #$1000,d4<br />
bcc.s loc_EC0CC<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b #0,(a5)+<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC0CC:<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b (a4,d4.w),(a5)+<br />
addq.w #1,d4<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; End of function DecompressSoundDriver<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_EC0DE:<br />
move.b (a6)+,d0<br />
subq.w #1,d7<br />
bne.s +<br />
addq.w #4,sp<br />
+<br />
rts<br />
; End of function sub_EC0DE<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; S2 sound driver (Sound driver compression (slightly modified Saxman))<br />
; ---------------------------------------------------------------------------<br />
; loc_EC0E8:<br />
Snd_Driver:<br />
save<br />
include "s2.sounddriver.asm" ; CPU Z80<br />
restore<br />
padding off<br />
!org (Snd_Driver+Size_of_Snd_driver_guess) ; don't worry; I know what I'm doing<br />
<br />
<br />
; loc_ED04C:<br />
Snd_Driver_End:<br />
<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ---------------------------------------------------------------------------<br />
; the DAC data has to line up with the end of the bank.<br />
<br />
; actually it only has to fit within one bank, but we'll line it up to the end anyway<br />
; because the padding gives the sound driver some room to grow<br />
cnop -Size_of_DAC_samples, $8000<br />
<br />
; ---------------------------------------------------------------------------<br />
; DAC samples<br />
; ---------------------------------------------------------------------------<br />
; loc_ED100:<br />
SndDAC_Start:<br />
<br />
SndDAC_Sample1:<br />
BINCLUDE "sound/DAC/Sample 1.bin"<br />
SndDAC_Sample1_End<br />
<br />
SndDAC_Sample2:<br />
BINCLUDE "sound/DAC/Sample 2.bin"<br />
SndDAC_Sample2_End<br />
<br />
SndDAC_Sample5:<br />
BINCLUDE "sound/DAC/Sample 5.bin"<br />
SndDAC_Sample5_End<br />
<br />
SndDAC_Sample6:<br />
BINCLUDE "sound/DAC/Sample 6.bin"<br />
SndDAC_Sample6_End<br />
<br />
SndDAC_Sample3:<br />
BINCLUDE "sound/DAC/Sample 3.bin"<br />
SndDAC_Sample3_End<br />
<br />
SndDAC_Sample4:<br />
BINCLUDE "sound/DAC/Sample 4.bin"<br />
SndDAC_Sample4_End<br />
<br />
SndDAC_Sample7:<br />
BINCLUDE "sound/DAC/Sample 7.bin"<br />
SndDAC_Sample7_End<br />
<br />
SndDAC_End<br />
<br />
if SndDAC_End - SndDAC_Start > $8000<br />
fatal "DAC samples must fit within $8000 bytes, but you have $\{SndDAC_End-SndDAC_Start } bytes of DAC samples."<br />
endif<br />
if SndDAC_End - SndDAC_Start > Size_of_DAC_samples<br />
fatal "Size_of_DAC_samples = $\{Size_of_DAC_samples}, but you have $\{SndDAC_End-SndDAC_Start} bytes of DAC samples."<br />
endif<br />
<br />
; ---------------------------------------------------------------------------<br />
; Music pointers<br />
; ---------------------------------------------------------------------------<br />
align $8000<br />
<br />
; loc_F0000:<br />
MusicPoint1:<br />
MusPtr_Continue: rom_ptr_z80 Mus_Continue-MusicPoint2<br />
<br />
<br />
Mus_Continue: BINCLUDE "sound/music/Continue.bin"<br />
<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ----------------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ----------------------------------------------------------------------------------<br />
; the PCM data has to line up with the end of the bank.<br />
cnop -Size_of_SEGA_sound, $8000<br />
<br />
; -------------------------------------------------------------------------------<br />
; Sega Intro Sound<br />
; 8-bit unsigned raw audio at 16Khz<br />
; -------------------------------------------------------------------------------<br />
; loc_F1E8C:<br />
Snd_Sega: BINCLUDE "sound/PCM/SEGA.bin"<br />
Snd_Sega_End:<br />
<br />
if Snd_Sega_End - Snd_Sega > $8000<br />
fatal "Sega sound must fit within $8000 bytes, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
if Snd_Sega_End - Snd_Sega > Size_of_SEGA_sound<br />
fatal "Size_of_SEGA_sound = $\{Size_of_SEGA_sound}, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
<br />
; ------------------------------------------------------------------------------<br />
; Music pointers<br />
; ------------------------------------------------------------------------------<br />
align $8000<br />
soundBankStart := *<br />
<br />
; loc_F8000:<br />
MusicPoint2:<br />
MusPtr_CNZ_2P: rom_ptr_z80 Mus_CNZ_2P<br />
MusPtr_EHZ: rom_ptr_z80 Mus_EHZ<br />
MusPtr_MTZ: rom_ptr_z80 Mus_MTZ<br />
MusPtr_CNZ: rom_ptr_z80 Mus_CNZ<br />
MusPtr_MCZ: rom_ptr_z80 Mus_MCZ<br />
MusPtr_MCZ_2P: rom_ptr_z80 Mus_MCZ_2P<br />
MusPtr_ARZ: rom_ptr_z80 Mus_ARZ<br />
MusPtr_DEZ: rom_ptr_z80 Mus_DEZ<br />
MusPtr_SpecStage: rom_ptr_z80 Mus_SpecStage<br />
MusPtr_Options: rom_ptr_z80 Mus_Options<br />
MusPtr_Ending: rom_ptr_z80 Mus_Ending<br />
MusPtr_EndBoss: rom_ptr_z80 Mus_EndBoss<br />
MusPtr_CPZ: rom_ptr_z80 Mus_CPZ<br />
MusPtr_Boss: rom_ptr_z80 Mus_Boss<br />
MusPtr_SCZ: rom_ptr_z80 Mus_SCZ<br />
MusPtr_OOZ: rom_ptr_z80 Mus_OOZ<br />
MusPtr_WFZ: rom_ptr_z80 Mus_WFZ<br />
MusPtr_EHZ_2P: rom_ptr_z80 Mus_EHZ_2P<br />
MusPtr_2PResult: rom_ptr_z80 Mus_2PResult<br />
MusPtr_SuperSonic: rom_ptr_z80 Mus_SuperSonic<br />
MusPtr_HTZ: rom_ptr_z80 Mus_HTZ<br />
MusPtr_ExtraLife: rom_ptr_z80 Mus_ExtraLife<br />
MusPtr_Title: rom_ptr_z80 Mus_Title<br />
MusPtr_EndLevel: rom_ptr_z80 Mus_EndLevel<br />
MusPtr_GameOver: rom_ptr_z80 Mus_GameOver<br />
MusPtr_Invincible: rom_ptr_z80 Mus_Invincible<br />
MusPtr_Emerald: rom_ptr_z80 Mus_Emerald<br />
MusPtr_HPZ: rom_ptr_z80 Mus_HPZ<br />
MusPtr_Drowning: rom_ptr_z80 Mus_Drowning<br />
MusPtr_Credits: rom_ptr_z80 Mus_Credits<br />
<br />
; loc_F803C:<br />
Mus_HPZ: BINCLUDE "sound/music/HPZ.bin"<br />
Mus_Drowning: BINCLUDE "sound/music/Drowning.bin"<br />
Mus_Invincible: BINCLUDE "sound/music/Invincible.bin"<br />
Mus_CNZ_2P: BINCLUDE "sound/music/CNZ_2p.bin"<br />
Mus_EHZ: BINCLUDE "sound/music/EHZ.bin"<br />
Mus_MTZ: BINCLUDE "sound/music/MTZ.bin"<br />
Mus_CNZ: BINCLUDE "sound/music/CNZ.bin"<br />
Mus_MCZ: BINCLUDE "sound/music/MCZ.bin"<br />
Mus_MCZ_2P: BINCLUDE "sound/music/MCZ_2p.bin"<br />
Mus_ARZ: BINCLUDE "sound/music/ARZ.bin"<br />
Mus_DEZ: BINCLUDE "sound/music/DEZ.bin"<br />
Mus_SpecStage: BINCLUDE "sound/music/SpecStg.bin"<br />
Mus_Options: BINCLUDE "sound/music/Options.bin"<br />
Mus_Ending: BINCLUDE "sound/music/Ending.bin"<br />
Mus_EndBoss: BINCLUDE "sound/music/End_Boss.bin"<br />
Mus_CPZ: BINCLUDE "sound/music/CPZ.bin"<br />
Mus_Boss: BINCLUDE "sound/music/Boss.bin"<br />
Mus_SCZ: BINCLUDE "sound/music/SCZ.bin"<br />
Mus_OOZ: BINCLUDE "sound/music/OOZ.bin"<br />
Mus_WFZ: BINCLUDE "sound/music/WFZ.bin"<br />
Mus_EHZ_2P: BINCLUDE "sound/music/EHZ_2p.bin"<br />
Mus_2PResult: BINCLUDE "sound/music/2player results screen.bin"<br />
Mus_SuperSonic: BINCLUDE "sound/music/Supersonic.bin"<br />
Mus_HTZ: BINCLUDE "sound/music/HTZ.bin"<br />
Mus_Title: BINCLUDE "sound/music/Title screen.bin"<br />
Mus_EndLevel: BINCLUDE "sound/music/End of level.bin"<br />
<br />
; The following act mostly like sound effects<br />
; despite being listed with the music.<br />
; This means they're uncompressed format with absolute pointers<br />
; instead of compressed with relative pointers.<br />
; Because they have absolute pointers,<br />
; they have to be assembled rather than BINCLUDE'd.<br />
; See below (right before Sound20) for other notes<br />
; about the sound format that apply to these too.<br />
<br />
;Mus_ExtraLife: BINCLUDE "sound/music/Extra life.bin"<br />
Mus_ExtraLife: dc.w z80_ptr(Mus_EL_Voices),$0603,$02CD<br />
dc.w z80_ptr(Mus_EL_DAC),$0000<br />
dc.w z80_ptr(Mus_EL_FM1),$E810<br />
dc.w z80_ptr(Mus_EL_FM2),$E810<br />
dc.w z80_ptr(Mus_EL_FM3),$E810<br />
dc.w z80_ptr(Mus_EL_FM4),$E810<br />
dc.w z80_ptr(Mus_EL_FM5),$E810<br />
dc.w z80_ptr(Mus_EL_PSG1),$D008,$0005<br />
dc.w z80_ptr(Mus_EL_PSG2),$DC08,$0005<br />
dc.w z80_ptr(Mus_EL_PSG3),$DC00,$0004<br />
Mus_EL_FM4: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM1: dc.b $E0,$80<br />
+ dc.b $EF,$00,$E8,$06,$D9,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$DB,$09,$D7,$D6,$06,$D9,$18,$F2<br />
Mus_EL_FM2: dc.b $EF,$01,$E8,$06,$E2,$01,$D6,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$D7,$09,$D4,$D2,$06,$D6,$18,$E2,$01,$F2<br />
Mus_EL_FM5: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM3: dc.b $E0,$80<br />
+ dc.b $EF,$02,$BA,$0C,$80,$06,$BA,$B8,$80,$03<br />
dc.b $B8,$06,$80,$03,$B8,$06,$BA,$18,$F2<br />
Mus_EL_PSG1: dc.b $E8,$06,$D6,$06,$03,$03,$06,$06,$E8,$00,$D7,$09<br />
dc.b $D4,$D2,$06,$D6,$18<br />
Mus_EL_PSG2:<br />
Mus_EL_PSG3: dc.b $F2<br />
Mus_EL_DAC: dc.b $88,$12,$06,$8B,$09,$09,$06,$88,$06,$8A,$88,$8A<br />
dc.b $88,$0C,$E4<br />
Mus_EL_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
<br />
<br />
;Mus_GameOver: BINCLUDE "sound/music/Game over.bin"<br />
Mus_GameOver: dc.w z80_ptr(MusGO_Voices),$0603,$02F2<br />
dc.w z80_ptr(MusGOver_DAC),$0000<br />
dc.w z80_ptr(MusGOver_FM1),$E80A<br />
dc.w z80_ptr(MusGOver_FM2),$F40F<br />
dc.w z80_ptr(MusGOver_FM3),$F40F<br />
dc.w z80_ptr(MusGOver_FM4),$F40D<br />
dc.w z80_ptr(MusGOver_FM5),$DC16<br />
dc.w z80_ptr(MusGOver_PSG),$D003,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC06,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC00,$0004<br />
MusGOver_FM1: dc.b $EF,$00<br />
dc.b $F0,$20,$01,$04,$05<br />
dc.b $80,$0C,$CA,$12,$80,$06,$CA,$80,$CB,$12,$C8,$1E<br />
dc.b $CA,$06,$80,$CA,$80,$CA,$80,$C6,$80,$C4,$12,$C8<br />
dc.b $0C,$80,$12,$C9,$04,$80,$C9,$C8,$06,$80,$C7,$80<br />
dc.b $C6,$80<br />
dc.b $F0,$28,$01,$18,$05<br />
dc.b $C5,$60,$F2<br />
MusGOver_FM2: dc.b $EF,$01,$80,$01,$D9,$06,$80,$D9,$80,$D6,$80,$D6<br />
dc.b $80,$D7,$15,$D7,$1B,$D9,$06,$80,$D9,$80,$D6,$80<br />
dc.b $D6,$80,$DC,$15,$DC,$1B,$F2<br />
MusGOver_FM3: dc.b $EF,$01,$D6,$0C,$D6,$D2,$D2,$D4,$15,$D4,$1B,$D6<br />
dc.b $0C,$D6,$D2,$D2,$D7,$15,$D7,$1B,$F2<br />
MusGOver_FM4: dc.b $EF,$02,$E2,$01,$AE,$06,$80,$AE,$80,$A9,$80,$A9<br />
dc.b $80,$AC,$15,$AB,$0C,$AC,$03,$AB,$0C,$AE,$06,$80<br />
dc.b $AE,$80,$A9,$80,$A9,$80,$B3,$15,$B2,$0C,$B3,$03<br />
dc.b $B2,$0C,$AE,$04,$80,$AE,$AD,$06,$80,$AC,$80,$AB<br />
dc.b $80,$AB,$60,$E2,$01,$F2<br />
MusGOver_FM5: dc.b $EF,$03,$80,$30,$D7,$12,$80,$03,$D7,$1B,$80,$30<br />
dc.b $DC,$12,$80,$03,$DC,$1B<br />
MusGOver_PSG: dc.b $F2<br />
MusGOver_DAC: dc.b $80,$18,$81<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(MusGOver_DAC)<br />
dc.b $F2<br />
MusGO_Voices: dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $3C,$33,$73,$30,$70,$94,$96,$9F,$9F,$12,$14,$00<br />
dc.b $0F,$04,$04,$0A,$0D,$2F,$4F,$0F,$2F,$33,$1A,$80,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$1C,$27,$28,$80<br />
dc.b $1F,$66,$53,$31,$22,$1C,$1F,$98,$1F,$12,$0F,$0F<br />
dc.b $0F,$00,$00,$00,$00,$FF,$0F,$0F,$0F,$8C,$8A,$8D,$8B<br />
<br />
;Mus_Emerald: BINCLUDE "sound/music/Got an emerald.bin"<br />
Mus_Emerald: dc.w z80_ptr(MusEmrldVoices),$0703,$01D5<br />
dc.w z80_ptr(MusEmeraldDAC),$0000<br />
dc.w z80_ptr(MusEmeraldFM1),$F408<br />
dc.w z80_ptr(MusEmeraldFM2),$F408<br />
dc.w z80_ptr(MusEmeraldFM3),$F407<br />
dc.w z80_ptr(MusEmeraldFM4),$F416<br />
dc.w z80_ptr(MusEmeraldFM5),$F416<br />
dc.w z80_ptr(MusEmeraldFM6),$F416<br />
dc.w z80_ptr(MusEmeraldPSG1),$F402,$0004<br />
dc.w z80_ptr(MusEmeraldPSG2),$F402,$0005<br />
dc.w z80_ptr(MusEmeraldPSG3),$F400,$0004<br />
MusEmeraldFM3: dc.b $E1,$02<br />
MusEmeraldFM1: dc.b $EF,$00,$C1,$06,$C4,$C9,$CD,$0C,$C9,$D0,$2A,$F2<br />
MusEmeraldFM2: dc.b $EF,$00,$BD,$06,$C1,$C4,$C9,$0C,$C6,$CB,$2A,$F2<br />
MusEmeraldFM4: dc.b $EF,$01,$C1,$0C,$C1,$06,$C4,$06,$80,$C4,$80,$C9<br />
dc.b $2A,$F2<br />
MusEmeraldFM5: dc.b $EF,$01,$C9,$0C,$C9,$06,$CD,$06,$80,$CD,$80,$D0<br />
dc.b $2A,$F2<br />
MusEmeraldFM6: dc.b $EF,$01,$C4,$0C,$C4,$06,$C9,$06,$80,$C9,$80,$CD<br />
dc.b $2A,$F2<br />
MusEmeraldPSG2: dc.b $80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusEmeraldPSG1: dc.b $E2,$01,$80,$02,$80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
MusEmeraldPSG3:<br />
MusEmeraldDAC: dc.b $E2,$01,$F2<br />
MusEmrldVoices: dc.b $04,$35,$54,$72,$46,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$1D,$14,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$07,$07,$1A,$16,$80,$80<br />
<br />
;Mus_Credits: BINCLUDE "sound/music/Credits.bin"<br />
Mus_Credits: dc.w z80_ptr(MusCred_Voices),$0603,$01F0<br />
dc.w z80_ptr(MusCred_DAC),$0000<br />
dc.w z80_ptr(MusCred_FM1),$000E<br />
dc.w z80_ptr(MusCred_FM2),$180A<br />
dc.w z80_ptr(MusCred_FM3),$0014<br />
dc.w z80_ptr(MusCred_FM4),$0016<br />
dc.w z80_ptr(MusCred_FM5),$0C16<br />
dc.w z80_ptr(MusCred_PSG1),$E806,$000B<br />
dc.w z80_ptr(MusCred_PSG2),$DC07,$000B<br />
dc.w z80_ptr(MusCred_PSG3),$0002,$0003<br />
MusCred_FM1: dc.b $E9,$F4,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$0C,$E6,$02<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$03,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $AE,$06,$A2,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $E6,$FD<br />
- dc.b $EF,$00,$B7,$06,$BA,$F8<br />
dc.w z80_ptr(MusCreditsDA13)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$06,$80,$80,$30,$80,$EF,$0B,$E9,$18,$E6,$02<br />
- dc.b $94,$0C,$8F,$92,$8F,$06,$94,$05,$94,$07,$06,$8F<br />
dc.b $0C,$92,$8F<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$30,$80,$EF,$0E,$E6,$FF,$E9,$E8,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$91,$94,$06,$80,$18,$96,$12,$9A,$06,$80<br />
dc.b $80,$12,$8F,$93,$08,$80,$16,$96,$06,$91,$92,$94<br />
dc.b $96,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$9D,$9A,$08,$80,$16,$96,$12,$9D,$08,$80<br />
dc.b $04,$EF,$12<br />
dc.b $F0,$18,$01,$0A,$04<br />
dc.b $80,$30,$80,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$24,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$EF,$01,$E9,$F4,$E6,$FA,$F4<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $80,$03,$80,$60,$E6,$04,$E1,$01,$EF,$1B,$E6,$06<br />
dc.b $C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80,$EF<br />
dc.b $1C,$E6,$FA,$E8,$00,$BC,$0C,$12,$06,$EF,$1B,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$80,$E8,$06,$C4,$06,$06,$C6,$C4,$E8<br />
dc.b $00,$C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80<br />
dc.b $E8,$00,$EF,$1C,$E6,$FA,$C1,$C4,$C1,$EF,$1A,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$06,$80,$80,$24,$80,$30,$80,$EF,$1F<br />
dc.b $E9,$18,$E6,$F7,$E1,$00,$80,$06,$AC,$AE,$80,$B1<br />
dc.b $80,$B3,$80,$B4,$80,$B3,$80,$B1,$B3,$80,$B1,$E9<br />
dc.b $F4,$EF,$00,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC<br />
dc.b $06,$AE,$B1,$80,$B4,$B1,$80,$B1,$E9,$0C,$EF,$1F<br />
dc.b $80,$06,$B8,$12,$B4,$06,$80,$B3,$80,$B4,$80,$B3<br />
dc.b $80,$B1,$AE,$80,$B1,$E9,$F4,$EF,$00,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$30,$80,$EF,$21,$E9,$0C,$80,$30,$80<br />
dc.b $08,$A0,$04,$9E,$0C,$9D,$9B,$99,$08,$04,$91,$0C<br />
dc.b $92,$93,$94,$98,$99,$9B,$9D,$98,$95,$93,$91,$98<br />
dc.b $9D,$91,$96,$98,$99,$98,$96,$99,$9D,$96,$95,$97<br />
dc.b $99,$97,$95,$96,$97,$98,$99,$98,$99,$9B,$9D,$08<br />
dc.b $04,$98,$0C,$91,$95,$96,$98,$99,$9D,$9E,$08,$96<br />
dc.b $10,$97,$0C,$98,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$08,$99,$04,$EF,$23,$E9,$E8,$E6,$07,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $80,$60,$E6,$FB,$80,$0C,$CD,$06,$80,$D4,$CD,$06<br />
dc.b $80,$0C,$CD,$06,$80,$D4,$CD,$06,$80,$18,$E6,$05<br />
dc.b $80,$0C,$AE,$80,$AE,$80,$24,$E1,$02,$E6,$08,$A2<br />
dc.b $6C,$F2<br />
MusCreditsD9D1: dc.b $A5,$0C,$B1,$06,$80,$B1,$0C,$AC,$B3,$12,$B1,$0C<br />
dc.b $AC,$06,$AE,$B1,$A7,$0C,$B3,$06,$80,$B3,$0C,$AE<br />
dc.b $B5,$12,$B3,$06,$80,$AE,$B0,$B3,$A3,$0C,$AF,$06<br />
dc.b $80,$AF,$0C,$AA,$B1,$12,$AF,$0C,$AA,$06,$AC,$AF<br />
dc.b $A2,$0C,$AE,$06,$A2,$A4,$0C,$B0,$06,$A4,$A5,$0C<br />
dc.b $B1,$06,$A5,$A2,$0C,$E3<br />
MusCreditsDA13: dc.b $BE,$0C,$BC,$06,$BA,$BC,$BA,$04,$E7,$08,$BA,$04<br />
dc.b $80,$0E,$EF,$07,$B7,$06,$B2,$B5,$B7,$EF,$00,$B7<br />
dc.b $BA,$BE,$0C,$BC,$06,$BA,$BC,$BA,$0C,$BC,$04,$80<br />
dc.b $08,$BA,$04,$80,$08,$BC,$04,$80,$08,$BE,$12,$BA<br />
dc.b $06,$B7,$80,$B7,$80,$24,$EF,$07,$B7,$06,$B2,$B5<br />
dc.b $B7,$80,$0C,$80,$30,$BE,$06,$BE,$BA,$04,$80,$08<br />
dc.b $BC,$06,$BE,$E3<br />
MusCreditsDA5F: dc.b $C3,$01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$02,$C3<br />
dc.b $01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01<br />
dc.b $E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$FC,$C3,$01,$E7<br />
dc.b $C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01,$E7,$C4<br />
dc.b $E7,$C5,$E7,$C6,$2D,$E7,$30,$E7,$30,$E3<br />
MusCreditsDA99: dc.b $A7,$0C,$B3,$06,$80,$B1,$80,$B3,$0C,$A7,$03,$80<br />
dc.b $06,$A7,$03,$B3,$0C,$B1,$B3,$09,$AE,$03,$AC,$06<br />
dc.b $80,$AC,$0C,$AE,$06,$80,$AE,$0C,$AF,$06,$80,$27<br />
dc.b $E3<br />
MusCreditsDABE: dc.b $80,$0C,$CA,$15,$80,$03,$CA,$06,$80,$CB,$0F,$80<br />
dc.b $03,$C8,$18,$80,$06,$CA,$80,$CA,$80,$CA,$80,$C6<br />
dc.b $80,$C4,$0F,$80,$03,$C8,$18,$80,$06<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E3<br />
MusCreditsDAE5: dc.b $80,$12,$94,$97,$06,$80,$18,$99,$12,$94,$06,$80<br />
dc.b $80,$12,$92,$96,$06,$80,$18,$97,$12,$92,$06,$80<br />
dc.b $E3<br />
MusCreditsDAFE: dc.b $80,$99,$80,$99,$80,$9E,$80,$E3<br />
MusCreditsDB06: dc.b $EF,$07,$80,$54,$C7,$04,$C8,$C9,$CA,$24,$CD,$D2<br />
dc.b $18,$D0,$24,$CF,$CB,$18,$CB,$0C,$CA,$80,$CD,$60<br />
dc.b $E7,$3C,$CA,$24,$CD,$D2,$18,$D4,$24,$D0,$D4,$18<br />
dc.b $D4,$24,$D6,$60,$E7,$3C,$E3<br />
MusCred_FM2: dc.b $80,$60,$EF,$01,$E8,$06,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $85,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8A,$87,$88,$89,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $88<br />
dc.b $F7,$00,$0B<br />
dc.w z80_ptr(-)<br />
- dc.b $8A<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$E6,$FC,$8A,$8B,$8C,$E6,$04,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$8D,$8A,$8B,$8C,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8D,$06,$99,$E8,$00,$8A,$0C,$8B,$8C,$E9,$E8,$E6<br />
dc.b $0C,$EF,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E6,$F9,$EF,$08<br />
MusCreditsDB93: dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $06,$9C,$12,$9D,$0C,$9E,$F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9D,$04,$80,$08,$9D,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $9C,$04,$80,$08,$9C,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(MusCreditsDB93)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$13,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$60,$EF,$0F,$E6,$F3<br />
dc.b $F0,$04,$02,$03,$02<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$30,$E7,$18,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$EF,$13,$E6,$F5,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$0C,$A9,$08,$A1,$10,$F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$08,$A9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E1,$02,$E9,$F4,$E6,$0A,$F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$EF,$1B,$E1,$00<br />
dc.b $E8,$06,$80,$3C,$B8,$06,$06,$BA,$BD,$BD,$BA,$EF<br />
dc.b $1D,$E6,$FA,$E8,$00,$F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $EF,$1C,$BD,$EF,$1D,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $80,$30,$80,$EF,$01,$E9,$18,$E6,$F9<br />
- dc.b $99,$0C,$A5,$06,$80,$96,$0C,$A2,$06,$80,$97,$0C<br />
dc.b $A3,$06,$80,$98,$0C,$A8,$06,$A7,$99,$06,$99,$12<br />
dc.b $96,$0C,$A2,$06,$80,$97,$0C,$A3,$06,$80,$98,$0C<br />
dc.b $A4,$06,$80<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$22,$E9,$E8,$E6,$03<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$AC,$04,$AE,$08,$B1,$04,$B5,$30,$80,$0C<br />
dc.b $B5,$08,$80,$04,$B6,$08,$B5,$10,$B9,$08,$04,$80<br />
dc.b $08,$B5,$34,$80,$0C,$B5,$BA,$08,$04,$80,$08,$B5<br />
dc.b $04,$B1,$24,$80,$0C,$B1,$08,$80,$04,$B3,$08,$B1<br />
dc.b $04,$B4,$0C,$B3,$08,$B1,$4C,$80,$0C,$B5,$08,$80<br />
dc.b $04,$B6,$08,$80,$04,$B5,$08,$80,$04,$B9,$08,$04<br />
dc.b $80,$08,$B5,$1C,$80,$0C,$BA,$18,$BC,$08,$BA,$04<br />
dc.b $BD,$18,$80,$0C,$BA,$04,$80,$08,$B8,$18,$B5,$B1<br />
dc.b $B3,$0C,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$0C,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$14,$B1,$04,$E6,$FF,$EF,$24,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $AC,$12,$AB,$0C,$AC,$06,$AB,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $B3,$12,$B2,$0C,$B3,$06,$B2,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $AC,$06,$80,$A9,$80,$AA,$80,$AB,$80,$AC,$AC,$A9<br />
dc.b $80,$AA,$80,$AC,$80,$A9,$80,$A9,$80,$AD,$80,$AD<br />
dc.b $80,$B0,$80,$B0,$80,$B3,$80,$B3,$80,$80,$0C,$A2<br />
dc.b $12,$80,$06,$A2,$12,$AD,$AE,$06,$80,$E6,$FD,$A2<br />
dc.b $6C,$F2<br />
MusCreditsDD59: dc.b $80,$0C,$C4,$06,$80,$C6,$80,$C4,$80,$C9,$80,$C9<br />
dc.b $80,$CB,$CD,$80,$0C,$80,$CB,$18,$C6,$06,$80,$C9<br />
dc.b $C9,$80,$CB,$0C,$80,$12,$80,$1E,$C7,$06,$C9,$C7<br />
dc.b $CB,$80,$C9,$80,$C7,$C9,$80,$C6,$E7,$C6,$30,$E7<br />
dc.b $18,$80,$18,$E3<br />
MusCreditsDD8D: dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
dc.b $06,$AB,$9F,$0C,$E3<br />
MusCreditsDD9D: dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$B6,$80,$18<br />
dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$30,$E7,$E3<br />
MusCreditsDDB5: dc.b $BF,$06,$BD,$BF,$12,$C2,$BF,$0C,$C1,$80,$06,$12<br />
dc.b $C4,$0C,$C2,$06,$80,$C9,$C6,$3C,$80,$06,$0C,$C7<br />
dc.b $12,$C6,$C4,$06,$C2,$C1,$18,$E3<br />
MusCreditsDDD5: dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$E3<br />
MusCreditsDDEA: dc.b $A2,$0C,$AE,$AC,$08,$AE,$04,$AC,$08,$A9,$04,$A7<br />
dc.b $08,$04,$E3<br />
MusCreditsDDF9: dc.b $80,$0C,$B1,$AE,$06,$06,$AC,$0C,$80,$B0,$AE,$06<br />
dc.b $06,$AC,$0C,$E3<br />
MusCreditsDE09: dc.b $AE,$AC,$06,$06,$AA,$0C,$80,$AC,$0C,$06,$06,$AE<br />
dc.b $AC,$E3<br />
MusCreditsDE17: dc.b $BA,$04,$80,$08,$B8,$18,$B5,$B1,$E3<br />
MusCreditsDE20: dc.b $AE,$06,$80,$AE,$80,$A9,$80,$A9,$80,$E3<br />
MusCreditsDE2A: dc.b $8A,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $E3<br />
MusCred_FM3: dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$18,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $B8,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $BD,$3C,$E9,$E8,$E6,$02,$E1,$03,$EF,$04,$E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$09,$E9,$0C,$E6,$FD,$E0,$40<br />
dc.b $F0,$06,$01,$05,$04<br />
dc.b $E1,$00<br />
- dc.b $9F,$0C,$AB,$06,$80,$A9,$80,$AB,$9F,$80,$9F,$AB<br />
dc.b $80,$A9,$80,$AB,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $9D,$0C,$A9,$06,$80,$A8,$80,$A9,$9C,$80,$9C,$A8<br />
dc.b $80,$A6,$80,$A8,$0C<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0D,$E6,$FB,$E0,$C0,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0F,$E0,$80,$E6,$0B,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$48,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$0C<br />
dc.b $F0,$18,$01,$03,$04<br />
dc.b $E6,$F3,$E0,$C0,$EF,$14,$A2,$14,$A4,$04,$A5,$04<br />
dc.b $80,$08,$A9,$04,$80,$08,$A8,$04,$80,$08,$A9,$04<br />
dc.b $80,$08,$AC,$08,$A9,$10<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$18,$E9,$F4,$E6,$08,$F4,$E0,$40,$80,$60,$80<br />
dc.b $30,$C6,$06,$80,$C2,$0C,$C4,$09,$C2,$03,$BF,$0C<br />
dc.b $80,$60,$80,$3C,$80,$60,$EF,$1B,$E6,$FB,$E0,$C0<br />
dc.b $E8,$06,$C4,$06,$06,$C6,$C9,$C9,$C6,$E8,$00,$CD<br />
dc.b $0C,$E8,$06,$C9,$06,$C6,$C9,$0C,$80,$80,$12,$EF<br />
dc.b $1C,$E8,$00,$BD,$BA,$0C,$E8,$06,$EF,$1B,$CE,$06<br />
dc.b $CE,$80,$CE,$80,$CE,$E8,$00,$CF,$0C,$D0,$80,$E8<br />
dc.b $06,$D0,$06,$06,$D2,$D0,$E8,$00,$CD,$0C,$E8,$06<br />
dc.b $C9,$06,$C6,$C9,$0C,$E8,$00,$EF,$1C,$80,$1E,$C2<br />
dc.b $0C,$C2,$BD,$06,$80,$60,$80,$60,$EF,$00,$E9,$18<br />
dc.b $80,$60,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC,$06<br />
dc.b $AE,$B1,$80,$B4,$B1,$80,$B1,$80,$60,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$60,$EF,$22,$E9,$DC,$E6,$FF,$E0,$80<br />
dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $CD,$30,$CB,$18,$CD,$0C,$CB,$C9,$30,$CE,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$FC,$80,$C4,$80,$C4,$80,$C6,$18,$08,$C4,$04<br />
dc.b $E9,$0C,$E6,$FF,$E0,$C0,$EF,$00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $CB,$12,$CB,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $D0,$12,$D0,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$CB,$12,$80,$06,$CB,$80,$CA,$12,$CB,$CA<br />
dc.b $0C,$C5,$18,$C8,$CB,$D1,$80,$0C,$CD,$80,$CD,$12<br />
dc.b $CC,$CD,$06,$80,$E6,$F8,$EF,$01,$E1,$03,$A2,$6C<br />
dc.b $F2<br />
MusCreditsDFF2: dc.b $80,$60,$BC,$06,$BD,$BC,$B8,$BA,$B6,$0C,$B8,$B3<br />
dc.b $B3,$06,$B6,$0C,$B8,$E3<br />
MusCreditsE004: dc.b $80,$0C,$CD,$04,$80,$10,$CD,$04,$80,$0C,$CD,$0C<br />
dc.b $CE,$08,$CD,$04,$80,$18,$80,$0C,$CB,$04,$80,$10<br />
dc.b $CB,$04,$80,$0C,$CB,$0C,$CD,$08,$CB,$04,$80,$18<br />
- dc.b $80,$0C,$C9,$04,$80,$10,$C9,$04,$80,$0C,$C9,$0C<br />
dc.b $CB,$08,$C9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E3<br />
MusCreditsE040: dc.b $80,$18,$B8,$0B,$80,$0D,$BA,$0C,$0B,$80,$19,$BD<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE051: dc.b $80,$0C,$C4,$80,$C4,$80,$C6,$80,$C6,$E3<br />
MusCreditsE05B: dc.b $CD,$06,$80,$CD,$80,$CA,$80,$CA,$80,$E3<br />
MusCreditsE065: dc.b $EF,$05,$E9,$F4,$C6,$60,$CB,$CD,$E7,$CD,$C6,$60<br />
dc.b $D0,$D0,$24,$D2,$60,$E7,$3C,$E3<br />
MusCred_FM4: dc.b $80,$60,$E9,$FB,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$1D,$E6,$02,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B5,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B8,$3C,$E6,$06,$EF,$05<br />
dc.b $F0,$02,$01,$FE,$04<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E9,$F4,$E6,$F7<br />
dc.b $F0,$0C,$01,$FB,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$25,$C3,$06,$C3,$80,$0C,$C3,$06,$C3,$05,$80<br />
dc.b $0D,$C3,$06,$C5,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$05,$F4,$E1,$02,$E0<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$0C,$80,$60,$EF,$10,$E6,$F7,$E1,$00,$E0<br />
dc.b $40,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $B3,$B7,$06,$AE,$0C,$B1,$B3,$B7,$06,$80,$B7,$AE<br />
dc.b $0C,$B1,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $EF,$15,$E6,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
- dc.b $EF,$14,$80,$4E,$E0,$40,$A1,$12,$A2,$06,$E0,$C0<br />
dc.b $EF,$16,$80,$30,$80,$06,$BA,$08,$B9,$04,$B8,$08<br />
dc.b $B7,$04,$B6,$08,$B5,$04<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E9,$F4,$E6,$02,$E0,$C0<br />
dc.b $F0,$01,$01,$03,$03<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$1E,$E0,$40,$E6,$FE,$E9,$F4,$F4,$E8<br />
dc.b $06,$80,$0C,$C1,$06,$12,$18,$C4,$06,$12,$0C,$EF<br />
dc.b $1C,$E0,$C0,$E6,$FA,$E8,$00,$C6,$E8,$06,$E6,$06<br />
dc.b $EF,$1E,$E0,$40,$C2,$06,$12,$18,$C4,$06,$12,$18<br />
dc.b $C1,$06,$12,$18,$C4,$06,$12,$0C,$EF,$1A,$E0,$C0<br />
dc.b $E9,$0C,$C6,$06,$C6,$80,$C6,$80,$C6,$E8,$00,$C7<br />
dc.b $0C,$C8,$06,$EF,$1E,$E0,$40,$E9,$F4,$E8,$06,$80<br />
dc.b $C4,$06,$12,$0C,$80,$60,$EF,$20,$E9,$18,$E6,$FA<br />
dc.b $E0,$C0,$E8,$00,$B4,$03,$E7,$B6,$5D,$B3,$03,$E7<br />
dc.b $B5,$5D,$B1,$03,$E7,$B3,$5D,$B3,$03,$E7,$B5,$5D<br />
dc.b $80,$60,$EF,$22,$E0,$40,$E9,$E8,$E6,$04,$80,$30<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $C9,$30,$C8,$18,$C9,$0C,$C8,$C6,$30,$C9,$80,$0C<br />
dc.b $C1,$80,$C1,$80,$C2,$80,$C2,$E6,$04,$80,$C1,$80<br />
dc.b $C1,$80,$C2,$80,$C2,$E6,$FC,$80,$C1,$80,$C1,$80<br />
dc.b $C2,$18,$08,$C1,$04,$E9,$0C,$E6,$FF,$E0,$C0,$EF<br />
dc.b $00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $C8,$12,$C8,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $CB,$12,$CB,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E1,$03,$E6,$08,$F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $E6,$F0,$EF,$01<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $A2,$6C,$F2<br />
MusCreditsE22D: dc.b $A2,$14,$A4,$04,$A5,$04,$80,$08,$A9,$04,$80,$08<br />
dc.b $A8,$04,$80,$08,$A9,$04,$80,$08,$AC,$08,$A9,$10<br />
dc.b $E3<br />
MusCreditsE246: dc.b $80,$0C<br />
dc.b $C9,$04,$80,$10<br />
dc.b $C9,$04,$80,$0C<br />
dc.b $C9,$0C<br />
dc.b $CB,$08<br />
dc.b $C9,$04,$80,$18,$80,$0C<br />
dc.b $C8,$04,$80,$10<br />
dc.b $C8,$04,$80,$0C<br />
dc.b $C8,$0C<br />
dc.b $C9,$08<br />
dc.b $C8,$04,$80,$18,$80,$0C<br />
<br />
if 1==1<br />
; this part of the original credits music (CNZ PSG) sounds buggy (dissonant)<br />
dc.b $C6,$04,$80,$10<br />
dc.b $C6,$04,$80,$0C<br />
dc.b $C6,$0C<br />
dc.b $C8,$08<br />
dc.b $C6,$04,$80,$18,$80,$0C<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $C7,$08<br />
else<br />
; replace the above block of notes with this to fix it.<br />
; (I'm not sure why, but the notes $C6 and $C7 are broken here,<br />
; so I've replaced them with pitch-shifted $C8s)<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$10 ; $C6<br />
dc.b $C8,$04,$80,$0C ; $C6<br />
dc.b $C8,$0C ; $C6<br />
dc.b $E1,0<br />
dc.b $C8,$08<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$24 ; $C6<br />
dc.b $E1,0<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $E1,-32<br />
dc.b $C8,$08 ; $C7<br />
dc.b $E1,0<br />
endif<br />
<br />
dc.b $C5,$04,$80,$18<br />
dc.b $E3<br />
MusCreditsE28F: dc.b $EF,$25,$80,$0C,$D0,$D4,$D7,$DB,$0C,$80,$06,$DB<br />
dc.b $0C,$DC,$06,$DB,$0C,$DD,$60,$DE,$0C,$80,$DE,$80<br />
dc.b $80,$06,$DD,$12,$DE,$0C,$E3<br />
MusCreditsE2AE: dc.b $80,$18,$B5,$0B,$80,$0D,$B7,$0C,$0B,$80,$19,$BA<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE2BF: dc.b $C3,$05,$80,$13,$C3,$12,$C3,$05,$E3<br />
MusCreditsE2C8: dc.b $CA,$06,$80,$CA,$80,$C6,$80,$C6,$80,$E3<br />
MusCreditsE2D2: dc.b $AF,$0C,$B3,$06,$B6,$0C,$AF,$B1,$06,$80,$B1,$0C<br />
dc.b $B5,$06,$B8,$0C,$B1,$06,$80,$B6,$0C,$BA,$06,$B1<br />
dc.b $0C,$B5,$B6,$BA,$06,$80,$BA,$AF,$0C,$B3,$B5,$B8<br />
dc.b $06,$B2,$0C,$B3,$B5,$B8,$06,$80,$B8,$B2,$0C,$B5<br />
dc.b $E3<br />
MusCred_FM5: dc.b $E9,$E8,$E6,$F8,$E1,$05,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$18,$E6,$08,$E1,$00,$EF,$02<br />
dc.b $F0,$0C,$01,$FC,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B1,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B5,$3C,$E9,$F4,$E6,$07<br />
dc.b $F0,$30,$01,$04,$04<br />
dc.b $EF,$06<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E6,$F6<br />
dc.b $F0,$0C,$01,$05,$04<br />
dc.b $E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$25,$C6,$06,$C6,$80,$0C,$C6,$06,$C6,$05,$80<br />
dc.b $0D,$C6,$06,$C8,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$E6,$05,$F4,$80,$01,$EF,$0C,$E1<br />
dc.b $FE,$E0,$40,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $23,$80,$0C,$80,$60,$EF,$11,$E9,$F4,$E6,$F4,$E1<br />
dc.b $00,$E0,$C0<br />
dc.b $F0,$06,$01,$06,$05<br />
dc.b $80,$60,$80,$30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60<br />
dc.b $80,$06,$CB,$80,$CB,$C9,$80,$C9,$80,$C7,$80,$C7<br />
dc.b $80,$C6,$03,$80,$C6,$80,$09,$80,$06,$80,$60,$80<br />
dc.b $30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60,$EF,$16,$E9<br />
dc.b $0C,$E6,$04,$F4,$E0,$80,$80,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
dc.b $80,$2F,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$30,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$60,$EF,$19,$E9,$F4,$E0,$C0,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$27,$B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$2A,$80,$60,$EF,$1E,$E9,$F4,$E8,$06<br />
- dc.b $80,$0C,$C4,$06,$12,$18,$C8,$06,$12,$0C,$80,$C6<br />
dc.b $06,$12,$18,$C8,$06,$12,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$20,$E8,$00,$E9,$18,$E6,$FA,$B8,$03<br />
dc.b $E7,$BA,$5D,$B6,$03,$E7,$B8,$5D,$B4,$03,$E7,$B6<br />
dc.b $5D,$B6,$03,$E7,$B8,$5D,$80,$60,$EF,$22,$E9,$F4<br />
dc.b $E6,$05<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$A7,$04,$A9,$08,$AC,$04,$B1,$30,$80,$0C<br />
dc.b $B1,$08,$80,$04,$B3,$08,$B1,$10,$B5,$08,$B5,$04<br />
dc.b $80,$08,$B0,$34,$80,$0C,$B0,$B5,$08,$04,$80,$08<br />
dc.b $B1,$04,$AE,$24,$80,$0C,$AE,$08,$80,$04,$B0,$08<br />
dc.b $AE,$04,$B1,$0C,$AF,$08,$AD,$4C,$80,$0C,$B1,$08<br />
dc.b $80,$04,$B3,$08,$80,$04,$B1,$08,$80,$04,$B5,$08<br />
dc.b $B5,$04,$80,$08,$B0,$1C,$80,$0C,$B5,$18,$B8,$08<br />
dc.b $B5,$04,$BA,$18,$80,$0C,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$04,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$F8,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$AA,$14,$A9,$04,$E6,$0C,$EF,$23,$E1,$03<br />
dc.b $E6,$F7,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E6,$09<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $F2<br />
MusCreditsE4CD: dc.b $80,$1E,$EF,$14,$A4,$12,$A5,$06,$EF,$16,$80,$30<br />
dc.b $80,$06,$BD,$08,$BC,$04,$BB,$08,$BA,$04,$B9,$08<br />
dc.b $B8,$04,$E3<br />
MusCreditsE4E8: dc.b $80,$18,$B1,$0B,$80,$0D,$B3,$0C,$0B,$80,$19,$B6<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE4F9: dc.b $C6,$05,$80,$13,$C6,$12,$C6,$05,$E3<br />
MusCreditsE502: dc.b $80,$60,$AC,$06,$80,$AC,$0C,$AE,$06,$80,$AE,$0C<br />
dc.b $AF,$06,$E3<br />
MusCred_PSG1: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG1)<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$F4,$E6,$FE,$F5,$01,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $AE,$B3,$06,$AC,$0C,$AE,$AE,$B3,$06,$80,$B3,$AB<br />
dc.b $0C,$AE,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $F5,$0B,$80,$04,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$20,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$F5,$00,$E8,$06,$E9,$F4,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$80,$C2,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$04,$80,$C2,$80,$0C,$C2,$80,$60,$F5,$08,$E9<br />
dc.b $04,$EC,$02,$E8,$06<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F0,$EC,$FF,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $E9,$18,$EC,$02,$B5,$30,$B3,$18,$B5,$0C,$B3,$B1<br />
dc.b $30,$B6,$EC,$FE,$80,$0C,$B8,$80,$B8,$80,$BA,$80<br />
dc.b $BA,$EC,$03,$C4,$18,$C1,$BD,$BF,$0C,$80,$EC,$FC<br />
dc.b $80,$B8,$80,$B8,$80,$BA,$18,$08,$B8,$04,$E9,$F4<br />
dc.b $EC,$01,$F5,$05<br />
- dc.b $80,$60<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$C8,$12,$80,$06,$C8,$80,$C6,$12,$C8,$C6<br />
dc.b $0C,$C1,$18,$C5,$C8,$CB,$80,$0C,$CA,$80,$CA,$12<br />
dc.b $C9,$CA,$06,$80,$09,$E9,$30,$EC,$FC,$F6<br />
dc.w z80_ptr(MusCreditsE770)<br />
dc.b $F2<br />
MusCreditsE618: dc.b $80,$0C,$BD,$06,$12,$18,$C4,$06,$12,$0C,$80,$C2<br />
dc.b $06,$12,$18,$C4,$06,$12,$0C,$E3<br />
MusCreditsE62C: dc.b $80,$60,$80,$0C,$C2,$80,$C2,$80,$E3<br />
MusCreditsE635: dc.b $AC,$0C,$AF,$06,$B3,$0C,$AC,$AC,$06,$80,$AC,$0C<br />
dc.b $AF,$06,$B5,$0C,$AC,$06,$80,$06,$B1,$0C,$B6,$06<br />
dc.b $AE,$0C,$B1,$B3,$B6,$06,$80,$B6,$AA,$0C,$AF,$AF<br />
dc.b $B5,$06,$AC,$0C,$AF,$B2,$B5,$06,$80,$B5,$AE,$0C<br />
dc.b $B2,$E3<br />
MusCred_PSG2: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG2)<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$0C,$EC,$FD,$F5,$04,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
dc.b $F0,$03,$02,$01,$05<br />
dc.b $F5,$0A,$E9,$E8,$EC,$02,$80,$30,$80,$80,$BD,$06<br />
dc.b $BF,$C6,$C2,$1E,$80,$60,$80,$06,$C6,$80,$C6,$C4<br />
dc.b $80,$C4,$80,$C3,$80,$C3,$80,$BF,$03,$80,$BF,$80<br />
dc.b $09,$80,$06,$80,$30,$80,$80,$BD,$06,$BF,$C6,$C2<br />
dc.b $1E,$80,$60,$F4<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$00,$EC,$FE,$E8,$06,$80,$60,$80,$0C,$BF,$80<br />
dc.b $BF,$80,$BF,$80,$BF,$80,$60,$80,$0C,$BF,$80,$BF<br />
dc.b $80,$BF,$04,$80,$BF,$80,$0C,$BF,$80,$60,$EC,$02<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F4,$EC,$FF,$E9,$E8,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $E9,$18,$EC,$02,$B1,$30,$B0,$18,$B1,$0C,$B0,$AE<br />
dc.b $30,$B1,$EC,$FE,$80,$0C,$B5,$80,$B5,$80,$B6,$80<br />
dc.b $B6,$EC,$03,$80,$B1,$80,$B1,$80,$B1,$80,$B1,$EC<br />
dc.b $FC,$80,$B1,$80,$B1,$80,$B1,$18,$08,$B1,$04,$EC<br />
dc.b $01,$E9,$18,$F5,$05,$E1,$01,$80,$60,$80,$80,$80<br />
dc.b $80,$80,$80,$0C,$CD,$06,$80,$D4,$CD,$80,$0C,$CD<br />
dc.b $06,$80,$D4,$CD,$80,$18,$80,$54,$E9,$24,$EC,$FD<br />
MusCreditsE770: dc.b $F5,$03,$80,$06<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$FF<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$01<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusCred_PSG3: dc.b $F3,$E7,$80,$60,$F5,$02<br />
- dc.b $C6,$0C,$0C,$0C,$06,$06,$0C,$0C,$06,$06,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$1F<br />
dc.w z80_ptr(-)<br />
dc.b $0C,$F5,$03,$C6,$F5,$02<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $06,$06,$06,$06<br />
dc.b $F7,$01,$04<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$04,$EC,$02<br />
- dc.b $E8,$03,$C6,$06,$06,$E8,$00,$0C<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$02,$EC,$FD<br />
- dc.b $80,$0C,$C6,$06,$80,$07,$C6,$06,$80,$11,$C6,$0C<br />
dc.b $80,$06,$C6,$0C,$80,$06,$C6,$80<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$02<br />
- dc.b $C6,$0C,$08,$04<br />
dc.b $F7,$00,$18<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$0C,$0C,$08,$04<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$04,$EC,$02<br />
- dc.b $C6,$06,$06,$0C<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EC,$FF<br />
- dc.b $F5,$01,$C6,$0C,$F5,$02,$EC,$FF,$08,$F5,$01,$EC<br />
dc.b $01,$04<br />
dc.b $F7,$00,$27<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$FF,$F5,$04<br />
- dc.b $E8,$03,$C6,$0C,$E8,$0C,$0C<br />
dc.b $F7,$00,$1E<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$03,$C6,$06,$E8,$0E,$12,$E8,$03,$0C,$E8,$0F<br />
dc.b $0C,$F2<br />
MusCred_DAC: dc.b $82,$06,$82,$82,$82,$82,$0C,$06,$0C,$06,$0C,$0C<br />
dc.b $0C<br />
- dc.b $81,$18,$82<br />
dc.b $F7,$00,$0E<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C<br />
- dc.b $82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EA,$EA,$F8<br />
dc.w z80_ptr(MusCreditsEA6E)<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$82,$06,$82,$82,$82,$81,$0C,$82,$06,$82<br />
dc.b $81,$81,$82,$82,$82,$82<br />
- dc.b $81,$18,$82,$81,$82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$82,$82,$82,$06,$82,$8C,$8C,$8D,$8D<br />
dc.b $8E,$8E,$F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$18,$82,$0C,$81,$18,$82,$0C,$82,$82,$06,$82<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$0C,$82,$82,$82,$8D,$06,$8D,$8E,$8E,$82,$06<br />
dc.b $82,$8D,$0C,$82,$0C,$82,$06,$82,$80,$82,$82,$0C<br />
MusCreditsE8E5: dc.b $82,$0C,$82,$82,$06,$82,$8D,$8D<br />
- dc.b $81,$0C,$8F,$06,$90,$82,$0C,$90,$06,$91,$81,$0C<br />
dc.b $8F,$06,$91,$82,$0C,$8F,$06,$91<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$8F,$06,$91,$82,$0C,$8F,$06,$91,$8C,$06<br />
dc.b $03,$03,$8D,$06,$8D,$8D,$8E,$8E,$8E,$81,$06,$0C<br />
dc.b $82,$06,$80,$0C,$81,$82,$8E,$82,$06,$82,$82,$82<br />
- dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$12,$8C,$06<br />
dc.b $82,$0C,$83,$06,$81,$80<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$06,$82,$06<br />
dc.b $81,$0C,$06,$82,$0C,$08,$04,$EA,$CD,$82,$30,$82<br />
dc.b $0C,$82,$82,$82,$08,$04,$F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$04,$82,$08,$04<br />
dc.b $08,$04,$04,$04,$04,$08,$04,$EA,$C5<br />
- dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82,$0C,$06<br />
dc.b $06,$81,$0C,$82,$06,$82,$82,$82,$8D,$0C,$82,$0C<br />
dc.b $0C,$0C,$06,$06<br />
- dc.b $81,$0C,$81,$82,$80,$81,$81,$82,$83<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$82,$82,$82,$82,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $81,$06,$81,$82,$82,$81,$82,$81,$81,$82,$02,$82<br />
dc.b $04,$81,$0C,$06,$82,$0C,$06,$06,$81,$18,$82,$0C<br />
dc.b $81,$81,$18,$82,$81,$06,$81,$12,$82,$0C,$81,$81<br />
dc.b $18,$82,$81,$18,$82,$0C,$81,$81,$18,$82,$81,$06<br />
dc.b $81,$12,$82,$0C,$0C,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $82,$02,$04,$81,$0C,$06,$0C,$82,$02,$04,$81,$0C<br />
dc.b $06,$0C,$82,$06,$82,$82,$82,$EA,$C0,$81,$0C,$82<br />
dc.b $81,$82,$81,$82,$81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$0F<br />
dc.w z80_ptr(-)<br />
dc.b $81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$13<br />
dc.w z80_ptr(-)<br />
dc.b $82,$08,$0C,$04,$81,$0C,$82,$81,$82,$81,$0C,$82<br />
dc.b $81,$06,$80,$02,$82,$82,$82,$09,$82,$03<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$06,$80,$02,$82,$82,$82,$09,$82<br />
dc.b $03<br />
dc.b $F7,$01,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$82,$81,$06,$82,$12,$82,$0C,$81<br />
dc.b $F2<br />
MusCreditsEA6E: dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$83,$E3<br />
MusCreditsEA84: dc.b $81,$18,$82,$0C,$81,$18,$0C,$82,$81,$81,$18,$82<br />
dc.b $0C,$81,$12,$81,$82,$18,$81,$82,$0C,$81,$18,$0C<br />
dc.b $82,$81,$E3<br />
MusCreditsEA9F: dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$0C,$82,$04,$81<br />
dc.b $0C,$82,$81,$81,$08,$0C,$04,$82,$0C,$81,$08,$0C<br />
dc.b $82,$04,$81,$0C,$82,$82,$08,$04,$E3,$81,$06,$80<br />
dc.b $03,$81,$81,$06,$82,$81,$06,$80,$03,$81,$81,$06<br />
dc.b $82,$03,$82,$81,$06,$80,$03,$81,$81,$06,$82,$E3<br />
MusCred_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$01,$1F,$1F,$FF,$0F,$17,$27,$28,$80<br />
dc.b $08,$09,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$25,$0E,$30,$84<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$0B,$0D,$19,$0B,$80,$80<br />
dc.b $08,$0A,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$24,$13,$2D,$80<br />
dc.b $3D,$01,$51,$21,$01,$12,$14,$14,$0F,$0A,$05,$05<br />
dc.b $05,$00,$00,$00,$00,$2B,$2B,$2B,$1B,$19,$80,$80,$80<br />
dc.b $04,$57,$70,$02,$50,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$06,$00,$0A,$0A,$00,$00,$0F,$0F,$1A,$10,$80,$80<br />
dc.b $35,$01,$13,$01,$00,$1F,$18,$1D,$19,$00,$06,$09<br />
dc.b $0D,$00,$02,$00,$03,$00,$15,$06,$16,$1E,$83,$80,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1A,$16,$88,$88<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$14,$0F,$37,$80<br />
dc.b $3B,$0F,$01,$06,$02,$DF,$1F,$1F,$DF,$0C,$0A,$00<br />
dc.b $03,$0F,$00,$00,$01,$F3,$55,$05,$5C,$22,$22,$20,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1C,$14,$84,$80<br />
dc.b $3A,$69,$50,$70,$60,$1C,$1A,$18,$18,$10,$02,$0C<br />
dc.b $09,$08,$06,$06,$03,$F9,$06,$56,$06,$28,$14,$15,$00<br />
dc.b $3D,$00,$02,$01,$01,$4C,$50,$0F,$12,$0C,$00,$02<br />
dc.b $05,$01,$00,$00,$00,$28,$2A,$29,$19,$1A,$06,$00,$00<br />
dc.b $2C,$71,$31,$71,$31,$1F,$1F,$16,$16,$00,$00,$0F<br />
dc.b $0F,$00,$00,$0F,$0F,$00,$00,$FA,$FA,$15,$14,$00,$00<br />
dc.b $18,$37,$31,$32,$31,$9E,$1C,$DC,$9C,$0D,$04,$06<br />
dc.b $01,$08,$03,$0A,$05,$B6,$36,$B6,$28,$2C,$14,$22,$00<br />
dc.b $3D,$01,$02,$02,$02,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$24,$18,$18,$18,$1C,$82,$82,$82<br />
dc.b $32,$71,$33,$0D,$01,$5F,$5F,$99,$94,$05,$05,$05<br />
dc.b $07,$02,$02,$02,$02,$11,$11,$11,$72,$23,$26,$2D,$80<br />
dc.b $3A,$32,$52,$01,$31,$1F,$1F,$1F,$18,$01,$00,$1F<br />
dc.b $00,$00,$00,$0F,$00,$5A,$03,$0F,$1A,$3B,$4F,$30,$00<br />
dc.b $3C,$42,$32,$41,$41,$12,$12,$12,$12,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$06,$06,$08,$08,$24,$24,$08,$08<br />
dc.b $31,$34,$30,$35,$31,$DF,$9F,$DF,$9F,$0C,$0C,$07<br />
dc.b $09,$07,$07,$07,$08,$2F,$1F,$1F,$2F,$17,$14,$32,$80<br />
dc.b $3D,$01,$01,$01,$01,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$20,$1A,$1A,$1A,$19,$84,$84,$84<br />
dc.b $24,$70,$30,$74,$38,$12,$1F,$1F,$1F,$05,$05,$03<br />
dc.b $03,$05,$05,$03,$03,$36,$26,$2C,$2C,$0A,$06,$08,$08<br />
dc.b $3A,$01,$01,$01,$02,$8D,$07,$07,$52,$09,$00,$00<br />
dc.b $03,$01,$02,$02,$00,$5F,$0F,$0F,$2F,$18,$18,$22,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$03,$03,$08,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$17,$20,$28,$80<br />
dc.b $20,$7A,$00,$31,$00,$9F,$DC,$D8,$DF,$10,$04,$0A<br />
dc.b $04,$0F,$08,$08,$08,$5F,$BF,$5F,$BF,$14,$17,$2B,$80<br />
dc.b $3A,$61,$51,$08,$02,$5D,$5D,$5D,$50,$04,$1F,$0F<br />
dc.b $1F,$00,$00,$00,$00,$1F,$0F,$5F,$0F,$22,$22,$1E,$80<br />
dc.b $02,$01,$02,$55,$04,$92,$8E,$8D,$54,$0D,$00,$0C<br />
dc.b $03,$00,$00,$00,$00,$FF,$0F,$2F,$5F,$16,$1D,$2A,$80<br />
dc.b $02,$75,$73,$71,$31,$1F,$96,$58,$9F,$01,$03,$1B<br />
dc.b $08,$01,$01,$04,$05,$FF,$3F,$2F,$2F,$24,$30,$29,$80<br />
dc.b $20,$66,$60,$65,$60,$DF,$9F,$DF,$1F,$00,$09,$06<br />
dc.b $0C,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$1C,$16,$3A,$80<br />
dc.b $0D,$32,$06,$08,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$86,$80,$8D<br />
dc.b $38,$3A,$11,$0A,$02,$D4,$50,$14,$0E,$05,$02,$08<br />
dc.b $88,$00,$00,$00,$00,$99,$09,$09,$1A,$2D,$19,$2C,$86<br />
dc.b $0D,$32,$02,$04,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$8B,$86,$93<br />
dc.b $3A,$20,$60,$23,$01,$1E,$1F,$1F,$1F,$0A,$0B,$0A<br />
dc.b $0A,$05,$0A,$07,$08,$A4,$96,$85,$78,$21,$28,$25,$00<br />
dc.b $3A,$32,$32,$56,$42,$8D,$15,$4F,$52,$06,$07,$08<br />
dc.b $04,$02,$00,$00,$00,$18,$28,$18,$28,$19,$2A,$20,$00<br />
dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$19,$13,$37,$80<br />
dc.b $3D,$01,$02,$02,$02,$14,$8C,$0E,$0E,$08,$02,$05<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$1A,$80,$80,$80<br />
; end of Mus_Credits<br />
<br />
; ------------------------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ------------------------------------------------------------------------------------------<br />
; WARNING the sound driver treats certain sounds specially<br />
; going by the ID of the sound.<br />
; SndID_Ring, SndID_RingLeft, SndID_Gloop, SndID_SpindashRev<br />
; are referenced by the sound driver directly.<br />
; If needed you can change this in s2.sounddriver.asm<br />
<br />
<br />
; NOTE: the exact order of this list determines the priority of each sound, since it determines the sound's SndID.<br />
; a sound can get dropped if a higher-priority sound is already playing.<br />
; the rules for sound priority are currently unknown, but you can generally swap pointer lines around to resolve priority conflicts.<br />
; loc_FEE91: SoundPoint:<br />
SoundIndex:<br />
SndPtr_Jump: rom_ptr_z80 Sound20 ; jumping sound<br />
SndPtr_Checkpoint: rom_ptr_z80 Sound21 ; checkpoint ding-dong sound<br />
SndPtr_SpikeSwitch: rom_ptr_z80 Sound22 ; spike switch sound<br />
SndPtr_Hurt: rom_ptr_z80 Sound23 ; hurt sound<br />
SndPtr_Skidding: rom_ptr_z80 Sound24 ; skidding sound<br />
SndPtr_BlockPush: rom_ptr_z80 Sound25 ; block push sound<br />
SndPtr_HurtBySpikes: rom_ptr_z80 Sound26 ; spiky impalement sound<br />
SndPtr_Sparkle: rom_ptr_z80 Sound27 ; sparkling sound<br />
SndPtr_Beep: rom_ptr_z80 Sound28 ; short beep<br />
SndPtr_Bwoop: rom_ptr_z80 Sound29 ; bwoop<br />
SndPtr_Splash: rom_ptr_z80 Sound2A ; splash sound<br />
SndPtr_Swish: rom_ptr_z80 Sound2B ; swish<br />
SndPtr_BossHit: rom_ptr_z80 Sound2C ; boss hit<br />
SndPtr_InhalingBubble: rom_ptr_z80 Sound2D ; inhaling a bubble<br />
SndPtr_ArrowFiring:<br />
SndPtr_LavaBall: rom_ptr_z80 Sound2E ; arrow firing<br />
SndPtr_Shield: rom_ptr_z80 Sound2F ; shield sound<br />
SndPtr_LaserBeam: rom_ptr_z80 Sound30 ; laser beam<br />
SndPtr_Zap: rom_ptr_z80 Sound31 ; zap<br />
SndPtr_Drown: rom_ptr_z80 Sound32 ; drownage<br />
SndPtr_FireBurn: rom_ptr_z80 Sound33 ; fire + burn<br />
SndPtr_Bumper: rom_ptr_z80 Sound34 ; bumper bing<br />
SndPtr_Ring:<br />
SndPtr_RingRight: rom_ptr_z80 Sound35 ; ring sound<br />
SndPtr_SpikesMove: rom_ptr_z80 Sound36<br />
SndPtr_Rumbling: rom_ptr_z80 Sound37 ; rumbling<br />
rom_ptr_z80 Sound38<br />
SndPtr_Smash: rom_ptr_z80 Sound39 ; smash/breaking<br />
rom_ptr_z80 Sound3A ; nondescript ding<br />
SndPtr_DoorSlam: rom_ptr_z80 Sound3B ; door slamming shut<br />
SndPtr_SpindashRelease: rom_ptr_z80 Sound3C ; spindash unleashed<br />
SndPtr_Hammer: rom_ptr_z80 Sound3D ; slide-thunk<br />
SndPtr_Roll: rom_ptr_z80 Sound3E ; rolling sound<br />
SndPtr_ContinueJingle: rom_ptr_z80 Sound3F ; got continue<br />
SndPtr_CasinoBonus: rom_ptr_z80 Sound40 ; short bonus ding<br />
SndPtr_Explosion: rom_ptr_z80 Sound41 ; badnik bust<br />
SndPtr_WaterWarning: rom_ptr_z80 Sound42 ; warning ding-ding<br />
SndPtr_EnterGiantRing: rom_ptr_z80 Sound43 ; special stage ring flash (unused)<br />
SndPtr_BossExplosion: rom_ptr_z80 Sound44 ; thunk<br />
SndPtr_TallyEnd: rom_ptr_z80 Sound45 ; cha-ching<br />
SndPtr_RingSpill: rom_ptr_z80 Sound46 ; losing rings<br />
rom_ptr_z80 Sound47 ; chain pull chink-chink<br />
SndPtr_Flamethrower: rom_ptr_z80 Sound48 ; flamethrower<br />
SndPtr_Bonus: rom_ptr_z80 Sound49 ; bonus pwoieeew (unused)<br />
SndPtr_SpecStageEntry: rom_ptr_z80 Sound4A ; special stage entry<br />
SndPtr_SlowSmash: rom_ptr_z80 Sound4B ; slower smash/crumble<br />
SndPtr_Spring: rom_ptr_z80 Sound4C ; spring boing<br />
SndPtr_Blip: rom_ptr_z80 Sound4D ; selection blip<br />
SndPtr_RingLeft: rom_ptr_z80 Sound4E ; another ring sound (only plays in the left speaker?)<br />
SndPtr_Signpost: rom_ptr_z80 Sound4F ; signpost spin sound<br />
SndPtr_CNZBossZap: rom_ptr_z80 Sound50 ; mosquito zapper<br />
rom_ptr_z80 Sound51<br />
rom_ptr_z80 Sound52<br />
SndPtr_Signpost2P: rom_ptr_z80 Sound53<br />
SndPtr_OOZLidPop: rom_ptr_z80 Sound54 ; OOZ lid pop sound<br />
SndPtr_SlidingSpike: rom_ptr_z80 Sound55<br />
SndPtr_CNZElevator: rom_ptr_z80 Sound56<br />
SndPtr_PlatformKnock: rom_ptr_z80 Sound57<br />
SndPtr_BonusBumper: rom_ptr_z80 Sound58 ; CNZ bonusy bumper sound<br />
SndPtr_LargeBumper: rom_ptr_z80 Sound59 ; CNZ baaang bumper sound<br />
SndPtr_Gloop: rom_ptr_z80 Sound5A ; CNZ gloop / water droplet sound<br />
SndPtr_PreArrowFiring: rom_ptr_z80 Sound5B<br />
SndPtr_Fire: rom_ptr_z80 Sound5C<br />
SndPtr_ArrowStick: rom_ptr_z80 Sound5D ; chain clink<br />
SndPtr_Helicopter:<br />
SndPtr_WingFortress: rom_ptr_z80 Sound5E ; helicopter<br />
SndPtr_SuperTransform: rom_ptr_z80 Sound5F<br />
SndPtr_SpindashRev: rom_ptr_z80 Sound60 ; spindash charge<br />
SndPtr_Rumbling2: rom_ptr_z80 Sound61 ; rumbling<br />
SndPtr_CNZLaunch: rom_ptr_z80 Sound62<br />
SndPtr_Flipper: rom_ptr_z80 Sound63 ; CNZ blooing bumper<br />
SndPtr_HTZLiftClick: rom_ptr_z80 Sound64 ; HTZ track click sound<br />
SndPtr_Leaves: rom_ptr_z80 Sound65 ; kicking up leaves sound<br />
SndPtr_MegaMackDrop: rom_ptr_z80 Sound66 ; leaf splash?<br />
SndPtr_DrawbridgeMove: rom_ptr_z80 Sound67<br />
SndPtr_QuickDoorSlam: rom_ptr_z80 Sound68 ; door slamming quickly (seems unused)<br />
SndPtr_DrawbridgeDown: rom_ptr_z80 Sound69<br />
SndPtr_LaserBurst: rom_ptr_z80 Sound6A ; robotic laser burst<br />
SndPtr_Scatter:<br />
SndPtr_LaserFloor: rom_ptr_z80 Sound6B ; scatter<br />
SndPtr_Teleport: rom_ptr_z80 Sound6C<br />
SndPtr_Error: rom_ptr_z80 Sound6D ; error sound<br />
SndPtr_MechaSonicBuzz: rom_ptr_z80 Sound6E ; silver sonic buzz saw<br />
SndPtr_LargeLaser: rom_ptr_z80 Sound6F<br />
SndPtr_OilSlide: rom_ptr_z80 Sound70<br />
SndPtr__End:<br />
<br />
; There are many non-relative pointers in these sound effects,<br />
; so the sounds shouldn't simply be BINCLUDE'd.<br />
; They could be included as separate .asm files using "include" instead of "binclude",<br />
; but I wanted to minimize the number of included asm files.<br />
<br />
; some comments on what the various script commands do (after the header):<br />
; 0x00-0x7F sets the note duration (of the previous note and following notes)<br />
; 0x81-0xDF plays a note (the valid range may be smaller for PSG or DAC)<br />
; 0x80 plays silence<br />
; 0xE0-0xFF does special things. I won't list them here... search for "Coordination flags" sonic 2.<br />
<br />
; the FM voices (poorly named "ssamp" or "samples" below)<br />
; are 25 bytes each and go directly to YM2612 registers.<br />
; they can be hard to edit (there's an art to it)<br />
; but search for sonic "Voice editing" for more info if you want to try.<br />
<br />
; jumping sound<br />
Sound20: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$F400<br />
+ dc.b $F5,$00,$9E,$05,$F0,$02,$01,$F8,$65,$A3,$15,$F2<br />
<br />
; checkpoint ding-dong sound<br />
Sound21: dc.w z80_ptr(ssamp21),$0101<br />
dc.w $8005,z80_ptr(+),$0001<br />
ssamp21: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
+ dc.b $EF,$00,$BD,$06,$BA,$16,$F2<br />
<br />
; spike switch sound<br />
Sound22: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C0,$04,$CA,$04<br />
- dc.b $C0,$01,$EC<br />
dc.w $01F7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; hurt sound<br />
Sound23: dc.w z80_ptr(ssamp23),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B0,$07,$E7,$AD<br />
- dc.b $01,$E6<br />
dc.w $01F7,$002F,z80_ptr(-)<br />
dc.b $F2<br />
ssamp23: dc.b $30,$30,$30,$30,$30,$9E,$DC,$D8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$14,$14,$3C,$80<br />
<br />
; skidding sound<br />
Sound24: dc.w $0000,$0102 ; sound header... no sample and 2 script entries<br />
dc.w $80A0,z80_ptr(+),$F400 ; entry 1 header<br />
dc.w $80C0,z80_ptr(++),$F400 ; entry 2 header<br />
+ dc.b $F5,$00,$AF,$01,$80,$AF,$80,$03 ; script entry 1<br />
- dc.b $AF,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 1 end<br />
+ dc.b $F5,$00,$80,$01,$AD,$80,$AD,$80,$03 ; script entry 2<br />
- dc.b $AD,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 2 end<br />
<br />
; block push sound<br />
Sound25: dc.w z80_ptr(ssamp25),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$01,$8B,$0A,$80,$02,$F2<br />
ssamp25: dc.b $FA,$21,$10,$30,$32,$2F,$2F,$1F,$2F,$05,$09,$08<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
; spiky impalement sound<br />
Sound26: dc.w z80_ptr(ssamp26),$0101<br />
dc.w $8005,z80_ptr(+),$F200<br />
+ dc.b $EF,$00,$F0,$01,$01,$10,$FF,$CF,$05,$D7,$25,$F2<br />
ssamp26: dc.b $3B,$3C,$30,$39,$31,$DF,$1F,$1F,$DF,$04,$04,$05<br />
dc.b $01,$04,$04,$04,$02,$FF,$1F,$0F,$AF,$29,$0F,$20,$80<br />
<br />
; sparkling sound<br />
Sound27: dc.w z80_ptr(ssamp27),$0101<br />
dc.w $8004,z80_ptr(+),$0C1C<br />
+ dc.b $EF,$00,$C1,$05,$C4,$05,$C9,$2B,$F2<br />
ssamp27: dc.b $07,$73,$33,$33,$73,$0F,$19,$14,$1A,$0A,$0A,$0A<br />
dc.b $0A,$0A,$0A,$0A,$0A,$57,$57,$57,$57,$00,$00,$00,$00<br />
<br />
; short beep<br />
Sound28: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$E803<br />
+ dc.b $F5,$04,$CB,$04,$F2<br />
<br />
; bwoop<br />
Sound29: dc.w $0000,$0101<br />
dc.w $80A0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$E6,$35,$8E,$06,$F2<br />
<br />
; splash sound<br />
Sound2A: dc.w z80_ptr(ssamp2A),$0102<br />
dc.w $80C0,z80_ptr(+),$0000<br />
dc.w $8005,z80_ptr(++),$0003<br />
+ dc.b $F5,$00,$F3,$E7,$C2,$05,$C6,$05,$E7<br />
- dc.b $07,$EC,$01<br />
dc.w $E7F7,$000F,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$A6,$14,$F2<br />
ssamp2A: dc.b $00,$00,$02,$03,$00,$D9,$1F,$DF,$1F,$12,$14,$11<br />
dc.b $0F,$0A,$0A,$00,$0D,$FF,$FF,$FF,$FF,$22,$27,$07,$80<br />
<br />
; swish<br />
Sound2B: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$C6,$03,$80,$03,$C6,$01,$E7<br />
- dc.b $01,$EC,$01<br />
dc.w $E7F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; boss hit<br />
Sound2C: dc.w z80_ptr(smashsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$0C,$01<br />
- dc.b $81,$0A,$E6<br />
dc.w $10F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
smashsamp: dc.b $F9,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
<br />
; inhaling a bubble<br />
Sound2D: dc.w z80_ptr(ssamp2D),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$21,$6E,$A6,$07<br />
dc.b $80,$06,$F0,$01,$01,$44,$1E,$AD,$08,$F2<br />
ssamp2D: dc.b $35,$05,$08,$09,$07,$1E,$0D,$0D,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$1F,$2F,$1F,$15,$12,$12,$80<br />
<br />
; arrow firing<br />
Sound2E: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$C6,$01,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp2E: dc.b $FA,$02,$00,$03,$05,$12,$0F,$11,$13,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$2F,$0E,$1A,$80<br />
<br />
; shield sound<br />
Sound2F: dc.w z80_ptr(ssamp2F),$0101<br />
dc.w $8005,z80_ptr(+),$0C00<br />
+ dc.b $EF,$00,$80,$01,$A3,$05,$E7,$A4,$26,$F2<br />
ssamp2F: dc.b $30,$30,$30,$30,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$04,$14,$2C,$80<br />
<br />
; laser beam<br />
Sound30: dc.w z80_ptr(ssamp30),$0101 ; sound header... a voice and 1 script entry<br />
dc.w $8005,z80_ptr(+),$FB05 ; script entry header<br />
+ dc.b $EF,$00,$DF,$7F ; script start<br />
- dc.b $DF,$02,$E6 ; script continued<br />
dc.w $01F7,$001B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script end<br />
ssamp30: dc.b $83,$1F,$1F,$15,$1F,$1F,$1F,$1F,$1F,$00,$00,$00 ; voice<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$0B,$01,$16,$82 ; (fixed length)<br />
<br />
; zap<br />
Sound31: dc.w z80_ptr(ssamp31),$0101<br />
dc.w $8005,z80_ptr(+),$FB02<br />
+ dc.b $EF,$00,$B3,$05,$80,$01,$B3,$09,$F2<br />
ssamp31: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$05,$34,$10,$87<br />
<br />
; drownage<br />
Sound32: dc.w z80_ptr(ssamp32),$0102<br />
dc.w $8004,z80_ptr(++),$0C04<br />
dc.w $8005,z80_ptr(+),$0E02<br />
+ dc.b $EF,$00,$F0,$01,$01,$83,$0C<br />
- dc.b $8A,$05,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $80,$06,$EF,$00,$F0,$01,$01,$6F,$0E<br />
- dc.b $8D,$04,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp32: dc.b $35,$14,$04,$1A,$09,$0E,$11,$10,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$4F,$2F,$4F,$2F,$12,$12,$80<br />
<br />
; fire + burn<br />
Sound33: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$A7,$25,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; bumper bing<br />
Sound34: dc.w z80_ptr(ssamp34),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $8002,z80_ptr(+++),$0002<br />
+ dc.b $EF,$00,$F6<br />
dc.w z80_ptr(Sound34_3)<br />
+ dc.b $EF,$00,$E1,$07,$80,$01<br />
Sound34_3:<br />
dc.b $BA,$20,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
ssamp34: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$1F,$2B,$80,$80<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; ring sound<br />
Sound35: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$40,$C1,$05,$C4,$05,$C9,$1B,$F2<br />
<br />
<br />
Sound36: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C1,$07<br />
- dc.b $D0,$01,$EC<br />
dc.w $01F7,$000C,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; rumbling<br />
Sound37: dc.w z80_ptr(ssamp37),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$20,$08<br />
- dc.b $8B<br />
dc.w $0AF7,$0008,z80_ptr(-)<br />
- dc.b $8B,$10,$E6<br />
dc.w $03F7,$0009,z80_ptr(-)<br />
dc.b $F2<br />
ssamp37: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
<br />
Sound38: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$B4,$08<br />
- dc.b $B0,$02,$EC<br />
dc.w $01F7,$0003,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; smash/breaking<br />
Sound39: dc.w z80_ptr(smashsamp),$0104<br />
dc.w $8002,z80_ptr(+),$1000<br />
dc.w $8004,z80_ptr(+++),$0000<br />
dc.w $8005,z80_ptr(++),$1000<br />
dc.w $80C0,z80_ptr(s39s4),$0000<br />
+ dc.b $E0,$40,$80,$02,$F6<br />
dc.w z80_ptr(++)<br />
+ dc.b $E0,$80,$80,$01<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
s39s4: dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; nondescript ding<br />
Sound3A: dc.w z80_ptr(ssamp3A),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$AE,$08,$F2<br />
ssamp3A: dc.b $1C,$2E,$0F,$02,$02,$1F,$1F,$1F,$1F,$18,$14,$0F<br />
dc.b $0E,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$20,$1B,$80,$80<br />
<br />
; door slamming shut<br />
Sound3B: dc.w z80_ptr(ssamp3B),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$80,$A0,$06,$F2<br />
ssamp3B: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; spindash unleashed<br />
Sound3C: dc.w z80_ptr(ssamp3C),$0102<br />
dc.w $8005,z80_ptr(+),$9000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$F2<br />
+ dc.b $F5,$07,$80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$4F,$F2<br />
ssamp3C: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
<br />
; slide-thunk<br />
Sound3D: dc.w z80_ptr(ssamp3D),$0102<br />
dc.w $8005,z80_ptr(+),$100A<br />
dc.w $8004,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$60,$01,$A7,$08,$F2<br />
+ dc.b $80,$08,$EF,$01,$84,$22,$F2<br />
ssamp3D: dc.b $FA,$21,$19,$3A,$30,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
dc.b $FA,$31,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$1F,$2F,$2F,$0D,$01,$00,$80<br />
<br />
; rolling sound<br />
Sound3E: dc.w z80_ptr(ssamp3E),$0101<br />
dc.w $8004,z80_ptr(+),$0C05<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$09,$FF,$CA,$25,$F4<br />
- dc.b $E7,$E6,$01,$D0<br />
dc.w $02F7,$002A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3E: dc.b $3C,$00,$02,$44,$02,$1F,$1F,$1F,$15,$00,$00,$1F<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0D,$28,$00,$00<br />
<br />
; got continue<br />
Sound3F: dc.w z80_ptr(ssamp3F),$0103<br />
dc.w $8002,z80_ptr(+),$F406<br />
dc.w $8004,z80_ptr(++),$F406<br />
dc.w $8005,z80_ptr(+++),$F406<br />
+ dc.b $EF,$00,$C9,$07,$CD,$D0,$CB,$CE,$D2,$CD,$D0,$D4,$CE,$D2,$D5<br />
- dc.b $D0,$07,$D4,$D7,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$80,$07,$CD,$15,$CE,$D0,$D2<br />
- dc.b $D4,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$C9,$15,$CB,$CD,$CE<br />
- dc.b $D0,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3F: dc.b $14,$25,$36,$33,$11,$1F,$1F,$1F,$1F,$15,$1C,$18<br />
dc.b $13,$0B,$0D,$08,$09,$0F,$8F,$9F,$0F,$24,$0A,$05,$80<br />
<br />
; short bonus ding<br />
Sound40: dc.w z80_ptr(ssamp3F),$0102<br />
dc.w $8005,z80_ptr(++),$0008<br />
dc.w $8004,z80_ptr(+),$0008<br />
+ dc.b $E1,$03,$80,$02<br />
+ dc.b $EF,$00,$C4,$16,$F2<br />
<br />
; badnik bust<br />
Sound41: dc.w z80_ptr(ssamp41),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0002<br />
+ dc.b $F0,$03,$01,$72,$0B,$EF,$00,$BA,$16,$F2<br />
+ dc.b $F5,$01,$F3,$E7,$B0,$1B,$F2<br />
ssamp41: dc.b $3C,$0F,$03,$01,$01,$1F,$1F,$1F,$1F,$19,$19,$12<br />
dc.b $0E,$05,$00,$12,$0F,$0F,$FF,$7F,$FF,$00,$00,$80,$80<br />
<br />
; warning ding-ding<br />
Sound42: dc.w z80_ptr(ssamp3F),$0101<br />
dc.w $8005,z80_ptr(+),$0C08<br />
+ dc.b $EF,$00,$BA,$08,$BA,$25,$F2<br />
<br />
; special stage ring flash (unused)<br />
Sound43: dc.w z80_ptr(ssamp43),$0102<br />
dc.w $8004,z80_ptr(+),$0C00<br />
dc.w $8005,z80_ptr(++),$0013<br />
+ dc.b $EF,$01,$80,$01,$A2,$08,$EF,$00,$E7,$AD,$26,$F2<br />
+ dc.b $EF,$02,$F0,$06,$01,$03,$FF,$80,$0A<br />
- dc.b $C3<br />
dc.w $06F7,$0005,z80_ptr(-)<br />
dc.b $C3,$17,$F2<br />
ssamp43: dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$1C,$80<br />
dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$2C,$80<br />
dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$13,$13,$81,$88<br />
<br />
; thunk<br />
Sound44: dc.w z80_ptr(ssamp44),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$8A,$22,$F2<br />
ssamp44: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$4F,$2F,$2F,$0D,$04,$07,$80<br />
<br />
; cha-ching<br />
Sound45: dc.w z80_ptr(ssamp45),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$8A,$08,$80,$02,$8A,$08,$F2<br />
+ dc.b $EF,$01,$80,$12,$C6,$55,$F2<br />
+ dc.b $F5,$02,$F3,$E7,$80,$02,$C2,$05,$C4,$04,$C2,$05,$C4,$04,$F2<br />
ssamp45: dc.b $3B,$03,$02,$02,$06,$18,$1A,$1A,$96,$17,$0A,$0E<br />
dc.b $10,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$39,$28,$80<br />
ringsamp: dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$23,$80,$80<br />
<br />
; losing rings (scatter)<br />
Sound46: dc.w z80_ptr(ringsamp),$0102<br />
dc.w $8004,z80_ptr(+),$0005<br />
dc.w $8005,z80_ptr(++),$0008<br />
+ dc.b $EF,$00,$C6,$02,$05,$05,$05,$05,$05,$05,$3A,$F2<br />
+ dc.b $EF,$00,$80,$02,$C4,$02,$05,$15,$02,$05,$32,$F2<br />
<br />
; chain pull chink-chink<br />
Sound47: dc.w z80_ptr(ssamp47),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$BE,$05,$80,$04,$BE,$04,$80,$04,$F2<br />
ssamp47: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; flamethrower<br />
Sound48: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$25,$F2<br />
<br />
; bonus pwoieeew (unused)<br />
Sound49: dc.w z80_ptr(ssamp49),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$33,$18,$B9,$1A,$F2<br />
ssamp49: dc.b $3B,$0A,$05,$31,$02,$5F,$5F,$5F,$5F,$04,$16,$14<br />
dc.b $0C,$00,$00,$04,$00,$1F,$D8,$6F,$FF,$03,$00,$25,$80<br />
<br />
; special stage entry<br />
Sound4A: dc.w z80_ptr(ssamp4A),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$F0,$01,$01,$5B,$02,$CC,$65,$F2<br />
ssamp4A: dc.b $20,$36,$30,$35,$31,$41,$3B,$49,$4B,$09,$09,$06<br />
dc.b $08,$01,$02,$03,$A9,$0F,$0F,$0F,$0F,$29,$23,$27,$80<br />
<br />
; slower smash/crumble<br />
Sound4B: dc.w z80_ptr(smashsamp),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; spring boing<br />
Sound4C: dc.w z80_ptr(ssamp4C),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$5D,$0F,$B0,$0C,$F4<br />
- dc.b $E7,$E6,$02,$BD<br />
dc.w $02F7,$0019,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4C: dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$16,$13,$30,$80<br />
<br />
; selection blip<br />
Sound4D: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $BB,$02,$F2<br />
<br />
; another ring sound (only plays in the left speaker?)<br />
Sound4E: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8004,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$80,$C1,$04,$C4,$05,$C9,$1B,$F2<br />
<br />
; signpost spin sound<br />
Sound4F: dc.w z80_ptr(ssamp4F),$0102<br />
dc.w $8004,z80_ptr(+),$2703<br />
dc.w $8005,z80_ptr(++),$2700<br />
+ dc.b $80,$04<br />
+ dc.b $EF,$00<br />
- dc.b $B4,$05,$E6<br />
dc.w $02F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4F: dc.b $F4,$06,$0F,$04,$0E,$1F,$1F,$1F,$1F,$00,$0B,$00<br />
dc.b $0B,$00,$05,$00,$08,$0F,$FF,$0F,$FF,$0C,$03,$8B,$80<br />
<br />
; mosquito zapper<br />
Sound50: dc.w z80_ptr(ssamp50),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B3,$04,$80,$01<br />
- dc.b $B4,$04,$80<br />
dc.w $01F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
ssamp50: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$06,$34,$10,$87<br />
<br />
<br />
Sound51: dc.w z80_ptr(ssamp51),$0102<br />
dc.w $80C0,z80_ptr(+),$0001<br />
dc.w $8005,z80_ptr(++),$000B<br />
+ dc.b $F5,$02,$F3,$E4,$B0,$04,$85,$02,$F2<br />
+ dc.b $EF,$00,$E8,$04,$A5,$06,$F2<br />
ssamp51: dc.b $3C,$02,$01,$00,$01,$1F,$1F,$1F,$1F,$00,$19,$0E<br />
dc.b $10,$00,$00,$0C,$0F,$0F,$FF,$EF,$FF,$05,$00,$80,$80<br />
<br />
<br />
Sound52: dc.w z80_ptr(ssamp52),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $F0,$01,$01,$2A,$07,$EF,$00<br />
- dc.b $A5,$03<br />
dc.w $E7F7,$0013,z80_ptr(-)<br />
- dc.b $A5,$03,$E7,$E6<br />
dc.w $02F7,$0013,z80_ptr(-)<br />
dc.b $F2<br />
ssamp52: dc.b $28,$21,$21,$21,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$29,$20,$29,$80<br />
<br />
<br />
Sound53: dc.w z80_ptr(ssamp53),$0101<br />
dc.w $8005,z80_ptr(+),$F503<br />
+ dc.b $EF,$00,$F0,$01,$01,$46,$09,$A7,$14,$E7,$14,$E7,$E6,$04<br />
dc.b $14,$E7,$E6,$04,$14,$E7,$E6,$04,$0A,$E7,$E6,$04,$0A,$F2<br />
ssamp53: dc.b $07,$0A,$0C,$0C,$0C,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$2A,$0F,$0F,$80<br />
<br />
; OOZ lid pop sound<br />
Sound54: dc.w z80_ptr(ssamp54),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0006<br />
+ dc.b $EF,$00,$B6,$15,$F2<br />
+ dc.b $F3,$E7,$F5,$04,$C6,$03,$E7,$C5,$E7<br />
dc.b $C4,$E7,$C3,$E7,$C2,$E7,$C1,$E7,$C0,$F2<br />
ssamp54: dc.b $07,$03,$02,$03,$00,$FF,$6F,$6F,$3F,$12,$14,$11<br />
dc.b $0E,$1A,$0A,$03,$0D,$FF,$FF,$FF,$FF,$03,$07,$07,$80<br />
<br />
<br />
Sound55: dc.w z80_ptr(ssamp55),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$AA,$07,$B6,$15,$F2<br />
ssamp55: dc.b $42,$20,$0E,$0F,$0F,$1F,$1F,$1F,$1F,$1F,$1F,$1F<br />
dc.b $1F,$0F,$0E,$0F,$0E,$0F,$0F,$0F,$0F,$2E,$80,$20,$80<br />
<br />
<br />
Sound56: dc.w z80_ptr(ssamp56),$0101<br />
dc.w $8005,z80_ptr(+),$100E<br />
+ dc.b $EF,$00,$F0,$01,$01,$1E,$FF,$8F,$1C,$F4<br />
- dc.b $E7,$9A<br />
dc.w $05F7,$0009,z80_ptr(-)<br />
- dc.b $E7,$9A,$04,$E6,$02,$E7,$9A,$04,$E6<br />
dc.w $02F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp56: dc.b $0D,$06,$00,$00,$E5,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$27,$80,$80,$80<br />
<br />
<br />
Sound57: dc.w z80_ptr(ssamp57),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$CA,$15,$F2<br />
ssamp57: dc.b $04,$09,$70,$00,$30,$1C,$1F,$DF,$1F,$15,$12,$0B<br />
dc.b $0F,$0C,$0D,$00,$0D,$07,$2F,$FA,$FA,$00,$29,$00,$00<br />
<br />
; CNZ bonusy bumper sound<br />
Sound58: dc.w z80_ptr(ssamp58),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$B3,$06,$B3,$15,$F2<br />
ssamp58: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
<br />
; CNZ baaang bumper sound<br />
Sound59: dc.w z80_ptr(ssamp59),$0103<br />
dc.w $8004,z80_ptr(+),$0000<br />
dc.w $8002,z80_ptr(++),$0002<br />
dc.w $8005,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$E1,$0C,$B5,$14,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
+ dc.b $EF,$00,$B6,$14,$F2<br />
ssamp59: dc.b $32,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $0D,$00,$01,$01,$0C,$00,$23,$C3,$F6,$08,$07,$1C,$03<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; CNZ gloop / water droplet sound<br />
Sound5A: dc.w z80_ptr(ssamp5A),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$7F,$F1,$AA,$0A,$F2<br />
ssamp5A: dc.b $47,$03,$02,$02,$04,$5F,$5F,$5F,$5F,$0E,$1A,$11<br />
dc.b $0A,$09,$0A,$0A,$0A,$4F,$3F,$3F,$3F,$7F,$80,$80,$A3<br />
<br />
<br />
Sound5B: dc.w z80_ptr(ssamp5B),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$02,$A5,$01,$E7<br />
- dc.b $01,$E7,$E6<br />
dc.w $02F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5B: dc.b $38,$0F,$0F,$0F,$0F,$1F,$1F,$1F,$0E,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$1F,$00,$00,$00,$80<br />
<br />
<br />
Sound5C: dc.w z80_ptr(ssamp5C),$0102<br />
dc.w $8004,z80_ptr(+),$000E<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$85,$40<br />
- dc.b $E7,$04,$E6<br />
dc.w $04F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$40<br />
- dc.b $E7,$08,$E6<br />
dc.w $01F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5C: dc.b $FA,$12,$01,$01,$01,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$81,$8E,$14,$80<br />
<br />
; chain clink<br />
Sound5D: dc.w z80_ptr(ssamp5D),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$C0,$04,$F2<br />
ssamp5D: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; helicopter<br />
Sound5E: dc.w z80_ptr(ssamp5E),$0101<br />
dc.w $8002,z80_ptr(+),$1405<br />
+ dc.b $EF,$00<br />
- dc.b $95,$02,$95<br />
dc.w $01F7,$0013,z80_ptr(-)<br />
- dc.b $95,$02,$95,$01,$E6<br />
dc.w $01F7,$001B,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5E: dc.b $35,$30,$44,$40,$51,$1F,$1F,$1F,$1F,$10,$00,$13<br />
dc.b $15,$1F,$00,$1F,$1A,$7F,$0F,$7F,$5F,$02,$A8,$80,$80<br />
<br />
<br />
Sound5F: dc.w z80_ptr(ssamp5F),$0103<br />
dc.w $8005,z80_ptr(s5Fs1),$0000<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
s5Fs1 dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$E6,$0A,$80<br />
dc.b $06,$EF,$01,$F0,$01,$01,$11,$FF,$A2,$28<br />
- dc.b $E7,$03,$E6<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs2 dc.b $80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$1D<br />
- dc.b $E7,$07,$EC<br />
dc.w $01F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs3 dc.b $80,$16,$F5,$03<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $FFF7,$0005,z80_ptr(-)<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $01F7,$0007,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5F: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
dc.b $3A,$70,$30,$04,$01,$0F,$14,$19,$16,$08,$0A,$0B<br />
dc.b $05,$03,$03,$03,$05,$1F,$6F,$8F,$5F,$1F,$22,$1F,$80<br />
<br />
; spindash charge<br />
Sound60: dc.w z80_ptr(ssamp60),$0101<br />
dc.w $8005,z80_ptr(+),$FE00<br />
+ dc.b $EF,$00,$F0,$00,$01,$20,$F6,$C4,$16,$E7,$F4,$D0,$18,$E7<br />
- dc.b $04,$E7,$E6<br />
dc.w $03F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp60: dc.b $34,$00,$03,$0C,$09,$9F,$8C,$8F,$95,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$00,$1D,$00,$00<br />
<br />
; rumbling<br />
Sound61: dc.w z80_ptr(ssamp61),$0101<br />
dc.w $8004,z80_ptr(+),$0004<br />
+ dc.b $80,$01,$EF,$00,$F0,$00,$01,$70,$06,$82,$06,$85,$08,$83<br />
dc.b $01,$82,$05,$86,$06,$89,$03,$82,$08,$88,$04,$82,$06,$E6<br />
dc.b $02,$85,$08,$E6,$02,$83,$01,$E6,$02,$82,$05,$E6,$02,$86<br />
dc.b $06,$E6,$02,$89,$03,$E6,$02,$82,$08,$E6,$02,$88,$04,$E6,$02,$F2<br />
ssamp61: dc.b $32,$30,$30,$50,$30,$1F,$0E,$19,$0E,$07,$12,$15<br />
dc.b $09,$0A,$09,$1D,$06,$E8,$03,$0A,$17,$07,$00,$00,$00<br />
<br />
<br />
Sound62: dc.w z80_ptr(ssamp62),$0101<br />
dc.w $8005,z80_ptr(+),$FF00<br />
+ dc.b $EF,$00,$A6,$05,$F0,$01,$01,$E7,$40<br />
- dc.b $C4,$02,$E7,$E6<br />
dc.w $01F7,$0012,z80_ptr(-)<br />
dc.b $F2<br />
ssamp62: dc.b $34,$0C,$10,$73,$0C,$AF,$AC,$FF,$D5,$06,$00,$02<br />
dc.b $01,$02,$0A,$04,$08,$BF,$BF,$BF,$BF,$00,$08,$80,$80<br />
<br />
; CNZ blooing bumper<br />
Sound63: dc.w z80_ptr(ssamp63),$0101<br />
dc.w $8005,z80_ptr(+),$0907<br />
+ dc.b $EF,$00,$F0,$01,$01,$04,$56,$92,$03,$9A,$25,$F2<br />
ssamp63: dc.b $3D,$12,$10,$77,$30,$5F,$5F,$5F,$5F,$0F,$0A,$00<br />
dc.b $01,$0A,$0A,$0D,$0D,$4F,$0F,$0F,$0F,$13,$80,$80,$80<br />
<br />
; HTZ track click sound<br />
Sound64: dc.w z80_ptr(ssamp64),$0101<br />
dc.w $8005,z80_ptr(+),$1100<br />
+ dc.b $EF,$00,$C7,$02,$F2<br />
ssamp64: dc.b $24,$2A,$02,$05,$01,$1A,$1F,$10,$1F,$0F,$1F,$1F<br />
dc.b $1F,$0C,$0D,$11,$11,$0C,$09,$09,$0F,$0E,$04,$80,$80<br />
<br />
; kicking up leaves sound<br />
Sound65: dc.w z80_ptr(ssamp65),$0101<br />
dc.w $80C0,z80_ptr(+),$F800<br />
+ dc.b $F5,$03,$F3,$E7,$CE,$03,$F5,$06,$CE,$04,$EC<br />
dc.b $02,$CE,$02,$F5,$03,$EC,$FE,$CE,$08,$CE,$18,$F2<br />
ssamp65: ; uhm... apparently they forgot to null out the pointer to here.<br />
; luckily, sound 65 doesn't really use its sample<br />
<br />
; leaf splash?<br />
Sound66: dc.w z80_ptr(ssamp66),$0102<br />
dc.w $8005,z80_ptr(++),$EE08<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$F5,$09,$C6,$36,$F2<br />
+ dc.b $EF,$00,$80,$01,$92,$02,$02,$02,$30,$F2<br />
ssamp66: dc.b $32,$33,$17,$34,$13,$0F,$0D,$1B,$17,$00,$04,$02<br />
dc.b $0B,$08,$00,$08,$09,$6F,$5F,$4F,$6F,$05,$00,$00,$80<br />
<br />
<br />
Sound67: dc.w z80_ptr(ssamp67),$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$06,$F3,$E7,$90,$0A,$94,$0A,$98,$0A,$9C<br />
dc.b $0A,$A0,$0A,$A4,$08,$A8,$08,$AC,$08,$B0,$08,$F2<br />
ssamp67: ; another not-really-used sample (like Sound65)<br />
<br />
; door slamming quickly (seems unused)<br />
Sound68: dc.w z80_ptr(ssamp68),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$A5,$06,$F2<br />
ssamp68: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
<br />
Sound69: dc.w z80_ptr(ssamp69),$0102<br />
dc.w $8005,z80_ptr(+),$F400<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$9B,$03,$A8,$06,$9E,$08,$F2<br />
+ dc.b $F5,$04,$F3,$E7,$C6,$03,$C6,$06,$C6,$08,$F2<br />
ssamp69: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; robotic laser burst<br />
Sound6A: dc.w z80_ptr(ssamp6A),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$DF,$14,$E6,$18,$06,$F2<br />
ssamp6A: dc.b $3D,$09,$34,$34,$28,$1F,$16,$16,$16,$00,$00,$00<br />
dc.b $04,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$15,$02,$02,$00<br />
<br />
; scatter<br />
Sound6B: dc.w z80_ptr(ssamp6B),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$81,$04,$80,$0C,$F2<br />
ssamp6B: dc.b $3A,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $07,$00,$01,$01,$03,$00,$23,$C3,$46,$08,$07,$1C,$03<br />
<br />
<br />
Sound6C: dc.w z80_ptr(ssamp6C),$0104<br />
dc.w $8005,z80_ptr(++),$0010<br />
dc.w $8004,z80_ptr(+),$0010<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
+ dc.b $E1,$10<br />
+ dc.b $EF,$01,$F0,$01,$01,$EC,$56,$C0,$24,$F4,$EF,$00,$E6,$F0<br />
- dc.b $BB,$02,$E7,$E6,$02,$E9<br />
dc.w $01F7,$0020,z80_ptr(-)<br />
dc.b $F2<br />
ssamp6C: dc.b $00,$53,$30,$03,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$06,$23,$80<br />
dc.b $3C,$72,$32,$32,$72,$14,$14,$0F,$0F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$02,$02,$08,$08,$35,$14,$00,$00<br />
<br />
; error sound<br />
Sound6D: dc.w z80_ptr(ssamp6D),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$B0,$06,$80,$06,$B0,$18,$F2<br />
ssamp6D: dc.b $38,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$1F,$0C,$17,$00<br />
<br />
; silver sonic buzz saw<br />
Sound6E: dc.w z80_ptr(ssamp6E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$C6,$24,$E7<br />
- dc.b $C6,$04,$E7,$E6<br />
dc.w $04F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F3,$E7,$C7,$44,$F2<br />
ssamp6E: dc.b $33,$00,$10,$00,$31,$1F,$1D,$1E,$0E,$00,$0C,$1D<br />
dc.b $00,$00,$00,$01,$00,$0F,$0F,$0F,$0F,$08,$06,$07,$80<br />
<br />
<br />
Sound6F: dc.w z80_ptr(ssamp6A),$0103<br />
dc.w $8005,z80_ptr(++),$000B<br />
dc.w $8004,z80_ptr(+),$0012<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $E1,$02,$80,$02<br />
+ dc.b $EF,$00,$E6,$0C,$DF,$06,$E7,$E6,$F4,$06,$E7<br />
dc.b $E6,$F4,$12,$E7,$E6,$0C,$06,$E7,$E6,$0C,$06,$F2<br />
+ dc.b $F3,$E7,$C6,$04,$C0,$BA,$B4,$AE,$E6<br />
dc.b $01,$AE,$E6,$01,$AE,$E6,$01,$AE,$F2<br />
<br />
<br />
Sound70: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$C6,$18<br />
- dc.b $E7,$03,$E6<br />
dc.w $01F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to the other bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
; share these symbols externally (WARNING: don't rename, move or remove these labels!)<br />
shared movewZ80CompSize<br />
</asm><br />
<br />
We want to replace it with this optimized code:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===sound playback routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm><br />
==Upgrading Pause / Resume routines==</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208745
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-25T00:04:52Z
<p>Kram1024: /* sound playback routines */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==<br />
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><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
move sr,-(sp)<br />
movem.l d0-a6,-(sp)<br />
move #$2700,sr<br />
lea (Z80_Bus_Request).l,a3<br />
lea (Z80_Reset).l,a2<br />
moveq #0,d2<br />
move.w #$100,d1<br />
move.w d1,(a3) ; get Z80 bus<br />
move.w d1,(a2) ; release Z80 reset (was held high by console on startup)<br />
- btst d2,(a3)<br />
bne.s - ; wait until the 68000 has the bus<br />
jsr DecompressSoundDriver(pc)<br />
btst #0,(VDP_control_port+1).l ; check video mode<br />
sne (Z80_RAM+zPalModeByte).l ; set if PAL<br />
move.w d2,(a2) ; hold Z80 reset<br />
move.w d2,(a3) ; release Z80 bus<br />
moveq #$E6,d0<br />
- dbf d0,- ; wait for 2,314 cycles<br />
move.w d1,(a2) ; release Z80 reset<br />
movem.l (sp)+,d0-a6<br />
move (sp)+,sr<br />
rts<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; slightly modified Saxman decompression of the sound driver<br />
; a4 == $A00000 (start of Z80 RAM)<br />
; a5 == current position in Z80 RAM?<br />
; a6 == current position in compressed sound driver?<br />
; d0 == data to decompress? (byte)<br />
; d4 == ???<br />
; d5 == ???<br />
; d6 == ???<br />
; d7 == bytes left to decompress<br />
; loc_EC04A:<br />
DecompressSoundDriver:<br />
lea Snd_Driver(pc),a6<br />
; WARNING: the build script needs editing if you rename this label<br />
movewZ80CompSize: move.w #Snd_Driver_End-Snd_Driver,d7 ; patched (by fixpointer.exe) after compression since the exact size can't be known beforehand<br />
moveq #0,d6<br />
lea (Z80_RAM).l,a5<br />
moveq #0,d5<br />
lea (Z80_RAM).l,a4<br />
<br />
loc_EC062:<br />
lsr.w #1,d6<br />
btst #8,d6<br />
bne.s +<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d6<br />
ori.w #$FF00,d6<br />
+<br />
btst #0,d6<br />
beq.s loc_EC086<br />
jsr sub_EC0DE(pc)<br />
move.b d0,(a5)+<br />
addq.w #1,d5<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC086:<br />
jsr sub_EC0DE(pc)<br />
moveq #0,d4<br />
move.b d0,d4<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d3<br />
andi.w #$F,d3<br />
addq.w #2,d3<br />
andi.w #$F0,d0<br />
lsl.w #4,d0<br />
add.w d0,d4<br />
addi.w #$12,d4<br />
andi.w #$FFF,d4<br />
move.w d5,d0<br />
andi.w #$F000,d0<br />
add.w d0,d4<br />
cmp.w d4,d5<br />
bhs.s loc_EC0CC<br />
subi.w #$1000,d4<br />
bcc.s loc_EC0CC<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b #0,(a5)+<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC0CC:<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b (a4,d4.w),(a5)+<br />
addq.w #1,d4<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; End of function DecompressSoundDriver<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_EC0DE:<br />
move.b (a6)+,d0<br />
subq.w #1,d7<br />
bne.s +<br />
addq.w #4,sp<br />
+<br />
rts<br />
; End of function sub_EC0DE<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; S2 sound driver (Sound driver compression (slightly modified Saxman))<br />
; ---------------------------------------------------------------------------<br />
; loc_EC0E8:<br />
Snd_Driver:<br />
save<br />
include "s2.sounddriver.asm" ; CPU Z80<br />
restore<br />
padding off<br />
!org (Snd_Driver+Size_of_Snd_driver_guess) ; don't worry; I know what I'm doing<br />
<br />
<br />
; loc_ED04C:<br />
Snd_Driver_End:<br />
<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ---------------------------------------------------------------------------<br />
; the DAC data has to line up with the end of the bank.<br />
<br />
; actually it only has to fit within one bank, but we'll line it up to the end anyway<br />
; because the padding gives the sound driver some room to grow<br />
cnop -Size_of_DAC_samples, $8000<br />
<br />
; ---------------------------------------------------------------------------<br />
; DAC samples<br />
; ---------------------------------------------------------------------------<br />
; loc_ED100:<br />
SndDAC_Start:<br />
<br />
SndDAC_Sample1:<br />
BINCLUDE "sound/DAC/Sample 1.bin"<br />
SndDAC_Sample1_End<br />
<br />
SndDAC_Sample2:<br />
BINCLUDE "sound/DAC/Sample 2.bin"<br />
SndDAC_Sample2_End<br />
<br />
SndDAC_Sample5:<br />
BINCLUDE "sound/DAC/Sample 5.bin"<br />
SndDAC_Sample5_End<br />
<br />
SndDAC_Sample6:<br />
BINCLUDE "sound/DAC/Sample 6.bin"<br />
SndDAC_Sample6_End<br />
<br />
SndDAC_Sample3:<br />
BINCLUDE "sound/DAC/Sample 3.bin"<br />
SndDAC_Sample3_End<br />
<br />
SndDAC_Sample4:<br />
BINCLUDE "sound/DAC/Sample 4.bin"<br />
SndDAC_Sample4_End<br />
<br />
SndDAC_Sample7:<br />
BINCLUDE "sound/DAC/Sample 7.bin"<br />
SndDAC_Sample7_End<br />
<br />
SndDAC_End<br />
<br />
if SndDAC_End - SndDAC_Start > $8000<br />
fatal "DAC samples must fit within $8000 bytes, but you have $\{SndDAC_End-SndDAC_Start } bytes of DAC samples."<br />
endif<br />
if SndDAC_End - SndDAC_Start > Size_of_DAC_samples<br />
fatal "Size_of_DAC_samples = $\{Size_of_DAC_samples}, but you have $\{SndDAC_End-SndDAC_Start} bytes of DAC samples."<br />
endif<br />
<br />
; ---------------------------------------------------------------------------<br />
; Music pointers<br />
; ---------------------------------------------------------------------------<br />
align $8000<br />
<br />
; loc_F0000:<br />
MusicPoint1:<br />
MusPtr_Continue: rom_ptr_z80 Mus_Continue-MusicPoint2<br />
<br />
<br />
Mus_Continue: BINCLUDE "sound/music/Continue.bin"<br />
<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ----------------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ----------------------------------------------------------------------------------<br />
; the PCM data has to line up with the end of the bank.<br />
cnop -Size_of_SEGA_sound, $8000<br />
<br />
; -------------------------------------------------------------------------------<br />
; Sega Intro Sound<br />
; 8-bit unsigned raw audio at 16Khz<br />
; -------------------------------------------------------------------------------<br />
; loc_F1E8C:<br />
Snd_Sega: BINCLUDE "sound/PCM/SEGA.bin"<br />
Snd_Sega_End:<br />
<br />
if Snd_Sega_End - Snd_Sega > $8000<br />
fatal "Sega sound must fit within $8000 bytes, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
if Snd_Sega_End - Snd_Sega > Size_of_SEGA_sound<br />
fatal "Size_of_SEGA_sound = $\{Size_of_SEGA_sound}, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
<br />
; ------------------------------------------------------------------------------<br />
; Music pointers<br />
; ------------------------------------------------------------------------------<br />
align $8000<br />
soundBankStart := *<br />
<br />
; loc_F8000:<br />
MusicPoint2:<br />
MusPtr_CNZ_2P: rom_ptr_z80 Mus_CNZ_2P<br />
MusPtr_EHZ: rom_ptr_z80 Mus_EHZ<br />
MusPtr_MTZ: rom_ptr_z80 Mus_MTZ<br />
MusPtr_CNZ: rom_ptr_z80 Mus_CNZ<br />
MusPtr_MCZ: rom_ptr_z80 Mus_MCZ<br />
MusPtr_MCZ_2P: rom_ptr_z80 Mus_MCZ_2P<br />
MusPtr_ARZ: rom_ptr_z80 Mus_ARZ<br />
MusPtr_DEZ: rom_ptr_z80 Mus_DEZ<br />
MusPtr_SpecStage: rom_ptr_z80 Mus_SpecStage<br />
MusPtr_Options: rom_ptr_z80 Mus_Options<br />
MusPtr_Ending: rom_ptr_z80 Mus_Ending<br />
MusPtr_EndBoss: rom_ptr_z80 Mus_EndBoss<br />
MusPtr_CPZ: rom_ptr_z80 Mus_CPZ<br />
MusPtr_Boss: rom_ptr_z80 Mus_Boss<br />
MusPtr_SCZ: rom_ptr_z80 Mus_SCZ<br />
MusPtr_OOZ: rom_ptr_z80 Mus_OOZ<br />
MusPtr_WFZ: rom_ptr_z80 Mus_WFZ<br />
MusPtr_EHZ_2P: rom_ptr_z80 Mus_EHZ_2P<br />
MusPtr_2PResult: rom_ptr_z80 Mus_2PResult<br />
MusPtr_SuperSonic: rom_ptr_z80 Mus_SuperSonic<br />
MusPtr_HTZ: rom_ptr_z80 Mus_HTZ<br />
MusPtr_ExtraLife: rom_ptr_z80 Mus_ExtraLife<br />
MusPtr_Title: rom_ptr_z80 Mus_Title<br />
MusPtr_EndLevel: rom_ptr_z80 Mus_EndLevel<br />
MusPtr_GameOver: rom_ptr_z80 Mus_GameOver<br />
MusPtr_Invincible: rom_ptr_z80 Mus_Invincible<br />
MusPtr_Emerald: rom_ptr_z80 Mus_Emerald<br />
MusPtr_HPZ: rom_ptr_z80 Mus_HPZ<br />
MusPtr_Drowning: rom_ptr_z80 Mus_Drowning<br />
MusPtr_Credits: rom_ptr_z80 Mus_Credits<br />
<br />
; loc_F803C:<br />
Mus_HPZ: BINCLUDE "sound/music/HPZ.bin"<br />
Mus_Drowning: BINCLUDE "sound/music/Drowning.bin"<br />
Mus_Invincible: BINCLUDE "sound/music/Invincible.bin"<br />
Mus_CNZ_2P: BINCLUDE "sound/music/CNZ_2p.bin"<br />
Mus_EHZ: BINCLUDE "sound/music/EHZ.bin"<br />
Mus_MTZ: BINCLUDE "sound/music/MTZ.bin"<br />
Mus_CNZ: BINCLUDE "sound/music/CNZ.bin"<br />
Mus_MCZ: BINCLUDE "sound/music/MCZ.bin"<br />
Mus_MCZ_2P: BINCLUDE "sound/music/MCZ_2p.bin"<br />
Mus_ARZ: BINCLUDE "sound/music/ARZ.bin"<br />
Mus_DEZ: BINCLUDE "sound/music/DEZ.bin"<br />
Mus_SpecStage: BINCLUDE "sound/music/SpecStg.bin"<br />
Mus_Options: BINCLUDE "sound/music/Options.bin"<br />
Mus_Ending: BINCLUDE "sound/music/Ending.bin"<br />
Mus_EndBoss: BINCLUDE "sound/music/End_Boss.bin"<br />
Mus_CPZ: BINCLUDE "sound/music/CPZ.bin"<br />
Mus_Boss: BINCLUDE "sound/music/Boss.bin"<br />
Mus_SCZ: BINCLUDE "sound/music/SCZ.bin"<br />
Mus_OOZ: BINCLUDE "sound/music/OOZ.bin"<br />
Mus_WFZ: BINCLUDE "sound/music/WFZ.bin"<br />
Mus_EHZ_2P: BINCLUDE "sound/music/EHZ_2p.bin"<br />
Mus_2PResult: BINCLUDE "sound/music/2player results screen.bin"<br />
Mus_SuperSonic: BINCLUDE "sound/music/Supersonic.bin"<br />
Mus_HTZ: BINCLUDE "sound/music/HTZ.bin"<br />
Mus_Title: BINCLUDE "sound/music/Title screen.bin"<br />
Mus_EndLevel: BINCLUDE "sound/music/End of level.bin"<br />
<br />
; The following act mostly like sound effects<br />
; despite being listed with the music.<br />
; This means they're uncompressed format with absolute pointers<br />
; instead of compressed with relative pointers.<br />
; Because they have absolute pointers,<br />
; they have to be assembled rather than BINCLUDE'd.<br />
; See below (right before Sound20) for other notes<br />
; about the sound format that apply to these too.<br />
<br />
;Mus_ExtraLife: BINCLUDE "sound/music/Extra life.bin"<br />
Mus_ExtraLife: dc.w z80_ptr(Mus_EL_Voices),$0603,$02CD<br />
dc.w z80_ptr(Mus_EL_DAC),$0000<br />
dc.w z80_ptr(Mus_EL_FM1),$E810<br />
dc.w z80_ptr(Mus_EL_FM2),$E810<br />
dc.w z80_ptr(Mus_EL_FM3),$E810<br />
dc.w z80_ptr(Mus_EL_FM4),$E810<br />
dc.w z80_ptr(Mus_EL_FM5),$E810<br />
dc.w z80_ptr(Mus_EL_PSG1),$D008,$0005<br />
dc.w z80_ptr(Mus_EL_PSG2),$DC08,$0005<br />
dc.w z80_ptr(Mus_EL_PSG3),$DC00,$0004<br />
Mus_EL_FM4: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM1: dc.b $E0,$80<br />
+ dc.b $EF,$00,$E8,$06,$D9,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$DB,$09,$D7,$D6,$06,$D9,$18,$F2<br />
Mus_EL_FM2: dc.b $EF,$01,$E8,$06,$E2,$01,$D6,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$D7,$09,$D4,$D2,$06,$D6,$18,$E2,$01,$F2<br />
Mus_EL_FM5: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM3: dc.b $E0,$80<br />
+ dc.b $EF,$02,$BA,$0C,$80,$06,$BA,$B8,$80,$03<br />
dc.b $B8,$06,$80,$03,$B8,$06,$BA,$18,$F2<br />
Mus_EL_PSG1: dc.b $E8,$06,$D6,$06,$03,$03,$06,$06,$E8,$00,$D7,$09<br />
dc.b $D4,$D2,$06,$D6,$18<br />
Mus_EL_PSG2:<br />
Mus_EL_PSG3: dc.b $F2<br />
Mus_EL_DAC: dc.b $88,$12,$06,$8B,$09,$09,$06,$88,$06,$8A,$88,$8A<br />
dc.b $88,$0C,$E4<br />
Mus_EL_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
<br />
<br />
;Mus_GameOver: BINCLUDE "sound/music/Game over.bin"<br />
Mus_GameOver: dc.w z80_ptr(MusGO_Voices),$0603,$02F2<br />
dc.w z80_ptr(MusGOver_DAC),$0000<br />
dc.w z80_ptr(MusGOver_FM1),$E80A<br />
dc.w z80_ptr(MusGOver_FM2),$F40F<br />
dc.w z80_ptr(MusGOver_FM3),$F40F<br />
dc.w z80_ptr(MusGOver_FM4),$F40D<br />
dc.w z80_ptr(MusGOver_FM5),$DC16<br />
dc.w z80_ptr(MusGOver_PSG),$D003,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC06,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC00,$0004<br />
MusGOver_FM1: dc.b $EF,$00<br />
dc.b $F0,$20,$01,$04,$05<br />
dc.b $80,$0C,$CA,$12,$80,$06,$CA,$80,$CB,$12,$C8,$1E<br />
dc.b $CA,$06,$80,$CA,$80,$CA,$80,$C6,$80,$C4,$12,$C8<br />
dc.b $0C,$80,$12,$C9,$04,$80,$C9,$C8,$06,$80,$C7,$80<br />
dc.b $C6,$80<br />
dc.b $F0,$28,$01,$18,$05<br />
dc.b $C5,$60,$F2<br />
MusGOver_FM2: dc.b $EF,$01,$80,$01,$D9,$06,$80,$D9,$80,$D6,$80,$D6<br />
dc.b $80,$D7,$15,$D7,$1B,$D9,$06,$80,$D9,$80,$D6,$80<br />
dc.b $D6,$80,$DC,$15,$DC,$1B,$F2<br />
MusGOver_FM3: dc.b $EF,$01,$D6,$0C,$D6,$D2,$D2,$D4,$15,$D4,$1B,$D6<br />
dc.b $0C,$D6,$D2,$D2,$D7,$15,$D7,$1B,$F2<br />
MusGOver_FM4: dc.b $EF,$02,$E2,$01,$AE,$06,$80,$AE,$80,$A9,$80,$A9<br />
dc.b $80,$AC,$15,$AB,$0C,$AC,$03,$AB,$0C,$AE,$06,$80<br />
dc.b $AE,$80,$A9,$80,$A9,$80,$B3,$15,$B2,$0C,$B3,$03<br />
dc.b $B2,$0C,$AE,$04,$80,$AE,$AD,$06,$80,$AC,$80,$AB<br />
dc.b $80,$AB,$60,$E2,$01,$F2<br />
MusGOver_FM5: dc.b $EF,$03,$80,$30,$D7,$12,$80,$03,$D7,$1B,$80,$30<br />
dc.b $DC,$12,$80,$03,$DC,$1B<br />
MusGOver_PSG: dc.b $F2<br />
MusGOver_DAC: dc.b $80,$18,$81<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(MusGOver_DAC)<br />
dc.b $F2<br />
MusGO_Voices: dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $3C,$33,$73,$30,$70,$94,$96,$9F,$9F,$12,$14,$00<br />
dc.b $0F,$04,$04,$0A,$0D,$2F,$4F,$0F,$2F,$33,$1A,$80,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$1C,$27,$28,$80<br />
dc.b $1F,$66,$53,$31,$22,$1C,$1F,$98,$1F,$12,$0F,$0F<br />
dc.b $0F,$00,$00,$00,$00,$FF,$0F,$0F,$0F,$8C,$8A,$8D,$8B<br />
<br />
;Mus_Emerald: BINCLUDE "sound/music/Got an emerald.bin"<br />
Mus_Emerald: dc.w z80_ptr(MusEmrldVoices),$0703,$01D5<br />
dc.w z80_ptr(MusEmeraldDAC),$0000<br />
dc.w z80_ptr(MusEmeraldFM1),$F408<br />
dc.w z80_ptr(MusEmeraldFM2),$F408<br />
dc.w z80_ptr(MusEmeraldFM3),$F407<br />
dc.w z80_ptr(MusEmeraldFM4),$F416<br />
dc.w z80_ptr(MusEmeraldFM5),$F416<br />
dc.w z80_ptr(MusEmeraldFM6),$F416<br />
dc.w z80_ptr(MusEmeraldPSG1),$F402,$0004<br />
dc.w z80_ptr(MusEmeraldPSG2),$F402,$0005<br />
dc.w z80_ptr(MusEmeraldPSG3),$F400,$0004<br />
MusEmeraldFM3: dc.b $E1,$02<br />
MusEmeraldFM1: dc.b $EF,$00,$C1,$06,$C4,$C9,$CD,$0C,$C9,$D0,$2A,$F2<br />
MusEmeraldFM2: dc.b $EF,$00,$BD,$06,$C1,$C4,$C9,$0C,$C6,$CB,$2A,$F2<br />
MusEmeraldFM4: dc.b $EF,$01,$C1,$0C,$C1,$06,$C4,$06,$80,$C4,$80,$C9<br />
dc.b $2A,$F2<br />
MusEmeraldFM5: dc.b $EF,$01,$C9,$0C,$C9,$06,$CD,$06,$80,$CD,$80,$D0<br />
dc.b $2A,$F2<br />
MusEmeraldFM6: dc.b $EF,$01,$C4,$0C,$C4,$06,$C9,$06,$80,$C9,$80,$CD<br />
dc.b $2A,$F2<br />
MusEmeraldPSG2: dc.b $80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusEmeraldPSG1: dc.b $E2,$01,$80,$02,$80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
MusEmeraldPSG3:<br />
MusEmeraldDAC: dc.b $E2,$01,$F2<br />
MusEmrldVoices: dc.b $04,$35,$54,$72,$46,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$1D,$14,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$07,$07,$1A,$16,$80,$80<br />
<br />
;Mus_Credits: BINCLUDE "sound/music/Credits.bin"<br />
Mus_Credits: dc.w z80_ptr(MusCred_Voices),$0603,$01F0<br />
dc.w z80_ptr(MusCred_DAC),$0000<br />
dc.w z80_ptr(MusCred_FM1),$000E<br />
dc.w z80_ptr(MusCred_FM2),$180A<br />
dc.w z80_ptr(MusCred_FM3),$0014<br />
dc.w z80_ptr(MusCred_FM4),$0016<br />
dc.w z80_ptr(MusCred_FM5),$0C16<br />
dc.w z80_ptr(MusCred_PSG1),$E806,$000B<br />
dc.w z80_ptr(MusCred_PSG2),$DC07,$000B<br />
dc.w z80_ptr(MusCred_PSG3),$0002,$0003<br />
MusCred_FM1: dc.b $E9,$F4,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$0C,$E6,$02<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$03,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $AE,$06,$A2,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $E6,$FD<br />
- dc.b $EF,$00,$B7,$06,$BA,$F8<br />
dc.w z80_ptr(MusCreditsDA13)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$06,$80,$80,$30,$80,$EF,$0B,$E9,$18,$E6,$02<br />
- dc.b $94,$0C,$8F,$92,$8F,$06,$94,$05,$94,$07,$06,$8F<br />
dc.b $0C,$92,$8F<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$30,$80,$EF,$0E,$E6,$FF,$E9,$E8,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$91,$94,$06,$80,$18,$96,$12,$9A,$06,$80<br />
dc.b $80,$12,$8F,$93,$08,$80,$16,$96,$06,$91,$92,$94<br />
dc.b $96,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$9D,$9A,$08,$80,$16,$96,$12,$9D,$08,$80<br />
dc.b $04,$EF,$12<br />
dc.b $F0,$18,$01,$0A,$04<br />
dc.b $80,$30,$80,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$24,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$EF,$01,$E9,$F4,$E6,$FA,$F4<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $80,$03,$80,$60,$E6,$04,$E1,$01,$EF,$1B,$E6,$06<br />
dc.b $C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80,$EF<br />
dc.b $1C,$E6,$FA,$E8,$00,$BC,$0C,$12,$06,$EF,$1B,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$80,$E8,$06,$C4,$06,$06,$C6,$C4,$E8<br />
dc.b $00,$C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80<br />
dc.b $E8,$00,$EF,$1C,$E6,$FA,$C1,$C4,$C1,$EF,$1A,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$06,$80,$80,$24,$80,$30,$80,$EF,$1F<br />
dc.b $E9,$18,$E6,$F7,$E1,$00,$80,$06,$AC,$AE,$80,$B1<br />
dc.b $80,$B3,$80,$B4,$80,$B3,$80,$B1,$B3,$80,$B1,$E9<br />
dc.b $F4,$EF,$00,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC<br />
dc.b $06,$AE,$B1,$80,$B4,$B1,$80,$B1,$E9,$0C,$EF,$1F<br />
dc.b $80,$06,$B8,$12,$B4,$06,$80,$B3,$80,$B4,$80,$B3<br />
dc.b $80,$B1,$AE,$80,$B1,$E9,$F4,$EF,$00,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$30,$80,$EF,$21,$E9,$0C,$80,$30,$80<br />
dc.b $08,$A0,$04,$9E,$0C,$9D,$9B,$99,$08,$04,$91,$0C<br />
dc.b $92,$93,$94,$98,$99,$9B,$9D,$98,$95,$93,$91,$98<br />
dc.b $9D,$91,$96,$98,$99,$98,$96,$99,$9D,$96,$95,$97<br />
dc.b $99,$97,$95,$96,$97,$98,$99,$98,$99,$9B,$9D,$08<br />
dc.b $04,$98,$0C,$91,$95,$96,$98,$99,$9D,$9E,$08,$96<br />
dc.b $10,$97,$0C,$98,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$08,$99,$04,$EF,$23,$E9,$E8,$E6,$07,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $80,$60,$E6,$FB,$80,$0C,$CD,$06,$80,$D4,$CD,$06<br />
dc.b $80,$0C,$CD,$06,$80,$D4,$CD,$06,$80,$18,$E6,$05<br />
dc.b $80,$0C,$AE,$80,$AE,$80,$24,$E1,$02,$E6,$08,$A2<br />
dc.b $6C,$F2<br />
MusCreditsD9D1: dc.b $A5,$0C,$B1,$06,$80,$B1,$0C,$AC,$B3,$12,$B1,$0C<br />
dc.b $AC,$06,$AE,$B1,$A7,$0C,$B3,$06,$80,$B3,$0C,$AE<br />
dc.b $B5,$12,$B3,$06,$80,$AE,$B0,$B3,$A3,$0C,$AF,$06<br />
dc.b $80,$AF,$0C,$AA,$B1,$12,$AF,$0C,$AA,$06,$AC,$AF<br />
dc.b $A2,$0C,$AE,$06,$A2,$A4,$0C,$B0,$06,$A4,$A5,$0C<br />
dc.b $B1,$06,$A5,$A2,$0C,$E3<br />
MusCreditsDA13: dc.b $BE,$0C,$BC,$06,$BA,$BC,$BA,$04,$E7,$08,$BA,$04<br />
dc.b $80,$0E,$EF,$07,$B7,$06,$B2,$B5,$B7,$EF,$00,$B7<br />
dc.b $BA,$BE,$0C,$BC,$06,$BA,$BC,$BA,$0C,$BC,$04,$80<br />
dc.b $08,$BA,$04,$80,$08,$BC,$04,$80,$08,$BE,$12,$BA<br />
dc.b $06,$B7,$80,$B7,$80,$24,$EF,$07,$B7,$06,$B2,$B5<br />
dc.b $B7,$80,$0C,$80,$30,$BE,$06,$BE,$BA,$04,$80,$08<br />
dc.b $BC,$06,$BE,$E3<br />
MusCreditsDA5F: dc.b $C3,$01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$02,$C3<br />
dc.b $01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01<br />
dc.b $E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$FC,$C3,$01,$E7<br />
dc.b $C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01,$E7,$C4<br />
dc.b $E7,$C5,$E7,$C6,$2D,$E7,$30,$E7,$30,$E3<br />
MusCreditsDA99: dc.b $A7,$0C,$B3,$06,$80,$B1,$80,$B3,$0C,$A7,$03,$80<br />
dc.b $06,$A7,$03,$B3,$0C,$B1,$B3,$09,$AE,$03,$AC,$06<br />
dc.b $80,$AC,$0C,$AE,$06,$80,$AE,$0C,$AF,$06,$80,$27<br />
dc.b $E3<br />
MusCreditsDABE: dc.b $80,$0C,$CA,$15,$80,$03,$CA,$06,$80,$CB,$0F,$80<br />
dc.b $03,$C8,$18,$80,$06,$CA,$80,$CA,$80,$CA,$80,$C6<br />
dc.b $80,$C4,$0F,$80,$03,$C8,$18,$80,$06<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E3<br />
MusCreditsDAE5: dc.b $80,$12,$94,$97,$06,$80,$18,$99,$12,$94,$06,$80<br />
dc.b $80,$12,$92,$96,$06,$80,$18,$97,$12,$92,$06,$80<br />
dc.b $E3<br />
MusCreditsDAFE: dc.b $80,$99,$80,$99,$80,$9E,$80,$E3<br />
MusCreditsDB06: dc.b $EF,$07,$80,$54,$C7,$04,$C8,$C9,$CA,$24,$CD,$D2<br />
dc.b $18,$D0,$24,$CF,$CB,$18,$CB,$0C,$CA,$80,$CD,$60<br />
dc.b $E7,$3C,$CA,$24,$CD,$D2,$18,$D4,$24,$D0,$D4,$18<br />
dc.b $D4,$24,$D6,$60,$E7,$3C,$E3<br />
MusCred_FM2: dc.b $80,$60,$EF,$01,$E8,$06,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $85,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8A,$87,$88,$89,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $88<br />
dc.b $F7,$00,$0B<br />
dc.w z80_ptr(-)<br />
- dc.b $8A<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$E6,$FC,$8A,$8B,$8C,$E6,$04,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$8D,$8A,$8B,$8C,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8D,$06,$99,$E8,$00,$8A,$0C,$8B,$8C,$E9,$E8,$E6<br />
dc.b $0C,$EF,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E6,$F9,$EF,$08<br />
MusCreditsDB93: dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $06,$9C,$12,$9D,$0C,$9E,$F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9D,$04,$80,$08,$9D,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $9C,$04,$80,$08,$9C,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(MusCreditsDB93)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$13,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$60,$EF,$0F,$E6,$F3<br />
dc.b $F0,$04,$02,$03,$02<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$30,$E7,$18,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$EF,$13,$E6,$F5,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$0C,$A9,$08,$A1,$10,$F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$08,$A9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E1,$02,$E9,$F4,$E6,$0A,$F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$EF,$1B,$E1,$00<br />
dc.b $E8,$06,$80,$3C,$B8,$06,$06,$BA,$BD,$BD,$BA,$EF<br />
dc.b $1D,$E6,$FA,$E8,$00,$F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $EF,$1C,$BD,$EF,$1D,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $80,$30,$80,$EF,$01,$E9,$18,$E6,$F9<br />
- dc.b $99,$0C,$A5,$06,$80,$96,$0C,$A2,$06,$80,$97,$0C<br />
dc.b $A3,$06,$80,$98,$0C,$A8,$06,$A7,$99,$06,$99,$12<br />
dc.b $96,$0C,$A2,$06,$80,$97,$0C,$A3,$06,$80,$98,$0C<br />
dc.b $A4,$06,$80<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$22,$E9,$E8,$E6,$03<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$AC,$04,$AE,$08,$B1,$04,$B5,$30,$80,$0C<br />
dc.b $B5,$08,$80,$04,$B6,$08,$B5,$10,$B9,$08,$04,$80<br />
dc.b $08,$B5,$34,$80,$0C,$B5,$BA,$08,$04,$80,$08,$B5<br />
dc.b $04,$B1,$24,$80,$0C,$B1,$08,$80,$04,$B3,$08,$B1<br />
dc.b $04,$B4,$0C,$B3,$08,$B1,$4C,$80,$0C,$B5,$08,$80<br />
dc.b $04,$B6,$08,$80,$04,$B5,$08,$80,$04,$B9,$08,$04<br />
dc.b $80,$08,$B5,$1C,$80,$0C,$BA,$18,$BC,$08,$BA,$04<br />
dc.b $BD,$18,$80,$0C,$BA,$04,$80,$08,$B8,$18,$B5,$B1<br />
dc.b $B3,$0C,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$0C,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$14,$B1,$04,$E6,$FF,$EF,$24,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $AC,$12,$AB,$0C,$AC,$06,$AB,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $B3,$12,$B2,$0C,$B3,$06,$B2,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $AC,$06,$80,$A9,$80,$AA,$80,$AB,$80,$AC,$AC,$A9<br />
dc.b $80,$AA,$80,$AC,$80,$A9,$80,$A9,$80,$AD,$80,$AD<br />
dc.b $80,$B0,$80,$B0,$80,$B3,$80,$B3,$80,$80,$0C,$A2<br />
dc.b $12,$80,$06,$A2,$12,$AD,$AE,$06,$80,$E6,$FD,$A2<br />
dc.b $6C,$F2<br />
MusCreditsDD59: dc.b $80,$0C,$C4,$06,$80,$C6,$80,$C4,$80,$C9,$80,$C9<br />
dc.b $80,$CB,$CD,$80,$0C,$80,$CB,$18,$C6,$06,$80,$C9<br />
dc.b $C9,$80,$CB,$0C,$80,$12,$80,$1E,$C7,$06,$C9,$C7<br />
dc.b $CB,$80,$C9,$80,$C7,$C9,$80,$C6,$E7,$C6,$30,$E7<br />
dc.b $18,$80,$18,$E3<br />
MusCreditsDD8D: dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
dc.b $06,$AB,$9F,$0C,$E3<br />
MusCreditsDD9D: dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$B6,$80,$18<br />
dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$30,$E7,$E3<br />
MusCreditsDDB5: dc.b $BF,$06,$BD,$BF,$12,$C2,$BF,$0C,$C1,$80,$06,$12<br />
dc.b $C4,$0C,$C2,$06,$80,$C9,$C6,$3C,$80,$06,$0C,$C7<br />
dc.b $12,$C6,$C4,$06,$C2,$C1,$18,$E3<br />
MusCreditsDDD5: dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$E3<br />
MusCreditsDDEA: dc.b $A2,$0C,$AE,$AC,$08,$AE,$04,$AC,$08,$A9,$04,$A7<br />
dc.b $08,$04,$E3<br />
MusCreditsDDF9: dc.b $80,$0C,$B1,$AE,$06,$06,$AC,$0C,$80,$B0,$AE,$06<br />
dc.b $06,$AC,$0C,$E3<br />
MusCreditsDE09: dc.b $AE,$AC,$06,$06,$AA,$0C,$80,$AC,$0C,$06,$06,$AE<br />
dc.b $AC,$E3<br />
MusCreditsDE17: dc.b $BA,$04,$80,$08,$B8,$18,$B5,$B1,$E3<br />
MusCreditsDE20: dc.b $AE,$06,$80,$AE,$80,$A9,$80,$A9,$80,$E3<br />
MusCreditsDE2A: dc.b $8A,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $E3<br />
MusCred_FM3: dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$18,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $B8,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $BD,$3C,$E9,$E8,$E6,$02,$E1,$03,$EF,$04,$E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$09,$E9,$0C,$E6,$FD,$E0,$40<br />
dc.b $F0,$06,$01,$05,$04<br />
dc.b $E1,$00<br />
- dc.b $9F,$0C,$AB,$06,$80,$A9,$80,$AB,$9F,$80,$9F,$AB<br />
dc.b $80,$A9,$80,$AB,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $9D,$0C,$A9,$06,$80,$A8,$80,$A9,$9C,$80,$9C,$A8<br />
dc.b $80,$A6,$80,$A8,$0C<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0D,$E6,$FB,$E0,$C0,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0F,$E0,$80,$E6,$0B,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$48,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$0C<br />
dc.b $F0,$18,$01,$03,$04<br />
dc.b $E6,$F3,$E0,$C0,$EF,$14,$A2,$14,$A4,$04,$A5,$04<br />
dc.b $80,$08,$A9,$04,$80,$08,$A8,$04,$80,$08,$A9,$04<br />
dc.b $80,$08,$AC,$08,$A9,$10<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$18,$E9,$F4,$E6,$08,$F4,$E0,$40,$80,$60,$80<br />
dc.b $30,$C6,$06,$80,$C2,$0C,$C4,$09,$C2,$03,$BF,$0C<br />
dc.b $80,$60,$80,$3C,$80,$60,$EF,$1B,$E6,$FB,$E0,$C0<br />
dc.b $E8,$06,$C4,$06,$06,$C6,$C9,$C9,$C6,$E8,$00,$CD<br />
dc.b $0C,$E8,$06,$C9,$06,$C6,$C9,$0C,$80,$80,$12,$EF<br />
dc.b $1C,$E8,$00,$BD,$BA,$0C,$E8,$06,$EF,$1B,$CE,$06<br />
dc.b $CE,$80,$CE,$80,$CE,$E8,$00,$CF,$0C,$D0,$80,$E8<br />
dc.b $06,$D0,$06,$06,$D2,$D0,$E8,$00,$CD,$0C,$E8,$06<br />
dc.b $C9,$06,$C6,$C9,$0C,$E8,$00,$EF,$1C,$80,$1E,$C2<br />
dc.b $0C,$C2,$BD,$06,$80,$60,$80,$60,$EF,$00,$E9,$18<br />
dc.b $80,$60,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC,$06<br />
dc.b $AE,$B1,$80,$B4,$B1,$80,$B1,$80,$60,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$60,$EF,$22,$E9,$DC,$E6,$FF,$E0,$80<br />
dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $CD,$30,$CB,$18,$CD,$0C,$CB,$C9,$30,$CE,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$FC,$80,$C4,$80,$C4,$80,$C6,$18,$08,$C4,$04<br />
dc.b $E9,$0C,$E6,$FF,$E0,$C0,$EF,$00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $CB,$12,$CB,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $D0,$12,$D0,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$CB,$12,$80,$06,$CB,$80,$CA,$12,$CB,$CA<br />
dc.b $0C,$C5,$18,$C8,$CB,$D1,$80,$0C,$CD,$80,$CD,$12<br />
dc.b $CC,$CD,$06,$80,$E6,$F8,$EF,$01,$E1,$03,$A2,$6C<br />
dc.b $F2<br />
MusCreditsDFF2: dc.b $80,$60,$BC,$06,$BD,$BC,$B8,$BA,$B6,$0C,$B8,$B3<br />
dc.b $B3,$06,$B6,$0C,$B8,$E3<br />
MusCreditsE004: dc.b $80,$0C,$CD,$04,$80,$10,$CD,$04,$80,$0C,$CD,$0C<br />
dc.b $CE,$08,$CD,$04,$80,$18,$80,$0C,$CB,$04,$80,$10<br />
dc.b $CB,$04,$80,$0C,$CB,$0C,$CD,$08,$CB,$04,$80,$18<br />
- dc.b $80,$0C,$C9,$04,$80,$10,$C9,$04,$80,$0C,$C9,$0C<br />
dc.b $CB,$08,$C9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E3<br />
MusCreditsE040: dc.b $80,$18,$B8,$0B,$80,$0D,$BA,$0C,$0B,$80,$19,$BD<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE051: dc.b $80,$0C,$C4,$80,$C4,$80,$C6,$80,$C6,$E3<br />
MusCreditsE05B: dc.b $CD,$06,$80,$CD,$80,$CA,$80,$CA,$80,$E3<br />
MusCreditsE065: dc.b $EF,$05,$E9,$F4,$C6,$60,$CB,$CD,$E7,$CD,$C6,$60<br />
dc.b $D0,$D0,$24,$D2,$60,$E7,$3C,$E3<br />
MusCred_FM4: dc.b $80,$60,$E9,$FB,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$1D,$E6,$02,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B5,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B8,$3C,$E6,$06,$EF,$05<br />
dc.b $F0,$02,$01,$FE,$04<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E9,$F4,$E6,$F7<br />
dc.b $F0,$0C,$01,$FB,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$25,$C3,$06,$C3,$80,$0C,$C3,$06,$C3,$05,$80<br />
dc.b $0D,$C3,$06,$C5,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$05,$F4,$E1,$02,$E0<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$0C,$80,$60,$EF,$10,$E6,$F7,$E1,$00,$E0<br />
dc.b $40,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $B3,$B7,$06,$AE,$0C,$B1,$B3,$B7,$06,$80,$B7,$AE<br />
dc.b $0C,$B1,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $EF,$15,$E6,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
- dc.b $EF,$14,$80,$4E,$E0,$40,$A1,$12,$A2,$06,$E0,$C0<br />
dc.b $EF,$16,$80,$30,$80,$06,$BA,$08,$B9,$04,$B8,$08<br />
dc.b $B7,$04,$B6,$08,$B5,$04<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E9,$F4,$E6,$02,$E0,$C0<br />
dc.b $F0,$01,$01,$03,$03<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$1E,$E0,$40,$E6,$FE,$E9,$F4,$F4,$E8<br />
dc.b $06,$80,$0C,$C1,$06,$12,$18,$C4,$06,$12,$0C,$EF<br />
dc.b $1C,$E0,$C0,$E6,$FA,$E8,$00,$C6,$E8,$06,$E6,$06<br />
dc.b $EF,$1E,$E0,$40,$C2,$06,$12,$18,$C4,$06,$12,$18<br />
dc.b $C1,$06,$12,$18,$C4,$06,$12,$0C,$EF,$1A,$E0,$C0<br />
dc.b $E9,$0C,$C6,$06,$C6,$80,$C6,$80,$C6,$E8,$00,$C7<br />
dc.b $0C,$C8,$06,$EF,$1E,$E0,$40,$E9,$F4,$E8,$06,$80<br />
dc.b $C4,$06,$12,$0C,$80,$60,$EF,$20,$E9,$18,$E6,$FA<br />
dc.b $E0,$C0,$E8,$00,$B4,$03,$E7,$B6,$5D,$B3,$03,$E7<br />
dc.b $B5,$5D,$B1,$03,$E7,$B3,$5D,$B3,$03,$E7,$B5,$5D<br />
dc.b $80,$60,$EF,$22,$E0,$40,$E9,$E8,$E6,$04,$80,$30<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $C9,$30,$C8,$18,$C9,$0C,$C8,$C6,$30,$C9,$80,$0C<br />
dc.b $C1,$80,$C1,$80,$C2,$80,$C2,$E6,$04,$80,$C1,$80<br />
dc.b $C1,$80,$C2,$80,$C2,$E6,$FC,$80,$C1,$80,$C1,$80<br />
dc.b $C2,$18,$08,$C1,$04,$E9,$0C,$E6,$FF,$E0,$C0,$EF<br />
dc.b $00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $C8,$12,$C8,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $CB,$12,$CB,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E1,$03,$E6,$08,$F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $E6,$F0,$EF,$01<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $A2,$6C,$F2<br />
MusCreditsE22D: dc.b $A2,$14,$A4,$04,$A5,$04,$80,$08,$A9,$04,$80,$08<br />
dc.b $A8,$04,$80,$08,$A9,$04,$80,$08,$AC,$08,$A9,$10<br />
dc.b $E3<br />
MusCreditsE246: dc.b $80,$0C<br />
dc.b $C9,$04,$80,$10<br />
dc.b $C9,$04,$80,$0C<br />
dc.b $C9,$0C<br />
dc.b $CB,$08<br />
dc.b $C9,$04,$80,$18,$80,$0C<br />
dc.b $C8,$04,$80,$10<br />
dc.b $C8,$04,$80,$0C<br />
dc.b $C8,$0C<br />
dc.b $C9,$08<br />
dc.b $C8,$04,$80,$18,$80,$0C<br />
<br />
if 1==1<br />
; this part of the original credits music (CNZ PSG) sounds buggy (dissonant)<br />
dc.b $C6,$04,$80,$10<br />
dc.b $C6,$04,$80,$0C<br />
dc.b $C6,$0C<br />
dc.b $C8,$08<br />
dc.b $C6,$04,$80,$18,$80,$0C<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $C7,$08<br />
else<br />
; replace the above block of notes with this to fix it.<br />
; (I'm not sure why, but the notes $C6 and $C7 are broken here,<br />
; so I've replaced them with pitch-shifted $C8s)<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$10 ; $C6<br />
dc.b $C8,$04,$80,$0C ; $C6<br />
dc.b $C8,$0C ; $C6<br />
dc.b $E1,0<br />
dc.b $C8,$08<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$24 ; $C6<br />
dc.b $E1,0<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $E1,-32<br />
dc.b $C8,$08 ; $C7<br />
dc.b $E1,0<br />
endif<br />
<br />
dc.b $C5,$04,$80,$18<br />
dc.b $E3<br />
MusCreditsE28F: dc.b $EF,$25,$80,$0C,$D0,$D4,$D7,$DB,$0C,$80,$06,$DB<br />
dc.b $0C,$DC,$06,$DB,$0C,$DD,$60,$DE,$0C,$80,$DE,$80<br />
dc.b $80,$06,$DD,$12,$DE,$0C,$E3<br />
MusCreditsE2AE: dc.b $80,$18,$B5,$0B,$80,$0D,$B7,$0C,$0B,$80,$19,$BA<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE2BF: dc.b $C3,$05,$80,$13,$C3,$12,$C3,$05,$E3<br />
MusCreditsE2C8: dc.b $CA,$06,$80,$CA,$80,$C6,$80,$C6,$80,$E3<br />
MusCreditsE2D2: dc.b $AF,$0C,$B3,$06,$B6,$0C,$AF,$B1,$06,$80,$B1,$0C<br />
dc.b $B5,$06,$B8,$0C,$B1,$06,$80,$B6,$0C,$BA,$06,$B1<br />
dc.b $0C,$B5,$B6,$BA,$06,$80,$BA,$AF,$0C,$B3,$B5,$B8<br />
dc.b $06,$B2,$0C,$B3,$B5,$B8,$06,$80,$B8,$B2,$0C,$B5<br />
dc.b $E3<br />
MusCred_FM5: dc.b $E9,$E8,$E6,$F8,$E1,$05,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$18,$E6,$08,$E1,$00,$EF,$02<br />
dc.b $F0,$0C,$01,$FC,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B1,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B5,$3C,$E9,$F4,$E6,$07<br />
dc.b $F0,$30,$01,$04,$04<br />
dc.b $EF,$06<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E6,$F6<br />
dc.b $F0,$0C,$01,$05,$04<br />
dc.b $E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$25,$C6,$06,$C6,$80,$0C,$C6,$06,$C6,$05,$80<br />
dc.b $0D,$C6,$06,$C8,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$E6,$05,$F4,$80,$01,$EF,$0C,$E1<br />
dc.b $FE,$E0,$40,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $23,$80,$0C,$80,$60,$EF,$11,$E9,$F4,$E6,$F4,$E1<br />
dc.b $00,$E0,$C0<br />
dc.b $F0,$06,$01,$06,$05<br />
dc.b $80,$60,$80,$30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60<br />
dc.b $80,$06,$CB,$80,$CB,$C9,$80,$C9,$80,$C7,$80,$C7<br />
dc.b $80,$C6,$03,$80,$C6,$80,$09,$80,$06,$80,$60,$80<br />
dc.b $30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60,$EF,$16,$E9<br />
dc.b $0C,$E6,$04,$F4,$E0,$80,$80,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
dc.b $80,$2F,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$30,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$60,$EF,$19,$E9,$F4,$E0,$C0,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$27,$B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$2A,$80,$60,$EF,$1E,$E9,$F4,$E8,$06<br />
- dc.b $80,$0C,$C4,$06,$12,$18,$C8,$06,$12,$0C,$80,$C6<br />
dc.b $06,$12,$18,$C8,$06,$12,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$20,$E8,$00,$E9,$18,$E6,$FA,$B8,$03<br />
dc.b $E7,$BA,$5D,$B6,$03,$E7,$B8,$5D,$B4,$03,$E7,$B6<br />
dc.b $5D,$B6,$03,$E7,$B8,$5D,$80,$60,$EF,$22,$E9,$F4<br />
dc.b $E6,$05<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$A7,$04,$A9,$08,$AC,$04,$B1,$30,$80,$0C<br />
dc.b $B1,$08,$80,$04,$B3,$08,$B1,$10,$B5,$08,$B5,$04<br />
dc.b $80,$08,$B0,$34,$80,$0C,$B0,$B5,$08,$04,$80,$08<br />
dc.b $B1,$04,$AE,$24,$80,$0C,$AE,$08,$80,$04,$B0,$08<br />
dc.b $AE,$04,$B1,$0C,$AF,$08,$AD,$4C,$80,$0C,$B1,$08<br />
dc.b $80,$04,$B3,$08,$80,$04,$B1,$08,$80,$04,$B5,$08<br />
dc.b $B5,$04,$80,$08,$B0,$1C,$80,$0C,$B5,$18,$B8,$08<br />
dc.b $B5,$04,$BA,$18,$80,$0C,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$04,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$F8,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$AA,$14,$A9,$04,$E6,$0C,$EF,$23,$E1,$03<br />
dc.b $E6,$F7,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E6,$09<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $F2<br />
MusCreditsE4CD: dc.b $80,$1E,$EF,$14,$A4,$12,$A5,$06,$EF,$16,$80,$30<br />
dc.b $80,$06,$BD,$08,$BC,$04,$BB,$08,$BA,$04,$B9,$08<br />
dc.b $B8,$04,$E3<br />
MusCreditsE4E8: dc.b $80,$18,$B1,$0B,$80,$0D,$B3,$0C,$0B,$80,$19,$B6<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE4F9: dc.b $C6,$05,$80,$13,$C6,$12,$C6,$05,$E3<br />
MusCreditsE502: dc.b $80,$60,$AC,$06,$80,$AC,$0C,$AE,$06,$80,$AE,$0C<br />
dc.b $AF,$06,$E3<br />
MusCred_PSG1: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG1)<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$F4,$E6,$FE,$F5,$01,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $AE,$B3,$06,$AC,$0C,$AE,$AE,$B3,$06,$80,$B3,$AB<br />
dc.b $0C,$AE,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $F5,$0B,$80,$04,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$20,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$F5,$00,$E8,$06,$E9,$F4,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$80,$C2,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$04,$80,$C2,$80,$0C,$C2,$80,$60,$F5,$08,$E9<br />
dc.b $04,$EC,$02,$E8,$06<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F0,$EC,$FF,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $E9,$18,$EC,$02,$B5,$30,$B3,$18,$B5,$0C,$B3,$B1<br />
dc.b $30,$B6,$EC,$FE,$80,$0C,$B8,$80,$B8,$80,$BA,$80<br />
dc.b $BA,$EC,$03,$C4,$18,$C1,$BD,$BF,$0C,$80,$EC,$FC<br />
dc.b $80,$B8,$80,$B8,$80,$BA,$18,$08,$B8,$04,$E9,$F4<br />
dc.b $EC,$01,$F5,$05<br />
- dc.b $80,$60<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$C8,$12,$80,$06,$C8,$80,$C6,$12,$C8,$C6<br />
dc.b $0C,$C1,$18,$C5,$C8,$CB,$80,$0C,$CA,$80,$CA,$12<br />
dc.b $C9,$CA,$06,$80,$09,$E9,$30,$EC,$FC,$F6<br />
dc.w z80_ptr(MusCreditsE770)<br />
dc.b $F2<br />
MusCreditsE618: dc.b $80,$0C,$BD,$06,$12,$18,$C4,$06,$12,$0C,$80,$C2<br />
dc.b $06,$12,$18,$C4,$06,$12,$0C,$E3<br />
MusCreditsE62C: dc.b $80,$60,$80,$0C,$C2,$80,$C2,$80,$E3<br />
MusCreditsE635: dc.b $AC,$0C,$AF,$06,$B3,$0C,$AC,$AC,$06,$80,$AC,$0C<br />
dc.b $AF,$06,$B5,$0C,$AC,$06,$80,$06,$B1,$0C,$B6,$06<br />
dc.b $AE,$0C,$B1,$B3,$B6,$06,$80,$B6,$AA,$0C,$AF,$AF<br />
dc.b $B5,$06,$AC,$0C,$AF,$B2,$B5,$06,$80,$B5,$AE,$0C<br />
dc.b $B2,$E3<br />
MusCred_PSG2: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG2)<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$0C,$EC,$FD,$F5,$04,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
dc.b $F0,$03,$02,$01,$05<br />
dc.b $F5,$0A,$E9,$E8,$EC,$02,$80,$30,$80,$80,$BD,$06<br />
dc.b $BF,$C6,$C2,$1E,$80,$60,$80,$06,$C6,$80,$C6,$C4<br />
dc.b $80,$C4,$80,$C3,$80,$C3,$80,$BF,$03,$80,$BF,$80<br />
dc.b $09,$80,$06,$80,$30,$80,$80,$BD,$06,$BF,$C6,$C2<br />
dc.b $1E,$80,$60,$F4<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$00,$EC,$FE,$E8,$06,$80,$60,$80,$0C,$BF,$80<br />
dc.b $BF,$80,$BF,$80,$BF,$80,$60,$80,$0C,$BF,$80,$BF<br />
dc.b $80,$BF,$04,$80,$BF,$80,$0C,$BF,$80,$60,$EC,$02<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F4,$EC,$FF,$E9,$E8,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $E9,$18,$EC,$02,$B1,$30,$B0,$18,$B1,$0C,$B0,$AE<br />
dc.b $30,$B1,$EC,$FE,$80,$0C,$B5,$80,$B5,$80,$B6,$80<br />
dc.b $B6,$EC,$03,$80,$B1,$80,$B1,$80,$B1,$80,$B1,$EC<br />
dc.b $FC,$80,$B1,$80,$B1,$80,$B1,$18,$08,$B1,$04,$EC<br />
dc.b $01,$E9,$18,$F5,$05,$E1,$01,$80,$60,$80,$80,$80<br />
dc.b $80,$80,$80,$0C,$CD,$06,$80,$D4,$CD,$80,$0C,$CD<br />
dc.b $06,$80,$D4,$CD,$80,$18,$80,$54,$E9,$24,$EC,$FD<br />
MusCreditsE770: dc.b $F5,$03,$80,$06<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$FF<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$01<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusCred_PSG3: dc.b $F3,$E7,$80,$60,$F5,$02<br />
- dc.b $C6,$0C,$0C,$0C,$06,$06,$0C,$0C,$06,$06,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$1F<br />
dc.w z80_ptr(-)<br />
dc.b $0C,$F5,$03,$C6,$F5,$02<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $06,$06,$06,$06<br />
dc.b $F7,$01,$04<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$04,$EC,$02<br />
- dc.b $E8,$03,$C6,$06,$06,$E8,$00,$0C<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$02,$EC,$FD<br />
- dc.b $80,$0C,$C6,$06,$80,$07,$C6,$06,$80,$11,$C6,$0C<br />
dc.b $80,$06,$C6,$0C,$80,$06,$C6,$80<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$02<br />
- dc.b $C6,$0C,$08,$04<br />
dc.b $F7,$00,$18<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$0C,$0C,$08,$04<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$04,$EC,$02<br />
- dc.b $C6,$06,$06,$0C<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EC,$FF<br />
- dc.b $F5,$01,$C6,$0C,$F5,$02,$EC,$FF,$08,$F5,$01,$EC<br />
dc.b $01,$04<br />
dc.b $F7,$00,$27<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$FF,$F5,$04<br />
- dc.b $E8,$03,$C6,$0C,$E8,$0C,$0C<br />
dc.b $F7,$00,$1E<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$03,$C6,$06,$E8,$0E,$12,$E8,$03,$0C,$E8,$0F<br />
dc.b $0C,$F2<br />
MusCred_DAC: dc.b $82,$06,$82,$82,$82,$82,$0C,$06,$0C,$06,$0C,$0C<br />
dc.b $0C<br />
- dc.b $81,$18,$82<br />
dc.b $F7,$00,$0E<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C<br />
- dc.b $82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EA,$EA,$F8<br />
dc.w z80_ptr(MusCreditsEA6E)<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$82,$06,$82,$82,$82,$81,$0C,$82,$06,$82<br />
dc.b $81,$81,$82,$82,$82,$82<br />
- dc.b $81,$18,$82,$81,$82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$82,$82,$82,$06,$82,$8C,$8C,$8D,$8D<br />
dc.b $8E,$8E,$F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$18,$82,$0C,$81,$18,$82,$0C,$82,$82,$06,$82<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$0C,$82,$82,$82,$8D,$06,$8D,$8E,$8E,$82,$06<br />
dc.b $82,$8D,$0C,$82,$0C,$82,$06,$82,$80,$82,$82,$0C<br />
MusCreditsE8E5: dc.b $82,$0C,$82,$82,$06,$82,$8D,$8D<br />
- dc.b $81,$0C,$8F,$06,$90,$82,$0C,$90,$06,$91,$81,$0C<br />
dc.b $8F,$06,$91,$82,$0C,$8F,$06,$91<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$8F,$06,$91,$82,$0C,$8F,$06,$91,$8C,$06<br />
dc.b $03,$03,$8D,$06,$8D,$8D,$8E,$8E,$8E,$81,$06,$0C<br />
dc.b $82,$06,$80,$0C,$81,$82,$8E,$82,$06,$82,$82,$82<br />
- dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$12,$8C,$06<br />
dc.b $82,$0C,$83,$06,$81,$80<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$06,$82,$06<br />
dc.b $81,$0C,$06,$82,$0C,$08,$04,$EA,$CD,$82,$30,$82<br />
dc.b $0C,$82,$82,$82,$08,$04,$F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$04,$82,$08,$04<br />
dc.b $08,$04,$04,$04,$04,$08,$04,$EA,$C5<br />
- dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82,$0C,$06<br />
dc.b $06,$81,$0C,$82,$06,$82,$82,$82,$8D,$0C,$82,$0C<br />
dc.b $0C,$0C,$06,$06<br />
- dc.b $81,$0C,$81,$82,$80,$81,$81,$82,$83<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$82,$82,$82,$82,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $81,$06,$81,$82,$82,$81,$82,$81,$81,$82,$02,$82<br />
dc.b $04,$81,$0C,$06,$82,$0C,$06,$06,$81,$18,$82,$0C<br />
dc.b $81,$81,$18,$82,$81,$06,$81,$12,$82,$0C,$81,$81<br />
dc.b $18,$82,$81,$18,$82,$0C,$81,$81,$18,$82,$81,$06<br />
dc.b $81,$12,$82,$0C,$0C,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $82,$02,$04,$81,$0C,$06,$0C,$82,$02,$04,$81,$0C<br />
dc.b $06,$0C,$82,$06,$82,$82,$82,$EA,$C0,$81,$0C,$82<br />
dc.b $81,$82,$81,$82,$81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$0F<br />
dc.w z80_ptr(-)<br />
dc.b $81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$13<br />
dc.w z80_ptr(-)<br />
dc.b $82,$08,$0C,$04,$81,$0C,$82,$81,$82,$81,$0C,$82<br />
dc.b $81,$06,$80,$02,$82,$82,$82,$09,$82,$03<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$06,$80,$02,$82,$82,$82,$09,$82<br />
dc.b $03<br />
dc.b $F7,$01,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$82,$81,$06,$82,$12,$82,$0C,$81<br />
dc.b $F2<br />
MusCreditsEA6E: dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$83,$E3<br />
MusCreditsEA84: dc.b $81,$18,$82,$0C,$81,$18,$0C,$82,$81,$81,$18,$82<br />
dc.b $0C,$81,$12,$81,$82,$18,$81,$82,$0C,$81,$18,$0C<br />
dc.b $82,$81,$E3<br />
MusCreditsEA9F: dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$0C,$82,$04,$81<br />
dc.b $0C,$82,$81,$81,$08,$0C,$04,$82,$0C,$81,$08,$0C<br />
dc.b $82,$04,$81,$0C,$82,$82,$08,$04,$E3,$81,$06,$80<br />
dc.b $03,$81,$81,$06,$82,$81,$06,$80,$03,$81,$81,$06<br />
dc.b $82,$03,$82,$81,$06,$80,$03,$81,$81,$06,$82,$E3<br />
MusCred_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$01,$1F,$1F,$FF,$0F,$17,$27,$28,$80<br />
dc.b $08,$09,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$25,$0E,$30,$84<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$0B,$0D,$19,$0B,$80,$80<br />
dc.b $08,$0A,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$24,$13,$2D,$80<br />
dc.b $3D,$01,$51,$21,$01,$12,$14,$14,$0F,$0A,$05,$05<br />
dc.b $05,$00,$00,$00,$00,$2B,$2B,$2B,$1B,$19,$80,$80,$80<br />
dc.b $04,$57,$70,$02,$50,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$06,$00,$0A,$0A,$00,$00,$0F,$0F,$1A,$10,$80,$80<br />
dc.b $35,$01,$13,$01,$00,$1F,$18,$1D,$19,$00,$06,$09<br />
dc.b $0D,$00,$02,$00,$03,$00,$15,$06,$16,$1E,$83,$80,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1A,$16,$88,$88<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$14,$0F,$37,$80<br />
dc.b $3B,$0F,$01,$06,$02,$DF,$1F,$1F,$DF,$0C,$0A,$00<br />
dc.b $03,$0F,$00,$00,$01,$F3,$55,$05,$5C,$22,$22,$20,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1C,$14,$84,$80<br />
dc.b $3A,$69,$50,$70,$60,$1C,$1A,$18,$18,$10,$02,$0C<br />
dc.b $09,$08,$06,$06,$03,$F9,$06,$56,$06,$28,$14,$15,$00<br />
dc.b $3D,$00,$02,$01,$01,$4C,$50,$0F,$12,$0C,$00,$02<br />
dc.b $05,$01,$00,$00,$00,$28,$2A,$29,$19,$1A,$06,$00,$00<br />
dc.b $2C,$71,$31,$71,$31,$1F,$1F,$16,$16,$00,$00,$0F<br />
dc.b $0F,$00,$00,$0F,$0F,$00,$00,$FA,$FA,$15,$14,$00,$00<br />
dc.b $18,$37,$31,$32,$31,$9E,$1C,$DC,$9C,$0D,$04,$06<br />
dc.b $01,$08,$03,$0A,$05,$B6,$36,$B6,$28,$2C,$14,$22,$00<br />
dc.b $3D,$01,$02,$02,$02,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$24,$18,$18,$18,$1C,$82,$82,$82<br />
dc.b $32,$71,$33,$0D,$01,$5F,$5F,$99,$94,$05,$05,$05<br />
dc.b $07,$02,$02,$02,$02,$11,$11,$11,$72,$23,$26,$2D,$80<br />
dc.b $3A,$32,$52,$01,$31,$1F,$1F,$1F,$18,$01,$00,$1F<br />
dc.b $00,$00,$00,$0F,$00,$5A,$03,$0F,$1A,$3B,$4F,$30,$00<br />
dc.b $3C,$42,$32,$41,$41,$12,$12,$12,$12,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$06,$06,$08,$08,$24,$24,$08,$08<br />
dc.b $31,$34,$30,$35,$31,$DF,$9F,$DF,$9F,$0C,$0C,$07<br />
dc.b $09,$07,$07,$07,$08,$2F,$1F,$1F,$2F,$17,$14,$32,$80<br />
dc.b $3D,$01,$01,$01,$01,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$20,$1A,$1A,$1A,$19,$84,$84,$84<br />
dc.b $24,$70,$30,$74,$38,$12,$1F,$1F,$1F,$05,$05,$03<br />
dc.b $03,$05,$05,$03,$03,$36,$26,$2C,$2C,$0A,$06,$08,$08<br />
dc.b $3A,$01,$01,$01,$02,$8D,$07,$07,$52,$09,$00,$00<br />
dc.b $03,$01,$02,$02,$00,$5F,$0F,$0F,$2F,$18,$18,$22,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$03,$03,$08,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$17,$20,$28,$80<br />
dc.b $20,$7A,$00,$31,$00,$9F,$DC,$D8,$DF,$10,$04,$0A<br />
dc.b $04,$0F,$08,$08,$08,$5F,$BF,$5F,$BF,$14,$17,$2B,$80<br />
dc.b $3A,$61,$51,$08,$02,$5D,$5D,$5D,$50,$04,$1F,$0F<br />
dc.b $1F,$00,$00,$00,$00,$1F,$0F,$5F,$0F,$22,$22,$1E,$80<br />
dc.b $02,$01,$02,$55,$04,$92,$8E,$8D,$54,$0D,$00,$0C<br />
dc.b $03,$00,$00,$00,$00,$FF,$0F,$2F,$5F,$16,$1D,$2A,$80<br />
dc.b $02,$75,$73,$71,$31,$1F,$96,$58,$9F,$01,$03,$1B<br />
dc.b $08,$01,$01,$04,$05,$FF,$3F,$2F,$2F,$24,$30,$29,$80<br />
dc.b $20,$66,$60,$65,$60,$DF,$9F,$DF,$1F,$00,$09,$06<br />
dc.b $0C,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$1C,$16,$3A,$80<br />
dc.b $0D,$32,$06,$08,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$86,$80,$8D<br />
dc.b $38,$3A,$11,$0A,$02,$D4,$50,$14,$0E,$05,$02,$08<br />
dc.b $88,$00,$00,$00,$00,$99,$09,$09,$1A,$2D,$19,$2C,$86<br />
dc.b $0D,$32,$02,$04,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$8B,$86,$93<br />
dc.b $3A,$20,$60,$23,$01,$1E,$1F,$1F,$1F,$0A,$0B,$0A<br />
dc.b $0A,$05,$0A,$07,$08,$A4,$96,$85,$78,$21,$28,$25,$00<br />
dc.b $3A,$32,$32,$56,$42,$8D,$15,$4F,$52,$06,$07,$08<br />
dc.b $04,$02,$00,$00,$00,$18,$28,$18,$28,$19,$2A,$20,$00<br />
dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$19,$13,$37,$80<br />
dc.b $3D,$01,$02,$02,$02,$14,$8C,$0E,$0E,$08,$02,$05<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$1A,$80,$80,$80<br />
; end of Mus_Credits<br />
<br />
; ------------------------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ------------------------------------------------------------------------------------------<br />
; WARNING the sound driver treats certain sounds specially<br />
; going by the ID of the sound.<br />
; SndID_Ring, SndID_RingLeft, SndID_Gloop, SndID_SpindashRev<br />
; are referenced by the sound driver directly.<br />
; If needed you can change this in s2.sounddriver.asm<br />
<br />
<br />
; NOTE: the exact order of this list determines the priority of each sound, since it determines the sound's SndID.<br />
; a sound can get dropped if a higher-priority sound is already playing.<br />
; the rules for sound priority are currently unknown, but you can generally swap pointer lines around to resolve priority conflicts.<br />
; loc_FEE91: SoundPoint:<br />
SoundIndex:<br />
SndPtr_Jump: rom_ptr_z80 Sound20 ; jumping sound<br />
SndPtr_Checkpoint: rom_ptr_z80 Sound21 ; checkpoint ding-dong sound<br />
SndPtr_SpikeSwitch: rom_ptr_z80 Sound22 ; spike switch sound<br />
SndPtr_Hurt: rom_ptr_z80 Sound23 ; hurt sound<br />
SndPtr_Skidding: rom_ptr_z80 Sound24 ; skidding sound<br />
SndPtr_BlockPush: rom_ptr_z80 Sound25 ; block push sound<br />
SndPtr_HurtBySpikes: rom_ptr_z80 Sound26 ; spiky impalement sound<br />
SndPtr_Sparkle: rom_ptr_z80 Sound27 ; sparkling sound<br />
SndPtr_Beep: rom_ptr_z80 Sound28 ; short beep<br />
SndPtr_Bwoop: rom_ptr_z80 Sound29 ; bwoop<br />
SndPtr_Splash: rom_ptr_z80 Sound2A ; splash sound<br />
SndPtr_Swish: rom_ptr_z80 Sound2B ; swish<br />
SndPtr_BossHit: rom_ptr_z80 Sound2C ; boss hit<br />
SndPtr_InhalingBubble: rom_ptr_z80 Sound2D ; inhaling a bubble<br />
SndPtr_ArrowFiring:<br />
SndPtr_LavaBall: rom_ptr_z80 Sound2E ; arrow firing<br />
SndPtr_Shield: rom_ptr_z80 Sound2F ; shield sound<br />
SndPtr_LaserBeam: rom_ptr_z80 Sound30 ; laser beam<br />
SndPtr_Zap: rom_ptr_z80 Sound31 ; zap<br />
SndPtr_Drown: rom_ptr_z80 Sound32 ; drownage<br />
SndPtr_FireBurn: rom_ptr_z80 Sound33 ; fire + burn<br />
SndPtr_Bumper: rom_ptr_z80 Sound34 ; bumper bing<br />
SndPtr_Ring:<br />
SndPtr_RingRight: rom_ptr_z80 Sound35 ; ring sound<br />
SndPtr_SpikesMove: rom_ptr_z80 Sound36<br />
SndPtr_Rumbling: rom_ptr_z80 Sound37 ; rumbling<br />
rom_ptr_z80 Sound38<br />
SndPtr_Smash: rom_ptr_z80 Sound39 ; smash/breaking<br />
rom_ptr_z80 Sound3A ; nondescript ding<br />
SndPtr_DoorSlam: rom_ptr_z80 Sound3B ; door slamming shut<br />
SndPtr_SpindashRelease: rom_ptr_z80 Sound3C ; spindash unleashed<br />
SndPtr_Hammer: rom_ptr_z80 Sound3D ; slide-thunk<br />
SndPtr_Roll: rom_ptr_z80 Sound3E ; rolling sound<br />
SndPtr_ContinueJingle: rom_ptr_z80 Sound3F ; got continue<br />
SndPtr_CasinoBonus: rom_ptr_z80 Sound40 ; short bonus ding<br />
SndPtr_Explosion: rom_ptr_z80 Sound41 ; badnik bust<br />
SndPtr_WaterWarning: rom_ptr_z80 Sound42 ; warning ding-ding<br />
SndPtr_EnterGiantRing: rom_ptr_z80 Sound43 ; special stage ring flash (unused)<br />
SndPtr_BossExplosion: rom_ptr_z80 Sound44 ; thunk<br />
SndPtr_TallyEnd: rom_ptr_z80 Sound45 ; cha-ching<br />
SndPtr_RingSpill: rom_ptr_z80 Sound46 ; losing rings<br />
rom_ptr_z80 Sound47 ; chain pull chink-chink<br />
SndPtr_Flamethrower: rom_ptr_z80 Sound48 ; flamethrower<br />
SndPtr_Bonus: rom_ptr_z80 Sound49 ; bonus pwoieeew (unused)<br />
SndPtr_SpecStageEntry: rom_ptr_z80 Sound4A ; special stage entry<br />
SndPtr_SlowSmash: rom_ptr_z80 Sound4B ; slower smash/crumble<br />
SndPtr_Spring: rom_ptr_z80 Sound4C ; spring boing<br />
SndPtr_Blip: rom_ptr_z80 Sound4D ; selection blip<br />
SndPtr_RingLeft: rom_ptr_z80 Sound4E ; another ring sound (only plays in the left speaker?)<br />
SndPtr_Signpost: rom_ptr_z80 Sound4F ; signpost spin sound<br />
SndPtr_CNZBossZap: rom_ptr_z80 Sound50 ; mosquito zapper<br />
rom_ptr_z80 Sound51<br />
rom_ptr_z80 Sound52<br />
SndPtr_Signpost2P: rom_ptr_z80 Sound53<br />
SndPtr_OOZLidPop: rom_ptr_z80 Sound54 ; OOZ lid pop sound<br />
SndPtr_SlidingSpike: rom_ptr_z80 Sound55<br />
SndPtr_CNZElevator: rom_ptr_z80 Sound56<br />
SndPtr_PlatformKnock: rom_ptr_z80 Sound57<br />
SndPtr_BonusBumper: rom_ptr_z80 Sound58 ; CNZ bonusy bumper sound<br />
SndPtr_LargeBumper: rom_ptr_z80 Sound59 ; CNZ baaang bumper sound<br />
SndPtr_Gloop: rom_ptr_z80 Sound5A ; CNZ gloop / water droplet sound<br />
SndPtr_PreArrowFiring: rom_ptr_z80 Sound5B<br />
SndPtr_Fire: rom_ptr_z80 Sound5C<br />
SndPtr_ArrowStick: rom_ptr_z80 Sound5D ; chain clink<br />
SndPtr_Helicopter:<br />
SndPtr_WingFortress: rom_ptr_z80 Sound5E ; helicopter<br />
SndPtr_SuperTransform: rom_ptr_z80 Sound5F<br />
SndPtr_SpindashRev: rom_ptr_z80 Sound60 ; spindash charge<br />
SndPtr_Rumbling2: rom_ptr_z80 Sound61 ; rumbling<br />
SndPtr_CNZLaunch: rom_ptr_z80 Sound62<br />
SndPtr_Flipper: rom_ptr_z80 Sound63 ; CNZ blooing bumper<br />
SndPtr_HTZLiftClick: rom_ptr_z80 Sound64 ; HTZ track click sound<br />
SndPtr_Leaves: rom_ptr_z80 Sound65 ; kicking up leaves sound<br />
SndPtr_MegaMackDrop: rom_ptr_z80 Sound66 ; leaf splash?<br />
SndPtr_DrawbridgeMove: rom_ptr_z80 Sound67<br />
SndPtr_QuickDoorSlam: rom_ptr_z80 Sound68 ; door slamming quickly (seems unused)<br />
SndPtr_DrawbridgeDown: rom_ptr_z80 Sound69<br />
SndPtr_LaserBurst: rom_ptr_z80 Sound6A ; robotic laser burst<br />
SndPtr_Scatter:<br />
SndPtr_LaserFloor: rom_ptr_z80 Sound6B ; scatter<br />
SndPtr_Teleport: rom_ptr_z80 Sound6C<br />
SndPtr_Error: rom_ptr_z80 Sound6D ; error sound<br />
SndPtr_MechaSonicBuzz: rom_ptr_z80 Sound6E ; silver sonic buzz saw<br />
SndPtr_LargeLaser: rom_ptr_z80 Sound6F<br />
SndPtr_OilSlide: rom_ptr_z80 Sound70<br />
SndPtr__End:<br />
<br />
; There are many non-relative pointers in these sound effects,<br />
; so the sounds shouldn't simply be BINCLUDE'd.<br />
; They could be included as separate .asm files using "include" instead of "binclude",<br />
; but I wanted to minimize the number of included asm files.<br />
<br />
; some comments on what the various script commands do (after the header):<br />
; 0x00-0x7F sets the note duration (of the previous note and following notes)<br />
; 0x81-0xDF plays a note (the valid range may be smaller for PSG or DAC)<br />
; 0x80 plays silence<br />
; 0xE0-0xFF does special things. I won't list them here... search for "Coordination flags" sonic 2.<br />
<br />
; the FM voices (poorly named "ssamp" or "samples" below)<br />
; are 25 bytes each and go directly to YM2612 registers.<br />
; they can be hard to edit (there's an art to it)<br />
; but search for sonic "Voice editing" for more info if you want to try.<br />
<br />
; jumping sound<br />
Sound20: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$F400<br />
+ dc.b $F5,$00,$9E,$05,$F0,$02,$01,$F8,$65,$A3,$15,$F2<br />
<br />
; checkpoint ding-dong sound<br />
Sound21: dc.w z80_ptr(ssamp21),$0101<br />
dc.w $8005,z80_ptr(+),$0001<br />
ssamp21: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
+ dc.b $EF,$00,$BD,$06,$BA,$16,$F2<br />
<br />
; spike switch sound<br />
Sound22: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C0,$04,$CA,$04<br />
- dc.b $C0,$01,$EC<br />
dc.w $01F7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; hurt sound<br />
Sound23: dc.w z80_ptr(ssamp23),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B0,$07,$E7,$AD<br />
- dc.b $01,$E6<br />
dc.w $01F7,$002F,z80_ptr(-)<br />
dc.b $F2<br />
ssamp23: dc.b $30,$30,$30,$30,$30,$9E,$DC,$D8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$14,$14,$3C,$80<br />
<br />
; skidding sound<br />
Sound24: dc.w $0000,$0102 ; sound header... no sample and 2 script entries<br />
dc.w $80A0,z80_ptr(+),$F400 ; entry 1 header<br />
dc.w $80C0,z80_ptr(++),$F400 ; entry 2 header<br />
+ dc.b $F5,$00,$AF,$01,$80,$AF,$80,$03 ; script entry 1<br />
- dc.b $AF,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 1 end<br />
+ dc.b $F5,$00,$80,$01,$AD,$80,$AD,$80,$03 ; script entry 2<br />
- dc.b $AD,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 2 end<br />
<br />
; block push sound<br />
Sound25: dc.w z80_ptr(ssamp25),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$01,$8B,$0A,$80,$02,$F2<br />
ssamp25: dc.b $FA,$21,$10,$30,$32,$2F,$2F,$1F,$2F,$05,$09,$08<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
; spiky impalement sound<br />
Sound26: dc.w z80_ptr(ssamp26),$0101<br />
dc.w $8005,z80_ptr(+),$F200<br />
+ dc.b $EF,$00,$F0,$01,$01,$10,$FF,$CF,$05,$D7,$25,$F2<br />
ssamp26: dc.b $3B,$3C,$30,$39,$31,$DF,$1F,$1F,$DF,$04,$04,$05<br />
dc.b $01,$04,$04,$04,$02,$FF,$1F,$0F,$AF,$29,$0F,$20,$80<br />
<br />
; sparkling sound<br />
Sound27: dc.w z80_ptr(ssamp27),$0101<br />
dc.w $8004,z80_ptr(+),$0C1C<br />
+ dc.b $EF,$00,$C1,$05,$C4,$05,$C9,$2B,$F2<br />
ssamp27: dc.b $07,$73,$33,$33,$73,$0F,$19,$14,$1A,$0A,$0A,$0A<br />
dc.b $0A,$0A,$0A,$0A,$0A,$57,$57,$57,$57,$00,$00,$00,$00<br />
<br />
; short beep<br />
Sound28: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$E803<br />
+ dc.b $F5,$04,$CB,$04,$F2<br />
<br />
; bwoop<br />
Sound29: dc.w $0000,$0101<br />
dc.w $80A0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$E6,$35,$8E,$06,$F2<br />
<br />
; splash sound<br />
Sound2A: dc.w z80_ptr(ssamp2A),$0102<br />
dc.w $80C0,z80_ptr(+),$0000<br />
dc.w $8005,z80_ptr(++),$0003<br />
+ dc.b $F5,$00,$F3,$E7,$C2,$05,$C6,$05,$E7<br />
- dc.b $07,$EC,$01<br />
dc.w $E7F7,$000F,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$A6,$14,$F2<br />
ssamp2A: dc.b $00,$00,$02,$03,$00,$D9,$1F,$DF,$1F,$12,$14,$11<br />
dc.b $0F,$0A,$0A,$00,$0D,$FF,$FF,$FF,$FF,$22,$27,$07,$80<br />
<br />
; swish<br />
Sound2B: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$C6,$03,$80,$03,$C6,$01,$E7<br />
- dc.b $01,$EC,$01<br />
dc.w $E7F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; boss hit<br />
Sound2C: dc.w z80_ptr(smashsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$0C,$01<br />
- dc.b $81,$0A,$E6<br />
dc.w $10F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
smashsamp: dc.b $F9,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
<br />
; inhaling a bubble<br />
Sound2D: dc.w z80_ptr(ssamp2D),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$21,$6E,$A6,$07<br />
dc.b $80,$06,$F0,$01,$01,$44,$1E,$AD,$08,$F2<br />
ssamp2D: dc.b $35,$05,$08,$09,$07,$1E,$0D,$0D,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$1F,$2F,$1F,$15,$12,$12,$80<br />
<br />
; arrow firing<br />
Sound2E: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$C6,$01,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp2E: dc.b $FA,$02,$00,$03,$05,$12,$0F,$11,$13,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$2F,$0E,$1A,$80<br />
<br />
; shield sound<br />
Sound2F: dc.w z80_ptr(ssamp2F),$0101<br />
dc.w $8005,z80_ptr(+),$0C00<br />
+ dc.b $EF,$00,$80,$01,$A3,$05,$E7,$A4,$26,$F2<br />
ssamp2F: dc.b $30,$30,$30,$30,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$04,$14,$2C,$80<br />
<br />
; laser beam<br />
Sound30: dc.w z80_ptr(ssamp30),$0101 ; sound header... a voice and 1 script entry<br />
dc.w $8005,z80_ptr(+),$FB05 ; script entry header<br />
+ dc.b $EF,$00,$DF,$7F ; script start<br />
- dc.b $DF,$02,$E6 ; script continued<br />
dc.w $01F7,$001B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script end<br />
ssamp30: dc.b $83,$1F,$1F,$15,$1F,$1F,$1F,$1F,$1F,$00,$00,$00 ; voice<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$0B,$01,$16,$82 ; (fixed length)<br />
<br />
; zap<br />
Sound31: dc.w z80_ptr(ssamp31),$0101<br />
dc.w $8005,z80_ptr(+),$FB02<br />
+ dc.b $EF,$00,$B3,$05,$80,$01,$B3,$09,$F2<br />
ssamp31: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$05,$34,$10,$87<br />
<br />
; drownage<br />
Sound32: dc.w z80_ptr(ssamp32),$0102<br />
dc.w $8004,z80_ptr(++),$0C04<br />
dc.w $8005,z80_ptr(+),$0E02<br />
+ dc.b $EF,$00,$F0,$01,$01,$83,$0C<br />
- dc.b $8A,$05,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $80,$06,$EF,$00,$F0,$01,$01,$6F,$0E<br />
- dc.b $8D,$04,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp32: dc.b $35,$14,$04,$1A,$09,$0E,$11,$10,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$4F,$2F,$4F,$2F,$12,$12,$80<br />
<br />
; fire + burn<br />
Sound33: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$A7,$25,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; bumper bing<br />
Sound34: dc.w z80_ptr(ssamp34),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $8002,z80_ptr(+++),$0002<br />
+ dc.b $EF,$00,$F6<br />
dc.w z80_ptr(Sound34_3)<br />
+ dc.b $EF,$00,$E1,$07,$80,$01<br />
Sound34_3:<br />
dc.b $BA,$20,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
ssamp34: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$1F,$2B,$80,$80<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; ring sound<br />
Sound35: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$40,$C1,$05,$C4,$05,$C9,$1B,$F2<br />
<br />
<br />
Sound36: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C1,$07<br />
- dc.b $D0,$01,$EC<br />
dc.w $01F7,$000C,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; rumbling<br />
Sound37: dc.w z80_ptr(ssamp37),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$20,$08<br />
- dc.b $8B<br />
dc.w $0AF7,$0008,z80_ptr(-)<br />
- dc.b $8B,$10,$E6<br />
dc.w $03F7,$0009,z80_ptr(-)<br />
dc.b $F2<br />
ssamp37: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
<br />
Sound38: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$B4,$08<br />
- dc.b $B0,$02,$EC<br />
dc.w $01F7,$0003,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; smash/breaking<br />
Sound39: dc.w z80_ptr(smashsamp),$0104<br />
dc.w $8002,z80_ptr(+),$1000<br />
dc.w $8004,z80_ptr(+++),$0000<br />
dc.w $8005,z80_ptr(++),$1000<br />
dc.w $80C0,z80_ptr(s39s4),$0000<br />
+ dc.b $E0,$40,$80,$02,$F6<br />
dc.w z80_ptr(++)<br />
+ dc.b $E0,$80,$80,$01<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
s39s4: dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; nondescript ding<br />
Sound3A: dc.w z80_ptr(ssamp3A),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$AE,$08,$F2<br />
ssamp3A: dc.b $1C,$2E,$0F,$02,$02,$1F,$1F,$1F,$1F,$18,$14,$0F<br />
dc.b $0E,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$20,$1B,$80,$80<br />
<br />
; door slamming shut<br />
Sound3B: dc.w z80_ptr(ssamp3B),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$80,$A0,$06,$F2<br />
ssamp3B: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; spindash unleashed<br />
Sound3C: dc.w z80_ptr(ssamp3C),$0102<br />
dc.w $8005,z80_ptr(+),$9000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$F2<br />
+ dc.b $F5,$07,$80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$4F,$F2<br />
ssamp3C: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
<br />
; slide-thunk<br />
Sound3D: dc.w z80_ptr(ssamp3D),$0102<br />
dc.w $8005,z80_ptr(+),$100A<br />
dc.w $8004,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$60,$01,$A7,$08,$F2<br />
+ dc.b $80,$08,$EF,$01,$84,$22,$F2<br />
ssamp3D: dc.b $FA,$21,$19,$3A,$30,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
dc.b $FA,$31,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$1F,$2F,$2F,$0D,$01,$00,$80<br />
<br />
; rolling sound<br />
Sound3E: dc.w z80_ptr(ssamp3E),$0101<br />
dc.w $8004,z80_ptr(+),$0C05<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$09,$FF,$CA,$25,$F4<br />
- dc.b $E7,$E6,$01,$D0<br />
dc.w $02F7,$002A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3E: dc.b $3C,$00,$02,$44,$02,$1F,$1F,$1F,$15,$00,$00,$1F<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0D,$28,$00,$00<br />
<br />
; got continue<br />
Sound3F: dc.w z80_ptr(ssamp3F),$0103<br />
dc.w $8002,z80_ptr(+),$F406<br />
dc.w $8004,z80_ptr(++),$F406<br />
dc.w $8005,z80_ptr(+++),$F406<br />
+ dc.b $EF,$00,$C9,$07,$CD,$D0,$CB,$CE,$D2,$CD,$D0,$D4,$CE,$D2,$D5<br />
- dc.b $D0,$07,$D4,$D7,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$80,$07,$CD,$15,$CE,$D0,$D2<br />
- dc.b $D4,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$C9,$15,$CB,$CD,$CE<br />
- dc.b $D0,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3F: dc.b $14,$25,$36,$33,$11,$1F,$1F,$1F,$1F,$15,$1C,$18<br />
dc.b $13,$0B,$0D,$08,$09,$0F,$8F,$9F,$0F,$24,$0A,$05,$80<br />
<br />
; short bonus ding<br />
Sound40: dc.w z80_ptr(ssamp3F),$0102<br />
dc.w $8005,z80_ptr(++),$0008<br />
dc.w $8004,z80_ptr(+),$0008<br />
+ dc.b $E1,$03,$80,$02<br />
+ dc.b $EF,$00,$C4,$16,$F2<br />
<br />
; badnik bust<br />
Sound41: dc.w z80_ptr(ssamp41),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0002<br />
+ dc.b $F0,$03,$01,$72,$0B,$EF,$00,$BA,$16,$F2<br />
+ dc.b $F5,$01,$F3,$E7,$B0,$1B,$F2<br />
ssamp41: dc.b $3C,$0F,$03,$01,$01,$1F,$1F,$1F,$1F,$19,$19,$12<br />
dc.b $0E,$05,$00,$12,$0F,$0F,$FF,$7F,$FF,$00,$00,$80,$80<br />
<br />
; warning ding-ding<br />
Sound42: dc.w z80_ptr(ssamp3F),$0101<br />
dc.w $8005,z80_ptr(+),$0C08<br />
+ dc.b $EF,$00,$BA,$08,$BA,$25,$F2<br />
<br />
; special stage ring flash (unused)<br />
Sound43: dc.w z80_ptr(ssamp43),$0102<br />
dc.w $8004,z80_ptr(+),$0C00<br />
dc.w $8005,z80_ptr(++),$0013<br />
+ dc.b $EF,$01,$80,$01,$A2,$08,$EF,$00,$E7,$AD,$26,$F2<br />
+ dc.b $EF,$02,$F0,$06,$01,$03,$FF,$80,$0A<br />
- dc.b $C3<br />
dc.w $06F7,$0005,z80_ptr(-)<br />
dc.b $C3,$17,$F2<br />
ssamp43: dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$1C,$80<br />
dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$2C,$80<br />
dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$13,$13,$81,$88<br />
<br />
; thunk<br />
Sound44: dc.w z80_ptr(ssamp44),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$8A,$22,$F2<br />
ssamp44: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$4F,$2F,$2F,$0D,$04,$07,$80<br />
<br />
; cha-ching<br />
Sound45: dc.w z80_ptr(ssamp45),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$8A,$08,$80,$02,$8A,$08,$F2<br />
+ dc.b $EF,$01,$80,$12,$C6,$55,$F2<br />
+ dc.b $F5,$02,$F3,$E7,$80,$02,$C2,$05,$C4,$04,$C2,$05,$C4,$04,$F2<br />
ssamp45: dc.b $3B,$03,$02,$02,$06,$18,$1A,$1A,$96,$17,$0A,$0E<br />
dc.b $10,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$39,$28,$80<br />
ringsamp: dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$23,$80,$80<br />
<br />
; losing rings (scatter)<br />
Sound46: dc.w z80_ptr(ringsamp),$0102<br />
dc.w $8004,z80_ptr(+),$0005<br />
dc.w $8005,z80_ptr(++),$0008<br />
+ dc.b $EF,$00,$C6,$02,$05,$05,$05,$05,$05,$05,$3A,$F2<br />
+ dc.b $EF,$00,$80,$02,$C4,$02,$05,$15,$02,$05,$32,$F2<br />
<br />
; chain pull chink-chink<br />
Sound47: dc.w z80_ptr(ssamp47),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$BE,$05,$80,$04,$BE,$04,$80,$04,$F2<br />
ssamp47: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; flamethrower<br />
Sound48: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$25,$F2<br />
<br />
; bonus pwoieeew (unused)<br />
Sound49: dc.w z80_ptr(ssamp49),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$33,$18,$B9,$1A,$F2<br />
ssamp49: dc.b $3B,$0A,$05,$31,$02,$5F,$5F,$5F,$5F,$04,$16,$14<br />
dc.b $0C,$00,$00,$04,$00,$1F,$D8,$6F,$FF,$03,$00,$25,$80<br />
<br />
; special stage entry<br />
Sound4A: dc.w z80_ptr(ssamp4A),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$F0,$01,$01,$5B,$02,$CC,$65,$F2<br />
ssamp4A: dc.b $20,$36,$30,$35,$31,$41,$3B,$49,$4B,$09,$09,$06<br />
dc.b $08,$01,$02,$03,$A9,$0F,$0F,$0F,$0F,$29,$23,$27,$80<br />
<br />
; slower smash/crumble<br />
Sound4B: dc.w z80_ptr(smashsamp),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; spring boing<br />
Sound4C: dc.w z80_ptr(ssamp4C),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$5D,$0F,$B0,$0C,$F4<br />
- dc.b $E7,$E6,$02,$BD<br />
dc.w $02F7,$0019,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4C: dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$16,$13,$30,$80<br />
<br />
; selection blip<br />
Sound4D: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $BB,$02,$F2<br />
<br />
; another ring sound (only plays in the left speaker?)<br />
Sound4E: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8004,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$80,$C1,$04,$C4,$05,$C9,$1B,$F2<br />
<br />
; signpost spin sound<br />
Sound4F: dc.w z80_ptr(ssamp4F),$0102<br />
dc.w $8004,z80_ptr(+),$2703<br />
dc.w $8005,z80_ptr(++),$2700<br />
+ dc.b $80,$04<br />
+ dc.b $EF,$00<br />
- dc.b $B4,$05,$E6<br />
dc.w $02F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4F: dc.b $F4,$06,$0F,$04,$0E,$1F,$1F,$1F,$1F,$00,$0B,$00<br />
dc.b $0B,$00,$05,$00,$08,$0F,$FF,$0F,$FF,$0C,$03,$8B,$80<br />
<br />
; mosquito zapper<br />
Sound50: dc.w z80_ptr(ssamp50),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B3,$04,$80,$01<br />
- dc.b $B4,$04,$80<br />
dc.w $01F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
ssamp50: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$06,$34,$10,$87<br />
<br />
<br />
Sound51: dc.w z80_ptr(ssamp51),$0102<br />
dc.w $80C0,z80_ptr(+),$0001<br />
dc.w $8005,z80_ptr(++),$000B<br />
+ dc.b $F5,$02,$F3,$E4,$B0,$04,$85,$02,$F2<br />
+ dc.b $EF,$00,$E8,$04,$A5,$06,$F2<br />
ssamp51: dc.b $3C,$02,$01,$00,$01,$1F,$1F,$1F,$1F,$00,$19,$0E<br />
dc.b $10,$00,$00,$0C,$0F,$0F,$FF,$EF,$FF,$05,$00,$80,$80<br />
<br />
<br />
Sound52: dc.w z80_ptr(ssamp52),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $F0,$01,$01,$2A,$07,$EF,$00<br />
- dc.b $A5,$03<br />
dc.w $E7F7,$0013,z80_ptr(-)<br />
- dc.b $A5,$03,$E7,$E6<br />
dc.w $02F7,$0013,z80_ptr(-)<br />
dc.b $F2<br />
ssamp52: dc.b $28,$21,$21,$21,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$29,$20,$29,$80<br />
<br />
<br />
Sound53: dc.w z80_ptr(ssamp53),$0101<br />
dc.w $8005,z80_ptr(+),$F503<br />
+ dc.b $EF,$00,$F0,$01,$01,$46,$09,$A7,$14,$E7,$14,$E7,$E6,$04<br />
dc.b $14,$E7,$E6,$04,$14,$E7,$E6,$04,$0A,$E7,$E6,$04,$0A,$F2<br />
ssamp53: dc.b $07,$0A,$0C,$0C,$0C,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$2A,$0F,$0F,$80<br />
<br />
; OOZ lid pop sound<br />
Sound54: dc.w z80_ptr(ssamp54),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0006<br />
+ dc.b $EF,$00,$B6,$15,$F2<br />
+ dc.b $F3,$E7,$F5,$04,$C6,$03,$E7,$C5,$E7<br />
dc.b $C4,$E7,$C3,$E7,$C2,$E7,$C1,$E7,$C0,$F2<br />
ssamp54: dc.b $07,$03,$02,$03,$00,$FF,$6F,$6F,$3F,$12,$14,$11<br />
dc.b $0E,$1A,$0A,$03,$0D,$FF,$FF,$FF,$FF,$03,$07,$07,$80<br />
<br />
<br />
Sound55: dc.w z80_ptr(ssamp55),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$AA,$07,$B6,$15,$F2<br />
ssamp55: dc.b $42,$20,$0E,$0F,$0F,$1F,$1F,$1F,$1F,$1F,$1F,$1F<br />
dc.b $1F,$0F,$0E,$0F,$0E,$0F,$0F,$0F,$0F,$2E,$80,$20,$80<br />
<br />
<br />
Sound56: dc.w z80_ptr(ssamp56),$0101<br />
dc.w $8005,z80_ptr(+),$100E<br />
+ dc.b $EF,$00,$F0,$01,$01,$1E,$FF,$8F,$1C,$F4<br />
- dc.b $E7,$9A<br />
dc.w $05F7,$0009,z80_ptr(-)<br />
- dc.b $E7,$9A,$04,$E6,$02,$E7,$9A,$04,$E6<br />
dc.w $02F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp56: dc.b $0D,$06,$00,$00,$E5,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$27,$80,$80,$80<br />
<br />
<br />
Sound57: dc.w z80_ptr(ssamp57),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$CA,$15,$F2<br />
ssamp57: dc.b $04,$09,$70,$00,$30,$1C,$1F,$DF,$1F,$15,$12,$0B<br />
dc.b $0F,$0C,$0D,$00,$0D,$07,$2F,$FA,$FA,$00,$29,$00,$00<br />
<br />
; CNZ bonusy bumper sound<br />
Sound58: dc.w z80_ptr(ssamp58),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$B3,$06,$B3,$15,$F2<br />
ssamp58: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
<br />
; CNZ baaang bumper sound<br />
Sound59: dc.w z80_ptr(ssamp59),$0103<br />
dc.w $8004,z80_ptr(+),$0000<br />
dc.w $8002,z80_ptr(++),$0002<br />
dc.w $8005,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$E1,$0C,$B5,$14,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
+ dc.b $EF,$00,$B6,$14,$F2<br />
ssamp59: dc.b $32,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $0D,$00,$01,$01,$0C,$00,$23,$C3,$F6,$08,$07,$1C,$03<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; CNZ gloop / water droplet sound<br />
Sound5A: dc.w z80_ptr(ssamp5A),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$7F,$F1,$AA,$0A,$F2<br />
ssamp5A: dc.b $47,$03,$02,$02,$04,$5F,$5F,$5F,$5F,$0E,$1A,$11<br />
dc.b $0A,$09,$0A,$0A,$0A,$4F,$3F,$3F,$3F,$7F,$80,$80,$A3<br />
<br />
<br />
Sound5B: dc.w z80_ptr(ssamp5B),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$02,$A5,$01,$E7<br />
- dc.b $01,$E7,$E6<br />
dc.w $02F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5B: dc.b $38,$0F,$0F,$0F,$0F,$1F,$1F,$1F,$0E,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$1F,$00,$00,$00,$80<br />
<br />
<br />
Sound5C: dc.w z80_ptr(ssamp5C),$0102<br />
dc.w $8004,z80_ptr(+),$000E<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$85,$40<br />
- dc.b $E7,$04,$E6<br />
dc.w $04F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$40<br />
- dc.b $E7,$08,$E6<br />
dc.w $01F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5C: dc.b $FA,$12,$01,$01,$01,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$81,$8E,$14,$80<br />
<br />
; chain clink<br />
Sound5D: dc.w z80_ptr(ssamp5D),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$C0,$04,$F2<br />
ssamp5D: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; helicopter<br />
Sound5E: dc.w z80_ptr(ssamp5E),$0101<br />
dc.w $8002,z80_ptr(+),$1405<br />
+ dc.b $EF,$00<br />
- dc.b $95,$02,$95<br />
dc.w $01F7,$0013,z80_ptr(-)<br />
- dc.b $95,$02,$95,$01,$E6<br />
dc.w $01F7,$001B,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5E: dc.b $35,$30,$44,$40,$51,$1F,$1F,$1F,$1F,$10,$00,$13<br />
dc.b $15,$1F,$00,$1F,$1A,$7F,$0F,$7F,$5F,$02,$A8,$80,$80<br />
<br />
<br />
Sound5F: dc.w z80_ptr(ssamp5F),$0103<br />
dc.w $8005,z80_ptr(s5Fs1),$0000<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
s5Fs1 dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$E6,$0A,$80<br />
dc.b $06,$EF,$01,$F0,$01,$01,$11,$FF,$A2,$28<br />
- dc.b $E7,$03,$E6<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs2 dc.b $80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$1D<br />
- dc.b $E7,$07,$EC<br />
dc.w $01F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs3 dc.b $80,$16,$F5,$03<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $FFF7,$0005,z80_ptr(-)<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $01F7,$0007,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5F: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
dc.b $3A,$70,$30,$04,$01,$0F,$14,$19,$16,$08,$0A,$0B<br />
dc.b $05,$03,$03,$03,$05,$1F,$6F,$8F,$5F,$1F,$22,$1F,$80<br />
<br />
; spindash charge<br />
Sound60: dc.w z80_ptr(ssamp60),$0101<br />
dc.w $8005,z80_ptr(+),$FE00<br />
+ dc.b $EF,$00,$F0,$00,$01,$20,$F6,$C4,$16,$E7,$F4,$D0,$18,$E7<br />
- dc.b $04,$E7,$E6<br />
dc.w $03F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp60: dc.b $34,$00,$03,$0C,$09,$9F,$8C,$8F,$95,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$00,$1D,$00,$00<br />
<br />
; rumbling<br />
Sound61: dc.w z80_ptr(ssamp61),$0101<br />
dc.w $8004,z80_ptr(+),$0004<br />
+ dc.b $80,$01,$EF,$00,$F0,$00,$01,$70,$06,$82,$06,$85,$08,$83<br />
dc.b $01,$82,$05,$86,$06,$89,$03,$82,$08,$88,$04,$82,$06,$E6<br />
dc.b $02,$85,$08,$E6,$02,$83,$01,$E6,$02,$82,$05,$E6,$02,$86<br />
dc.b $06,$E6,$02,$89,$03,$E6,$02,$82,$08,$E6,$02,$88,$04,$E6,$02,$F2<br />
ssamp61: dc.b $32,$30,$30,$50,$30,$1F,$0E,$19,$0E,$07,$12,$15<br />
dc.b $09,$0A,$09,$1D,$06,$E8,$03,$0A,$17,$07,$00,$00,$00<br />
<br />
<br />
Sound62: dc.w z80_ptr(ssamp62),$0101<br />
dc.w $8005,z80_ptr(+),$FF00<br />
+ dc.b $EF,$00,$A6,$05,$F0,$01,$01,$E7,$40<br />
- dc.b $C4,$02,$E7,$E6<br />
dc.w $01F7,$0012,z80_ptr(-)<br />
dc.b $F2<br />
ssamp62: dc.b $34,$0C,$10,$73,$0C,$AF,$AC,$FF,$D5,$06,$00,$02<br />
dc.b $01,$02,$0A,$04,$08,$BF,$BF,$BF,$BF,$00,$08,$80,$80<br />
<br />
; CNZ blooing bumper<br />
Sound63: dc.w z80_ptr(ssamp63),$0101<br />
dc.w $8005,z80_ptr(+),$0907<br />
+ dc.b $EF,$00,$F0,$01,$01,$04,$56,$92,$03,$9A,$25,$F2<br />
ssamp63: dc.b $3D,$12,$10,$77,$30,$5F,$5F,$5F,$5F,$0F,$0A,$00<br />
dc.b $01,$0A,$0A,$0D,$0D,$4F,$0F,$0F,$0F,$13,$80,$80,$80<br />
<br />
; HTZ track click sound<br />
Sound64: dc.w z80_ptr(ssamp64),$0101<br />
dc.w $8005,z80_ptr(+),$1100<br />
+ dc.b $EF,$00,$C7,$02,$F2<br />
ssamp64: dc.b $24,$2A,$02,$05,$01,$1A,$1F,$10,$1F,$0F,$1F,$1F<br />
dc.b $1F,$0C,$0D,$11,$11,$0C,$09,$09,$0F,$0E,$04,$80,$80<br />
<br />
; kicking up leaves sound<br />
Sound65: dc.w z80_ptr(ssamp65),$0101<br />
dc.w $80C0,z80_ptr(+),$F800<br />
+ dc.b $F5,$03,$F3,$E7,$CE,$03,$F5,$06,$CE,$04,$EC<br />
dc.b $02,$CE,$02,$F5,$03,$EC,$FE,$CE,$08,$CE,$18,$F2<br />
ssamp65: ; uhm... apparently they forgot to null out the pointer to here.<br />
; luckily, sound 65 doesn't really use its sample<br />
<br />
; leaf splash?<br />
Sound66: dc.w z80_ptr(ssamp66),$0102<br />
dc.w $8005,z80_ptr(++),$EE08<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$F5,$09,$C6,$36,$F2<br />
+ dc.b $EF,$00,$80,$01,$92,$02,$02,$02,$30,$F2<br />
ssamp66: dc.b $32,$33,$17,$34,$13,$0F,$0D,$1B,$17,$00,$04,$02<br />
dc.b $0B,$08,$00,$08,$09,$6F,$5F,$4F,$6F,$05,$00,$00,$80<br />
<br />
<br />
Sound67: dc.w z80_ptr(ssamp67),$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$06,$F3,$E7,$90,$0A,$94,$0A,$98,$0A,$9C<br />
dc.b $0A,$A0,$0A,$A4,$08,$A8,$08,$AC,$08,$B0,$08,$F2<br />
ssamp67: ; another not-really-used sample (like Sound65)<br />
<br />
; door slamming quickly (seems unused)<br />
Sound68: dc.w z80_ptr(ssamp68),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$A5,$06,$F2<br />
ssamp68: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
<br />
Sound69: dc.w z80_ptr(ssamp69),$0102<br />
dc.w $8005,z80_ptr(+),$F400<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$9B,$03,$A8,$06,$9E,$08,$F2<br />
+ dc.b $F5,$04,$F3,$E7,$C6,$03,$C6,$06,$C6,$08,$F2<br />
ssamp69: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; robotic laser burst<br />
Sound6A: dc.w z80_ptr(ssamp6A),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$DF,$14,$E6,$18,$06,$F2<br />
ssamp6A: dc.b $3D,$09,$34,$34,$28,$1F,$16,$16,$16,$00,$00,$00<br />
dc.b $04,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$15,$02,$02,$00<br />
<br />
; scatter<br />
Sound6B: dc.w z80_ptr(ssamp6B),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$81,$04,$80,$0C,$F2<br />
ssamp6B: dc.b $3A,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $07,$00,$01,$01,$03,$00,$23,$C3,$46,$08,$07,$1C,$03<br />
<br />
<br />
Sound6C: dc.w z80_ptr(ssamp6C),$0104<br />
dc.w $8005,z80_ptr(++),$0010<br />
dc.w $8004,z80_ptr(+),$0010<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
+ dc.b $E1,$10<br />
+ dc.b $EF,$01,$F0,$01,$01,$EC,$56,$C0,$24,$F4,$EF,$00,$E6,$F0<br />
- dc.b $BB,$02,$E7,$E6,$02,$E9<br />
dc.w $01F7,$0020,z80_ptr(-)<br />
dc.b $F2<br />
ssamp6C: dc.b $00,$53,$30,$03,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$06,$23,$80<br />
dc.b $3C,$72,$32,$32,$72,$14,$14,$0F,$0F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$02,$02,$08,$08,$35,$14,$00,$00<br />
<br />
; error sound<br />
Sound6D: dc.w z80_ptr(ssamp6D),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$B0,$06,$80,$06,$B0,$18,$F2<br />
ssamp6D: dc.b $38,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$1F,$0C,$17,$00<br />
<br />
; silver sonic buzz saw<br />
Sound6E: dc.w z80_ptr(ssamp6E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$C6,$24,$E7<br />
- dc.b $C6,$04,$E7,$E6<br />
dc.w $04F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F3,$E7,$C7,$44,$F2<br />
ssamp6E: dc.b $33,$00,$10,$00,$31,$1F,$1D,$1E,$0E,$00,$0C,$1D<br />
dc.b $00,$00,$00,$01,$00,$0F,$0F,$0F,$0F,$08,$06,$07,$80<br />
<br />
<br />
Sound6F: dc.w z80_ptr(ssamp6A),$0103<br />
dc.w $8005,z80_ptr(++),$000B<br />
dc.w $8004,z80_ptr(+),$0012<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $E1,$02,$80,$02<br />
+ dc.b $EF,$00,$E6,$0C,$DF,$06,$E7,$E6,$F4,$06,$E7<br />
dc.b $E6,$F4,$12,$E7,$E6,$0C,$06,$E7,$E6,$0C,$06,$F2<br />
+ dc.b $F3,$E7,$C6,$04,$C0,$BA,$B4,$AE,$E6<br />
dc.b $01,$AE,$E6,$01,$AE,$E6,$01,$AE,$F2<br />
<br />
<br />
Sound70: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$C6,$18<br />
- dc.b $E7,$03,$E6<br />
dc.w $01F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to the other bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
; share these symbols externally (WARNING: don't rename, move or remove these labels!)<br />
shared movewZ80CompSize<br />
</asm><br />
<br />
We want to replace it with this optimized code:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===sound playback routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; change the music tempo<br />
<br />
SetTempo:<br />
stopZ80<br />
move.b D0,($A01C08).l<br />
startZ80<br />
rts<br />
<br />
</asm></div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208744
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-24T23:59:38Z
<p>Kram1024: /* sound playback routines */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==<br />
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><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
move sr,-(sp)<br />
movem.l d0-a6,-(sp)<br />
move #$2700,sr<br />
lea (Z80_Bus_Request).l,a3<br />
lea (Z80_Reset).l,a2<br />
moveq #0,d2<br />
move.w #$100,d1<br />
move.w d1,(a3) ; get Z80 bus<br />
move.w d1,(a2) ; release Z80 reset (was held high by console on startup)<br />
- btst d2,(a3)<br />
bne.s - ; wait until the 68000 has the bus<br />
jsr DecompressSoundDriver(pc)<br />
btst #0,(VDP_control_port+1).l ; check video mode<br />
sne (Z80_RAM+zPalModeByte).l ; set if PAL<br />
move.w d2,(a2) ; hold Z80 reset<br />
move.w d2,(a3) ; release Z80 bus<br />
moveq #$E6,d0<br />
- dbf d0,- ; wait for 2,314 cycles<br />
move.w d1,(a2) ; release Z80 reset<br />
movem.l (sp)+,d0-a6<br />
move (sp)+,sr<br />
rts<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; slightly modified Saxman decompression of the sound driver<br />
; a4 == $A00000 (start of Z80 RAM)<br />
; a5 == current position in Z80 RAM?<br />
; a6 == current position in compressed sound driver?<br />
; d0 == data to decompress? (byte)<br />
; d4 == ???<br />
; d5 == ???<br />
; d6 == ???<br />
; d7 == bytes left to decompress<br />
; loc_EC04A:<br />
DecompressSoundDriver:<br />
lea Snd_Driver(pc),a6<br />
; WARNING: the build script needs editing if you rename this label<br />
movewZ80CompSize: move.w #Snd_Driver_End-Snd_Driver,d7 ; patched (by fixpointer.exe) after compression since the exact size can't be known beforehand<br />
moveq #0,d6<br />
lea (Z80_RAM).l,a5<br />
moveq #0,d5<br />
lea (Z80_RAM).l,a4<br />
<br />
loc_EC062:<br />
lsr.w #1,d6<br />
btst #8,d6<br />
bne.s +<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d6<br />
ori.w #$FF00,d6<br />
+<br />
btst #0,d6<br />
beq.s loc_EC086<br />
jsr sub_EC0DE(pc)<br />
move.b d0,(a5)+<br />
addq.w #1,d5<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC086:<br />
jsr sub_EC0DE(pc)<br />
moveq #0,d4<br />
move.b d0,d4<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d3<br />
andi.w #$F,d3<br />
addq.w #2,d3<br />
andi.w #$F0,d0<br />
lsl.w #4,d0<br />
add.w d0,d4<br />
addi.w #$12,d4<br />
andi.w #$FFF,d4<br />
move.w d5,d0<br />
andi.w #$F000,d0<br />
add.w d0,d4<br />
cmp.w d4,d5<br />
bhs.s loc_EC0CC<br />
subi.w #$1000,d4<br />
bcc.s loc_EC0CC<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b #0,(a5)+<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC0CC:<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b (a4,d4.w),(a5)+<br />
addq.w #1,d4<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; End of function DecompressSoundDriver<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_EC0DE:<br />
move.b (a6)+,d0<br />
subq.w #1,d7<br />
bne.s +<br />
addq.w #4,sp<br />
+<br />
rts<br />
; End of function sub_EC0DE<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; S2 sound driver (Sound driver compression (slightly modified Saxman))<br />
; ---------------------------------------------------------------------------<br />
; loc_EC0E8:<br />
Snd_Driver:<br />
save<br />
include "s2.sounddriver.asm" ; CPU Z80<br />
restore<br />
padding off<br />
!org (Snd_Driver+Size_of_Snd_driver_guess) ; don't worry; I know what I'm doing<br />
<br />
<br />
; loc_ED04C:<br />
Snd_Driver_End:<br />
<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ---------------------------------------------------------------------------<br />
; the DAC data has to line up with the end of the bank.<br />
<br />
; actually it only has to fit within one bank, but we'll line it up to the end anyway<br />
; because the padding gives the sound driver some room to grow<br />
cnop -Size_of_DAC_samples, $8000<br />
<br />
; ---------------------------------------------------------------------------<br />
; DAC samples<br />
; ---------------------------------------------------------------------------<br />
; loc_ED100:<br />
SndDAC_Start:<br />
<br />
SndDAC_Sample1:<br />
BINCLUDE "sound/DAC/Sample 1.bin"<br />
SndDAC_Sample1_End<br />
<br />
SndDAC_Sample2:<br />
BINCLUDE "sound/DAC/Sample 2.bin"<br />
SndDAC_Sample2_End<br />
<br />
SndDAC_Sample5:<br />
BINCLUDE "sound/DAC/Sample 5.bin"<br />
SndDAC_Sample5_End<br />
<br />
SndDAC_Sample6:<br />
BINCLUDE "sound/DAC/Sample 6.bin"<br />
SndDAC_Sample6_End<br />
<br />
SndDAC_Sample3:<br />
BINCLUDE "sound/DAC/Sample 3.bin"<br />
SndDAC_Sample3_End<br />
<br />
SndDAC_Sample4:<br />
BINCLUDE "sound/DAC/Sample 4.bin"<br />
SndDAC_Sample4_End<br />
<br />
SndDAC_Sample7:<br />
BINCLUDE "sound/DAC/Sample 7.bin"<br />
SndDAC_Sample7_End<br />
<br />
SndDAC_End<br />
<br />
if SndDAC_End - SndDAC_Start > $8000<br />
fatal "DAC samples must fit within $8000 bytes, but you have $\{SndDAC_End-SndDAC_Start } bytes of DAC samples."<br />
endif<br />
if SndDAC_End - SndDAC_Start > Size_of_DAC_samples<br />
fatal "Size_of_DAC_samples = $\{Size_of_DAC_samples}, but you have $\{SndDAC_End-SndDAC_Start} bytes of DAC samples."<br />
endif<br />
<br />
; ---------------------------------------------------------------------------<br />
; Music pointers<br />
; ---------------------------------------------------------------------------<br />
align $8000<br />
<br />
; loc_F0000:<br />
MusicPoint1:<br />
MusPtr_Continue: rom_ptr_z80 Mus_Continue-MusicPoint2<br />
<br />
<br />
Mus_Continue: BINCLUDE "sound/music/Continue.bin"<br />
<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ----------------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ----------------------------------------------------------------------------------<br />
; the PCM data has to line up with the end of the bank.<br />
cnop -Size_of_SEGA_sound, $8000<br />
<br />
; -------------------------------------------------------------------------------<br />
; Sega Intro Sound<br />
; 8-bit unsigned raw audio at 16Khz<br />
; -------------------------------------------------------------------------------<br />
; loc_F1E8C:<br />
Snd_Sega: BINCLUDE "sound/PCM/SEGA.bin"<br />
Snd_Sega_End:<br />
<br />
if Snd_Sega_End - Snd_Sega > $8000<br />
fatal "Sega sound must fit within $8000 bytes, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
if Snd_Sega_End - Snd_Sega > Size_of_SEGA_sound<br />
fatal "Size_of_SEGA_sound = $\{Size_of_SEGA_sound}, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
<br />
; ------------------------------------------------------------------------------<br />
; Music pointers<br />
; ------------------------------------------------------------------------------<br />
align $8000<br />
soundBankStart := *<br />
<br />
; loc_F8000:<br />
MusicPoint2:<br />
MusPtr_CNZ_2P: rom_ptr_z80 Mus_CNZ_2P<br />
MusPtr_EHZ: rom_ptr_z80 Mus_EHZ<br />
MusPtr_MTZ: rom_ptr_z80 Mus_MTZ<br />
MusPtr_CNZ: rom_ptr_z80 Mus_CNZ<br />
MusPtr_MCZ: rom_ptr_z80 Mus_MCZ<br />
MusPtr_MCZ_2P: rom_ptr_z80 Mus_MCZ_2P<br />
MusPtr_ARZ: rom_ptr_z80 Mus_ARZ<br />
MusPtr_DEZ: rom_ptr_z80 Mus_DEZ<br />
MusPtr_SpecStage: rom_ptr_z80 Mus_SpecStage<br />
MusPtr_Options: rom_ptr_z80 Mus_Options<br />
MusPtr_Ending: rom_ptr_z80 Mus_Ending<br />
MusPtr_EndBoss: rom_ptr_z80 Mus_EndBoss<br />
MusPtr_CPZ: rom_ptr_z80 Mus_CPZ<br />
MusPtr_Boss: rom_ptr_z80 Mus_Boss<br />
MusPtr_SCZ: rom_ptr_z80 Mus_SCZ<br />
MusPtr_OOZ: rom_ptr_z80 Mus_OOZ<br />
MusPtr_WFZ: rom_ptr_z80 Mus_WFZ<br />
MusPtr_EHZ_2P: rom_ptr_z80 Mus_EHZ_2P<br />
MusPtr_2PResult: rom_ptr_z80 Mus_2PResult<br />
MusPtr_SuperSonic: rom_ptr_z80 Mus_SuperSonic<br />
MusPtr_HTZ: rom_ptr_z80 Mus_HTZ<br />
MusPtr_ExtraLife: rom_ptr_z80 Mus_ExtraLife<br />
MusPtr_Title: rom_ptr_z80 Mus_Title<br />
MusPtr_EndLevel: rom_ptr_z80 Mus_EndLevel<br />
MusPtr_GameOver: rom_ptr_z80 Mus_GameOver<br />
MusPtr_Invincible: rom_ptr_z80 Mus_Invincible<br />
MusPtr_Emerald: rom_ptr_z80 Mus_Emerald<br />
MusPtr_HPZ: rom_ptr_z80 Mus_HPZ<br />
MusPtr_Drowning: rom_ptr_z80 Mus_Drowning<br />
MusPtr_Credits: rom_ptr_z80 Mus_Credits<br />
<br />
; loc_F803C:<br />
Mus_HPZ: BINCLUDE "sound/music/HPZ.bin"<br />
Mus_Drowning: BINCLUDE "sound/music/Drowning.bin"<br />
Mus_Invincible: BINCLUDE "sound/music/Invincible.bin"<br />
Mus_CNZ_2P: BINCLUDE "sound/music/CNZ_2p.bin"<br />
Mus_EHZ: BINCLUDE "sound/music/EHZ.bin"<br />
Mus_MTZ: BINCLUDE "sound/music/MTZ.bin"<br />
Mus_CNZ: BINCLUDE "sound/music/CNZ.bin"<br />
Mus_MCZ: BINCLUDE "sound/music/MCZ.bin"<br />
Mus_MCZ_2P: BINCLUDE "sound/music/MCZ_2p.bin"<br />
Mus_ARZ: BINCLUDE "sound/music/ARZ.bin"<br />
Mus_DEZ: BINCLUDE "sound/music/DEZ.bin"<br />
Mus_SpecStage: BINCLUDE "sound/music/SpecStg.bin"<br />
Mus_Options: BINCLUDE "sound/music/Options.bin"<br />
Mus_Ending: BINCLUDE "sound/music/Ending.bin"<br />
Mus_EndBoss: BINCLUDE "sound/music/End_Boss.bin"<br />
Mus_CPZ: BINCLUDE "sound/music/CPZ.bin"<br />
Mus_Boss: BINCLUDE "sound/music/Boss.bin"<br />
Mus_SCZ: BINCLUDE "sound/music/SCZ.bin"<br />
Mus_OOZ: BINCLUDE "sound/music/OOZ.bin"<br />
Mus_WFZ: BINCLUDE "sound/music/WFZ.bin"<br />
Mus_EHZ_2P: BINCLUDE "sound/music/EHZ_2p.bin"<br />
Mus_2PResult: BINCLUDE "sound/music/2player results screen.bin"<br />
Mus_SuperSonic: BINCLUDE "sound/music/Supersonic.bin"<br />
Mus_HTZ: BINCLUDE "sound/music/HTZ.bin"<br />
Mus_Title: BINCLUDE "sound/music/Title screen.bin"<br />
Mus_EndLevel: BINCLUDE "sound/music/End of level.bin"<br />
<br />
; The following act mostly like sound effects<br />
; despite being listed with the music.<br />
; This means they're uncompressed format with absolute pointers<br />
; instead of compressed with relative pointers.<br />
; Because they have absolute pointers,<br />
; they have to be assembled rather than BINCLUDE'd.<br />
; See below (right before Sound20) for other notes<br />
; about the sound format that apply to these too.<br />
<br />
;Mus_ExtraLife: BINCLUDE "sound/music/Extra life.bin"<br />
Mus_ExtraLife: dc.w z80_ptr(Mus_EL_Voices),$0603,$02CD<br />
dc.w z80_ptr(Mus_EL_DAC),$0000<br />
dc.w z80_ptr(Mus_EL_FM1),$E810<br />
dc.w z80_ptr(Mus_EL_FM2),$E810<br />
dc.w z80_ptr(Mus_EL_FM3),$E810<br />
dc.w z80_ptr(Mus_EL_FM4),$E810<br />
dc.w z80_ptr(Mus_EL_FM5),$E810<br />
dc.w z80_ptr(Mus_EL_PSG1),$D008,$0005<br />
dc.w z80_ptr(Mus_EL_PSG2),$DC08,$0005<br />
dc.w z80_ptr(Mus_EL_PSG3),$DC00,$0004<br />
Mus_EL_FM4: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM1: dc.b $E0,$80<br />
+ dc.b $EF,$00,$E8,$06,$D9,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$DB,$09,$D7,$D6,$06,$D9,$18,$F2<br />
Mus_EL_FM2: dc.b $EF,$01,$E8,$06,$E2,$01,$D6,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$D7,$09,$D4,$D2,$06,$D6,$18,$E2,$01,$F2<br />
Mus_EL_FM5: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM3: dc.b $E0,$80<br />
+ dc.b $EF,$02,$BA,$0C,$80,$06,$BA,$B8,$80,$03<br />
dc.b $B8,$06,$80,$03,$B8,$06,$BA,$18,$F2<br />
Mus_EL_PSG1: dc.b $E8,$06,$D6,$06,$03,$03,$06,$06,$E8,$00,$D7,$09<br />
dc.b $D4,$D2,$06,$D6,$18<br />
Mus_EL_PSG2:<br />
Mus_EL_PSG3: dc.b $F2<br />
Mus_EL_DAC: dc.b $88,$12,$06,$8B,$09,$09,$06,$88,$06,$8A,$88,$8A<br />
dc.b $88,$0C,$E4<br />
Mus_EL_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
<br />
<br />
;Mus_GameOver: BINCLUDE "sound/music/Game over.bin"<br />
Mus_GameOver: dc.w z80_ptr(MusGO_Voices),$0603,$02F2<br />
dc.w z80_ptr(MusGOver_DAC),$0000<br />
dc.w z80_ptr(MusGOver_FM1),$E80A<br />
dc.w z80_ptr(MusGOver_FM2),$F40F<br />
dc.w z80_ptr(MusGOver_FM3),$F40F<br />
dc.w z80_ptr(MusGOver_FM4),$F40D<br />
dc.w z80_ptr(MusGOver_FM5),$DC16<br />
dc.w z80_ptr(MusGOver_PSG),$D003,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC06,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC00,$0004<br />
MusGOver_FM1: dc.b $EF,$00<br />
dc.b $F0,$20,$01,$04,$05<br />
dc.b $80,$0C,$CA,$12,$80,$06,$CA,$80,$CB,$12,$C8,$1E<br />
dc.b $CA,$06,$80,$CA,$80,$CA,$80,$C6,$80,$C4,$12,$C8<br />
dc.b $0C,$80,$12,$C9,$04,$80,$C9,$C8,$06,$80,$C7,$80<br />
dc.b $C6,$80<br />
dc.b $F0,$28,$01,$18,$05<br />
dc.b $C5,$60,$F2<br />
MusGOver_FM2: dc.b $EF,$01,$80,$01,$D9,$06,$80,$D9,$80,$D6,$80,$D6<br />
dc.b $80,$D7,$15,$D7,$1B,$D9,$06,$80,$D9,$80,$D6,$80<br />
dc.b $D6,$80,$DC,$15,$DC,$1B,$F2<br />
MusGOver_FM3: dc.b $EF,$01,$D6,$0C,$D6,$D2,$D2,$D4,$15,$D4,$1B,$D6<br />
dc.b $0C,$D6,$D2,$D2,$D7,$15,$D7,$1B,$F2<br />
MusGOver_FM4: dc.b $EF,$02,$E2,$01,$AE,$06,$80,$AE,$80,$A9,$80,$A9<br />
dc.b $80,$AC,$15,$AB,$0C,$AC,$03,$AB,$0C,$AE,$06,$80<br />
dc.b $AE,$80,$A9,$80,$A9,$80,$B3,$15,$B2,$0C,$B3,$03<br />
dc.b $B2,$0C,$AE,$04,$80,$AE,$AD,$06,$80,$AC,$80,$AB<br />
dc.b $80,$AB,$60,$E2,$01,$F2<br />
MusGOver_FM5: dc.b $EF,$03,$80,$30,$D7,$12,$80,$03,$D7,$1B,$80,$30<br />
dc.b $DC,$12,$80,$03,$DC,$1B<br />
MusGOver_PSG: dc.b $F2<br />
MusGOver_DAC: dc.b $80,$18,$81<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(MusGOver_DAC)<br />
dc.b $F2<br />
MusGO_Voices: dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $3C,$33,$73,$30,$70,$94,$96,$9F,$9F,$12,$14,$00<br />
dc.b $0F,$04,$04,$0A,$0D,$2F,$4F,$0F,$2F,$33,$1A,$80,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$1C,$27,$28,$80<br />
dc.b $1F,$66,$53,$31,$22,$1C,$1F,$98,$1F,$12,$0F,$0F<br />
dc.b $0F,$00,$00,$00,$00,$FF,$0F,$0F,$0F,$8C,$8A,$8D,$8B<br />
<br />
;Mus_Emerald: BINCLUDE "sound/music/Got an emerald.bin"<br />
Mus_Emerald: dc.w z80_ptr(MusEmrldVoices),$0703,$01D5<br />
dc.w z80_ptr(MusEmeraldDAC),$0000<br />
dc.w z80_ptr(MusEmeraldFM1),$F408<br />
dc.w z80_ptr(MusEmeraldFM2),$F408<br />
dc.w z80_ptr(MusEmeraldFM3),$F407<br />
dc.w z80_ptr(MusEmeraldFM4),$F416<br />
dc.w z80_ptr(MusEmeraldFM5),$F416<br />
dc.w z80_ptr(MusEmeraldFM6),$F416<br />
dc.w z80_ptr(MusEmeraldPSG1),$F402,$0004<br />
dc.w z80_ptr(MusEmeraldPSG2),$F402,$0005<br />
dc.w z80_ptr(MusEmeraldPSG3),$F400,$0004<br />
MusEmeraldFM3: dc.b $E1,$02<br />
MusEmeraldFM1: dc.b $EF,$00,$C1,$06,$C4,$C9,$CD,$0C,$C9,$D0,$2A,$F2<br />
MusEmeraldFM2: dc.b $EF,$00,$BD,$06,$C1,$C4,$C9,$0C,$C6,$CB,$2A,$F2<br />
MusEmeraldFM4: dc.b $EF,$01,$C1,$0C,$C1,$06,$C4,$06,$80,$C4,$80,$C9<br />
dc.b $2A,$F2<br />
MusEmeraldFM5: dc.b $EF,$01,$C9,$0C,$C9,$06,$CD,$06,$80,$CD,$80,$D0<br />
dc.b $2A,$F2<br />
MusEmeraldFM6: dc.b $EF,$01,$C4,$0C,$C4,$06,$C9,$06,$80,$C9,$80,$CD<br />
dc.b $2A,$F2<br />
MusEmeraldPSG2: dc.b $80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusEmeraldPSG1: dc.b $E2,$01,$80,$02,$80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
MusEmeraldPSG3:<br />
MusEmeraldDAC: dc.b $E2,$01,$F2<br />
MusEmrldVoices: dc.b $04,$35,$54,$72,$46,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$1D,$14,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$07,$07,$1A,$16,$80,$80<br />
<br />
;Mus_Credits: BINCLUDE "sound/music/Credits.bin"<br />
Mus_Credits: dc.w z80_ptr(MusCred_Voices),$0603,$01F0<br />
dc.w z80_ptr(MusCred_DAC),$0000<br />
dc.w z80_ptr(MusCred_FM1),$000E<br />
dc.w z80_ptr(MusCred_FM2),$180A<br />
dc.w z80_ptr(MusCred_FM3),$0014<br />
dc.w z80_ptr(MusCred_FM4),$0016<br />
dc.w z80_ptr(MusCred_FM5),$0C16<br />
dc.w z80_ptr(MusCred_PSG1),$E806,$000B<br />
dc.w z80_ptr(MusCred_PSG2),$DC07,$000B<br />
dc.w z80_ptr(MusCred_PSG3),$0002,$0003<br />
MusCred_FM1: dc.b $E9,$F4,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$0C,$E6,$02<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$03,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $AE,$06,$A2,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $E6,$FD<br />
- dc.b $EF,$00,$B7,$06,$BA,$F8<br />
dc.w z80_ptr(MusCreditsDA13)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$06,$80,$80,$30,$80,$EF,$0B,$E9,$18,$E6,$02<br />
- dc.b $94,$0C,$8F,$92,$8F,$06,$94,$05,$94,$07,$06,$8F<br />
dc.b $0C,$92,$8F<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$30,$80,$EF,$0E,$E6,$FF,$E9,$E8,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$91,$94,$06,$80,$18,$96,$12,$9A,$06,$80<br />
dc.b $80,$12,$8F,$93,$08,$80,$16,$96,$06,$91,$92,$94<br />
dc.b $96,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$9D,$9A,$08,$80,$16,$96,$12,$9D,$08,$80<br />
dc.b $04,$EF,$12<br />
dc.b $F0,$18,$01,$0A,$04<br />
dc.b $80,$30,$80,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$24,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$EF,$01,$E9,$F4,$E6,$FA,$F4<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $80,$03,$80,$60,$E6,$04,$E1,$01,$EF,$1B,$E6,$06<br />
dc.b $C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80,$EF<br />
dc.b $1C,$E6,$FA,$E8,$00,$BC,$0C,$12,$06,$EF,$1B,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$80,$E8,$06,$C4,$06,$06,$C6,$C4,$E8<br />
dc.b $00,$C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80<br />
dc.b $E8,$00,$EF,$1C,$E6,$FA,$C1,$C4,$C1,$EF,$1A,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$06,$80,$80,$24,$80,$30,$80,$EF,$1F<br />
dc.b $E9,$18,$E6,$F7,$E1,$00,$80,$06,$AC,$AE,$80,$B1<br />
dc.b $80,$B3,$80,$B4,$80,$B3,$80,$B1,$B3,$80,$B1,$E9<br />
dc.b $F4,$EF,$00,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC<br />
dc.b $06,$AE,$B1,$80,$B4,$B1,$80,$B1,$E9,$0C,$EF,$1F<br />
dc.b $80,$06,$B8,$12,$B4,$06,$80,$B3,$80,$B4,$80,$B3<br />
dc.b $80,$B1,$AE,$80,$B1,$E9,$F4,$EF,$00,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$30,$80,$EF,$21,$E9,$0C,$80,$30,$80<br />
dc.b $08,$A0,$04,$9E,$0C,$9D,$9B,$99,$08,$04,$91,$0C<br />
dc.b $92,$93,$94,$98,$99,$9B,$9D,$98,$95,$93,$91,$98<br />
dc.b $9D,$91,$96,$98,$99,$98,$96,$99,$9D,$96,$95,$97<br />
dc.b $99,$97,$95,$96,$97,$98,$99,$98,$99,$9B,$9D,$08<br />
dc.b $04,$98,$0C,$91,$95,$96,$98,$99,$9D,$9E,$08,$96<br />
dc.b $10,$97,$0C,$98,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$08,$99,$04,$EF,$23,$E9,$E8,$E6,$07,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $80,$60,$E6,$FB,$80,$0C,$CD,$06,$80,$D4,$CD,$06<br />
dc.b $80,$0C,$CD,$06,$80,$D4,$CD,$06,$80,$18,$E6,$05<br />
dc.b $80,$0C,$AE,$80,$AE,$80,$24,$E1,$02,$E6,$08,$A2<br />
dc.b $6C,$F2<br />
MusCreditsD9D1: dc.b $A5,$0C,$B1,$06,$80,$B1,$0C,$AC,$B3,$12,$B1,$0C<br />
dc.b $AC,$06,$AE,$B1,$A7,$0C,$B3,$06,$80,$B3,$0C,$AE<br />
dc.b $B5,$12,$B3,$06,$80,$AE,$B0,$B3,$A3,$0C,$AF,$06<br />
dc.b $80,$AF,$0C,$AA,$B1,$12,$AF,$0C,$AA,$06,$AC,$AF<br />
dc.b $A2,$0C,$AE,$06,$A2,$A4,$0C,$B0,$06,$A4,$A5,$0C<br />
dc.b $B1,$06,$A5,$A2,$0C,$E3<br />
MusCreditsDA13: dc.b $BE,$0C,$BC,$06,$BA,$BC,$BA,$04,$E7,$08,$BA,$04<br />
dc.b $80,$0E,$EF,$07,$B7,$06,$B2,$B5,$B7,$EF,$00,$B7<br />
dc.b $BA,$BE,$0C,$BC,$06,$BA,$BC,$BA,$0C,$BC,$04,$80<br />
dc.b $08,$BA,$04,$80,$08,$BC,$04,$80,$08,$BE,$12,$BA<br />
dc.b $06,$B7,$80,$B7,$80,$24,$EF,$07,$B7,$06,$B2,$B5<br />
dc.b $B7,$80,$0C,$80,$30,$BE,$06,$BE,$BA,$04,$80,$08<br />
dc.b $BC,$06,$BE,$E3<br />
MusCreditsDA5F: dc.b $C3,$01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$02,$C3<br />
dc.b $01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01<br />
dc.b $E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$FC,$C3,$01,$E7<br />
dc.b $C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01,$E7,$C4<br />
dc.b $E7,$C5,$E7,$C6,$2D,$E7,$30,$E7,$30,$E3<br />
MusCreditsDA99: dc.b $A7,$0C,$B3,$06,$80,$B1,$80,$B3,$0C,$A7,$03,$80<br />
dc.b $06,$A7,$03,$B3,$0C,$B1,$B3,$09,$AE,$03,$AC,$06<br />
dc.b $80,$AC,$0C,$AE,$06,$80,$AE,$0C,$AF,$06,$80,$27<br />
dc.b $E3<br />
MusCreditsDABE: dc.b $80,$0C,$CA,$15,$80,$03,$CA,$06,$80,$CB,$0F,$80<br />
dc.b $03,$C8,$18,$80,$06,$CA,$80,$CA,$80,$CA,$80,$C6<br />
dc.b $80,$C4,$0F,$80,$03,$C8,$18,$80,$06<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E3<br />
MusCreditsDAE5: dc.b $80,$12,$94,$97,$06,$80,$18,$99,$12,$94,$06,$80<br />
dc.b $80,$12,$92,$96,$06,$80,$18,$97,$12,$92,$06,$80<br />
dc.b $E3<br />
MusCreditsDAFE: dc.b $80,$99,$80,$99,$80,$9E,$80,$E3<br />
MusCreditsDB06: dc.b $EF,$07,$80,$54,$C7,$04,$C8,$C9,$CA,$24,$CD,$D2<br />
dc.b $18,$D0,$24,$CF,$CB,$18,$CB,$0C,$CA,$80,$CD,$60<br />
dc.b $E7,$3C,$CA,$24,$CD,$D2,$18,$D4,$24,$D0,$D4,$18<br />
dc.b $D4,$24,$D6,$60,$E7,$3C,$E3<br />
MusCred_FM2: dc.b $80,$60,$EF,$01,$E8,$06,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $85,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8A,$87,$88,$89,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $88<br />
dc.b $F7,$00,$0B<br />
dc.w z80_ptr(-)<br />
- dc.b $8A<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$E6,$FC,$8A,$8B,$8C,$E6,$04,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$8D,$8A,$8B,$8C,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8D,$06,$99,$E8,$00,$8A,$0C,$8B,$8C,$E9,$E8,$E6<br />
dc.b $0C,$EF,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E6,$F9,$EF,$08<br />
MusCreditsDB93: dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $06,$9C,$12,$9D,$0C,$9E,$F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9D,$04,$80,$08,$9D,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $9C,$04,$80,$08,$9C,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(MusCreditsDB93)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$13,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$60,$EF,$0F,$E6,$F3<br />
dc.b $F0,$04,$02,$03,$02<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$30,$E7,$18,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$EF,$13,$E6,$F5,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$0C,$A9,$08,$A1,$10,$F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$08,$A9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E1,$02,$E9,$F4,$E6,$0A,$F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$EF,$1B,$E1,$00<br />
dc.b $E8,$06,$80,$3C,$B8,$06,$06,$BA,$BD,$BD,$BA,$EF<br />
dc.b $1D,$E6,$FA,$E8,$00,$F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $EF,$1C,$BD,$EF,$1D,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $80,$30,$80,$EF,$01,$E9,$18,$E6,$F9<br />
- dc.b $99,$0C,$A5,$06,$80,$96,$0C,$A2,$06,$80,$97,$0C<br />
dc.b $A3,$06,$80,$98,$0C,$A8,$06,$A7,$99,$06,$99,$12<br />
dc.b $96,$0C,$A2,$06,$80,$97,$0C,$A3,$06,$80,$98,$0C<br />
dc.b $A4,$06,$80<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$22,$E9,$E8,$E6,$03<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$AC,$04,$AE,$08,$B1,$04,$B5,$30,$80,$0C<br />
dc.b $B5,$08,$80,$04,$B6,$08,$B5,$10,$B9,$08,$04,$80<br />
dc.b $08,$B5,$34,$80,$0C,$B5,$BA,$08,$04,$80,$08,$B5<br />
dc.b $04,$B1,$24,$80,$0C,$B1,$08,$80,$04,$B3,$08,$B1<br />
dc.b $04,$B4,$0C,$B3,$08,$B1,$4C,$80,$0C,$B5,$08,$80<br />
dc.b $04,$B6,$08,$80,$04,$B5,$08,$80,$04,$B9,$08,$04<br />
dc.b $80,$08,$B5,$1C,$80,$0C,$BA,$18,$BC,$08,$BA,$04<br />
dc.b $BD,$18,$80,$0C,$BA,$04,$80,$08,$B8,$18,$B5,$B1<br />
dc.b $B3,$0C,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$0C,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$14,$B1,$04,$E6,$FF,$EF,$24,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $AC,$12,$AB,$0C,$AC,$06,$AB,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $B3,$12,$B2,$0C,$B3,$06,$B2,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $AC,$06,$80,$A9,$80,$AA,$80,$AB,$80,$AC,$AC,$A9<br />
dc.b $80,$AA,$80,$AC,$80,$A9,$80,$A9,$80,$AD,$80,$AD<br />
dc.b $80,$B0,$80,$B0,$80,$B3,$80,$B3,$80,$80,$0C,$A2<br />
dc.b $12,$80,$06,$A2,$12,$AD,$AE,$06,$80,$E6,$FD,$A2<br />
dc.b $6C,$F2<br />
MusCreditsDD59: dc.b $80,$0C,$C4,$06,$80,$C6,$80,$C4,$80,$C9,$80,$C9<br />
dc.b $80,$CB,$CD,$80,$0C,$80,$CB,$18,$C6,$06,$80,$C9<br />
dc.b $C9,$80,$CB,$0C,$80,$12,$80,$1E,$C7,$06,$C9,$C7<br />
dc.b $CB,$80,$C9,$80,$C7,$C9,$80,$C6,$E7,$C6,$30,$E7<br />
dc.b $18,$80,$18,$E3<br />
MusCreditsDD8D: dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
dc.b $06,$AB,$9F,$0C,$E3<br />
MusCreditsDD9D: dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$B6,$80,$18<br />
dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$30,$E7,$E3<br />
MusCreditsDDB5: dc.b $BF,$06,$BD,$BF,$12,$C2,$BF,$0C,$C1,$80,$06,$12<br />
dc.b $C4,$0C,$C2,$06,$80,$C9,$C6,$3C,$80,$06,$0C,$C7<br />
dc.b $12,$C6,$C4,$06,$C2,$C1,$18,$E3<br />
MusCreditsDDD5: dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$E3<br />
MusCreditsDDEA: dc.b $A2,$0C,$AE,$AC,$08,$AE,$04,$AC,$08,$A9,$04,$A7<br />
dc.b $08,$04,$E3<br />
MusCreditsDDF9: dc.b $80,$0C,$B1,$AE,$06,$06,$AC,$0C,$80,$B0,$AE,$06<br />
dc.b $06,$AC,$0C,$E3<br />
MusCreditsDE09: dc.b $AE,$AC,$06,$06,$AA,$0C,$80,$AC,$0C,$06,$06,$AE<br />
dc.b $AC,$E3<br />
MusCreditsDE17: dc.b $BA,$04,$80,$08,$B8,$18,$B5,$B1,$E3<br />
MusCreditsDE20: dc.b $AE,$06,$80,$AE,$80,$A9,$80,$A9,$80,$E3<br />
MusCreditsDE2A: dc.b $8A,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $E3<br />
MusCred_FM3: dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$18,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $B8,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $BD,$3C,$E9,$E8,$E6,$02,$E1,$03,$EF,$04,$E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$09,$E9,$0C,$E6,$FD,$E0,$40<br />
dc.b $F0,$06,$01,$05,$04<br />
dc.b $E1,$00<br />
- dc.b $9F,$0C,$AB,$06,$80,$A9,$80,$AB,$9F,$80,$9F,$AB<br />
dc.b $80,$A9,$80,$AB,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $9D,$0C,$A9,$06,$80,$A8,$80,$A9,$9C,$80,$9C,$A8<br />
dc.b $80,$A6,$80,$A8,$0C<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0D,$E6,$FB,$E0,$C0,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0F,$E0,$80,$E6,$0B,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$48,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$0C<br />
dc.b $F0,$18,$01,$03,$04<br />
dc.b $E6,$F3,$E0,$C0,$EF,$14,$A2,$14,$A4,$04,$A5,$04<br />
dc.b $80,$08,$A9,$04,$80,$08,$A8,$04,$80,$08,$A9,$04<br />
dc.b $80,$08,$AC,$08,$A9,$10<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$18,$E9,$F4,$E6,$08,$F4,$E0,$40,$80,$60,$80<br />
dc.b $30,$C6,$06,$80,$C2,$0C,$C4,$09,$C2,$03,$BF,$0C<br />
dc.b $80,$60,$80,$3C,$80,$60,$EF,$1B,$E6,$FB,$E0,$C0<br />
dc.b $E8,$06,$C4,$06,$06,$C6,$C9,$C9,$C6,$E8,$00,$CD<br />
dc.b $0C,$E8,$06,$C9,$06,$C6,$C9,$0C,$80,$80,$12,$EF<br />
dc.b $1C,$E8,$00,$BD,$BA,$0C,$E8,$06,$EF,$1B,$CE,$06<br />
dc.b $CE,$80,$CE,$80,$CE,$E8,$00,$CF,$0C,$D0,$80,$E8<br />
dc.b $06,$D0,$06,$06,$D2,$D0,$E8,$00,$CD,$0C,$E8,$06<br />
dc.b $C9,$06,$C6,$C9,$0C,$E8,$00,$EF,$1C,$80,$1E,$C2<br />
dc.b $0C,$C2,$BD,$06,$80,$60,$80,$60,$EF,$00,$E9,$18<br />
dc.b $80,$60,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC,$06<br />
dc.b $AE,$B1,$80,$B4,$B1,$80,$B1,$80,$60,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$60,$EF,$22,$E9,$DC,$E6,$FF,$E0,$80<br />
dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $CD,$30,$CB,$18,$CD,$0C,$CB,$C9,$30,$CE,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$FC,$80,$C4,$80,$C4,$80,$C6,$18,$08,$C4,$04<br />
dc.b $E9,$0C,$E6,$FF,$E0,$C0,$EF,$00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $CB,$12,$CB,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $D0,$12,$D0,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$CB,$12,$80,$06,$CB,$80,$CA,$12,$CB,$CA<br />
dc.b $0C,$C5,$18,$C8,$CB,$D1,$80,$0C,$CD,$80,$CD,$12<br />
dc.b $CC,$CD,$06,$80,$E6,$F8,$EF,$01,$E1,$03,$A2,$6C<br />
dc.b $F2<br />
MusCreditsDFF2: dc.b $80,$60,$BC,$06,$BD,$BC,$B8,$BA,$B6,$0C,$B8,$B3<br />
dc.b $B3,$06,$B6,$0C,$B8,$E3<br />
MusCreditsE004: dc.b $80,$0C,$CD,$04,$80,$10,$CD,$04,$80,$0C,$CD,$0C<br />
dc.b $CE,$08,$CD,$04,$80,$18,$80,$0C,$CB,$04,$80,$10<br />
dc.b $CB,$04,$80,$0C,$CB,$0C,$CD,$08,$CB,$04,$80,$18<br />
- dc.b $80,$0C,$C9,$04,$80,$10,$C9,$04,$80,$0C,$C9,$0C<br />
dc.b $CB,$08,$C9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E3<br />
MusCreditsE040: dc.b $80,$18,$B8,$0B,$80,$0D,$BA,$0C,$0B,$80,$19,$BD<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE051: dc.b $80,$0C,$C4,$80,$C4,$80,$C6,$80,$C6,$E3<br />
MusCreditsE05B: dc.b $CD,$06,$80,$CD,$80,$CA,$80,$CA,$80,$E3<br />
MusCreditsE065: dc.b $EF,$05,$E9,$F4,$C6,$60,$CB,$CD,$E7,$CD,$C6,$60<br />
dc.b $D0,$D0,$24,$D2,$60,$E7,$3C,$E3<br />
MusCred_FM4: dc.b $80,$60,$E9,$FB,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$1D,$E6,$02,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B5,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B8,$3C,$E6,$06,$EF,$05<br />
dc.b $F0,$02,$01,$FE,$04<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E9,$F4,$E6,$F7<br />
dc.b $F0,$0C,$01,$FB,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$25,$C3,$06,$C3,$80,$0C,$C3,$06,$C3,$05,$80<br />
dc.b $0D,$C3,$06,$C5,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$05,$F4,$E1,$02,$E0<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$0C,$80,$60,$EF,$10,$E6,$F7,$E1,$00,$E0<br />
dc.b $40,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $B3,$B7,$06,$AE,$0C,$B1,$B3,$B7,$06,$80,$B7,$AE<br />
dc.b $0C,$B1,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $EF,$15,$E6,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
- dc.b $EF,$14,$80,$4E,$E0,$40,$A1,$12,$A2,$06,$E0,$C0<br />
dc.b $EF,$16,$80,$30,$80,$06,$BA,$08,$B9,$04,$B8,$08<br />
dc.b $B7,$04,$B6,$08,$B5,$04<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E9,$F4,$E6,$02,$E0,$C0<br />
dc.b $F0,$01,$01,$03,$03<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$1E,$E0,$40,$E6,$FE,$E9,$F4,$F4,$E8<br />
dc.b $06,$80,$0C,$C1,$06,$12,$18,$C4,$06,$12,$0C,$EF<br />
dc.b $1C,$E0,$C0,$E6,$FA,$E8,$00,$C6,$E8,$06,$E6,$06<br />
dc.b $EF,$1E,$E0,$40,$C2,$06,$12,$18,$C4,$06,$12,$18<br />
dc.b $C1,$06,$12,$18,$C4,$06,$12,$0C,$EF,$1A,$E0,$C0<br />
dc.b $E9,$0C,$C6,$06,$C6,$80,$C6,$80,$C6,$E8,$00,$C7<br />
dc.b $0C,$C8,$06,$EF,$1E,$E0,$40,$E9,$F4,$E8,$06,$80<br />
dc.b $C4,$06,$12,$0C,$80,$60,$EF,$20,$E9,$18,$E6,$FA<br />
dc.b $E0,$C0,$E8,$00,$B4,$03,$E7,$B6,$5D,$B3,$03,$E7<br />
dc.b $B5,$5D,$B1,$03,$E7,$B3,$5D,$B3,$03,$E7,$B5,$5D<br />
dc.b $80,$60,$EF,$22,$E0,$40,$E9,$E8,$E6,$04,$80,$30<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $C9,$30,$C8,$18,$C9,$0C,$C8,$C6,$30,$C9,$80,$0C<br />
dc.b $C1,$80,$C1,$80,$C2,$80,$C2,$E6,$04,$80,$C1,$80<br />
dc.b $C1,$80,$C2,$80,$C2,$E6,$FC,$80,$C1,$80,$C1,$80<br />
dc.b $C2,$18,$08,$C1,$04,$E9,$0C,$E6,$FF,$E0,$C0,$EF<br />
dc.b $00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $C8,$12,$C8,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $CB,$12,$CB,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E1,$03,$E6,$08,$F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $E6,$F0,$EF,$01<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $A2,$6C,$F2<br />
MusCreditsE22D: dc.b $A2,$14,$A4,$04,$A5,$04,$80,$08,$A9,$04,$80,$08<br />
dc.b $A8,$04,$80,$08,$A9,$04,$80,$08,$AC,$08,$A9,$10<br />
dc.b $E3<br />
MusCreditsE246: dc.b $80,$0C<br />
dc.b $C9,$04,$80,$10<br />
dc.b $C9,$04,$80,$0C<br />
dc.b $C9,$0C<br />
dc.b $CB,$08<br />
dc.b $C9,$04,$80,$18,$80,$0C<br />
dc.b $C8,$04,$80,$10<br />
dc.b $C8,$04,$80,$0C<br />
dc.b $C8,$0C<br />
dc.b $C9,$08<br />
dc.b $C8,$04,$80,$18,$80,$0C<br />
<br />
if 1==1<br />
; this part of the original credits music (CNZ PSG) sounds buggy (dissonant)<br />
dc.b $C6,$04,$80,$10<br />
dc.b $C6,$04,$80,$0C<br />
dc.b $C6,$0C<br />
dc.b $C8,$08<br />
dc.b $C6,$04,$80,$18,$80,$0C<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $C7,$08<br />
else<br />
; replace the above block of notes with this to fix it.<br />
; (I'm not sure why, but the notes $C6 and $C7 are broken here,<br />
; so I've replaced them with pitch-shifted $C8s)<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$10 ; $C6<br />
dc.b $C8,$04,$80,$0C ; $C6<br />
dc.b $C8,$0C ; $C6<br />
dc.b $E1,0<br />
dc.b $C8,$08<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$24 ; $C6<br />
dc.b $E1,0<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $E1,-32<br />
dc.b $C8,$08 ; $C7<br />
dc.b $E1,0<br />
endif<br />
<br />
dc.b $C5,$04,$80,$18<br />
dc.b $E3<br />
MusCreditsE28F: dc.b $EF,$25,$80,$0C,$D0,$D4,$D7,$DB,$0C,$80,$06,$DB<br />
dc.b $0C,$DC,$06,$DB,$0C,$DD,$60,$DE,$0C,$80,$DE,$80<br />
dc.b $80,$06,$DD,$12,$DE,$0C,$E3<br />
MusCreditsE2AE: dc.b $80,$18,$B5,$0B,$80,$0D,$B7,$0C,$0B,$80,$19,$BA<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE2BF: dc.b $C3,$05,$80,$13,$C3,$12,$C3,$05,$E3<br />
MusCreditsE2C8: dc.b $CA,$06,$80,$CA,$80,$C6,$80,$C6,$80,$E3<br />
MusCreditsE2D2: dc.b $AF,$0C,$B3,$06,$B6,$0C,$AF,$B1,$06,$80,$B1,$0C<br />
dc.b $B5,$06,$B8,$0C,$B1,$06,$80,$B6,$0C,$BA,$06,$B1<br />
dc.b $0C,$B5,$B6,$BA,$06,$80,$BA,$AF,$0C,$B3,$B5,$B8<br />
dc.b $06,$B2,$0C,$B3,$B5,$B8,$06,$80,$B8,$B2,$0C,$B5<br />
dc.b $E3<br />
MusCred_FM5: dc.b $E9,$E8,$E6,$F8,$E1,$05,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$18,$E6,$08,$E1,$00,$EF,$02<br />
dc.b $F0,$0C,$01,$FC,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B1,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B5,$3C,$E9,$F4,$E6,$07<br />
dc.b $F0,$30,$01,$04,$04<br />
dc.b $EF,$06<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E6,$F6<br />
dc.b $F0,$0C,$01,$05,$04<br />
dc.b $E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$25,$C6,$06,$C6,$80,$0C,$C6,$06,$C6,$05,$80<br />
dc.b $0D,$C6,$06,$C8,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$E6,$05,$F4,$80,$01,$EF,$0C,$E1<br />
dc.b $FE,$E0,$40,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $23,$80,$0C,$80,$60,$EF,$11,$E9,$F4,$E6,$F4,$E1<br />
dc.b $00,$E0,$C0<br />
dc.b $F0,$06,$01,$06,$05<br />
dc.b $80,$60,$80,$30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60<br />
dc.b $80,$06,$CB,$80,$CB,$C9,$80,$C9,$80,$C7,$80,$C7<br />
dc.b $80,$C6,$03,$80,$C6,$80,$09,$80,$06,$80,$60,$80<br />
dc.b $30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60,$EF,$16,$E9<br />
dc.b $0C,$E6,$04,$F4,$E0,$80,$80,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
dc.b $80,$2F,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$30,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$60,$EF,$19,$E9,$F4,$E0,$C0,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$27,$B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$2A,$80,$60,$EF,$1E,$E9,$F4,$E8,$06<br />
- dc.b $80,$0C,$C4,$06,$12,$18,$C8,$06,$12,$0C,$80,$C6<br />
dc.b $06,$12,$18,$C8,$06,$12,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$20,$E8,$00,$E9,$18,$E6,$FA,$B8,$03<br />
dc.b $E7,$BA,$5D,$B6,$03,$E7,$B8,$5D,$B4,$03,$E7,$B6<br />
dc.b $5D,$B6,$03,$E7,$B8,$5D,$80,$60,$EF,$22,$E9,$F4<br />
dc.b $E6,$05<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$A7,$04,$A9,$08,$AC,$04,$B1,$30,$80,$0C<br />
dc.b $B1,$08,$80,$04,$B3,$08,$B1,$10,$B5,$08,$B5,$04<br />
dc.b $80,$08,$B0,$34,$80,$0C,$B0,$B5,$08,$04,$80,$08<br />
dc.b $B1,$04,$AE,$24,$80,$0C,$AE,$08,$80,$04,$B0,$08<br />
dc.b $AE,$04,$B1,$0C,$AF,$08,$AD,$4C,$80,$0C,$B1,$08<br />
dc.b $80,$04,$B3,$08,$80,$04,$B1,$08,$80,$04,$B5,$08<br />
dc.b $B5,$04,$80,$08,$B0,$1C,$80,$0C,$B5,$18,$B8,$08<br />
dc.b $B5,$04,$BA,$18,$80,$0C,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$04,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$F8,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$AA,$14,$A9,$04,$E6,$0C,$EF,$23,$E1,$03<br />
dc.b $E6,$F7,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E6,$09<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $F2<br />
MusCreditsE4CD: dc.b $80,$1E,$EF,$14,$A4,$12,$A5,$06,$EF,$16,$80,$30<br />
dc.b $80,$06,$BD,$08,$BC,$04,$BB,$08,$BA,$04,$B9,$08<br />
dc.b $B8,$04,$E3<br />
MusCreditsE4E8: dc.b $80,$18,$B1,$0B,$80,$0D,$B3,$0C,$0B,$80,$19,$B6<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE4F9: dc.b $C6,$05,$80,$13,$C6,$12,$C6,$05,$E3<br />
MusCreditsE502: dc.b $80,$60,$AC,$06,$80,$AC,$0C,$AE,$06,$80,$AE,$0C<br />
dc.b $AF,$06,$E3<br />
MusCred_PSG1: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG1)<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$F4,$E6,$FE,$F5,$01,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $AE,$B3,$06,$AC,$0C,$AE,$AE,$B3,$06,$80,$B3,$AB<br />
dc.b $0C,$AE,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $F5,$0B,$80,$04,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$20,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$F5,$00,$E8,$06,$E9,$F4,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$80,$C2,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$04,$80,$C2,$80,$0C,$C2,$80,$60,$F5,$08,$E9<br />
dc.b $04,$EC,$02,$E8,$06<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F0,$EC,$FF,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $E9,$18,$EC,$02,$B5,$30,$B3,$18,$B5,$0C,$B3,$B1<br />
dc.b $30,$B6,$EC,$FE,$80,$0C,$B8,$80,$B8,$80,$BA,$80<br />
dc.b $BA,$EC,$03,$C4,$18,$C1,$BD,$BF,$0C,$80,$EC,$FC<br />
dc.b $80,$B8,$80,$B8,$80,$BA,$18,$08,$B8,$04,$E9,$F4<br />
dc.b $EC,$01,$F5,$05<br />
- dc.b $80,$60<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$C8,$12,$80,$06,$C8,$80,$C6,$12,$C8,$C6<br />
dc.b $0C,$C1,$18,$C5,$C8,$CB,$80,$0C,$CA,$80,$CA,$12<br />
dc.b $C9,$CA,$06,$80,$09,$E9,$30,$EC,$FC,$F6<br />
dc.w z80_ptr(MusCreditsE770)<br />
dc.b $F2<br />
MusCreditsE618: dc.b $80,$0C,$BD,$06,$12,$18,$C4,$06,$12,$0C,$80,$C2<br />
dc.b $06,$12,$18,$C4,$06,$12,$0C,$E3<br />
MusCreditsE62C: dc.b $80,$60,$80,$0C,$C2,$80,$C2,$80,$E3<br />
MusCreditsE635: dc.b $AC,$0C,$AF,$06,$B3,$0C,$AC,$AC,$06,$80,$AC,$0C<br />
dc.b $AF,$06,$B5,$0C,$AC,$06,$80,$06,$B1,$0C,$B6,$06<br />
dc.b $AE,$0C,$B1,$B3,$B6,$06,$80,$B6,$AA,$0C,$AF,$AF<br />
dc.b $B5,$06,$AC,$0C,$AF,$B2,$B5,$06,$80,$B5,$AE,$0C<br />
dc.b $B2,$E3<br />
MusCred_PSG2: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG2)<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$0C,$EC,$FD,$F5,$04,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
dc.b $F0,$03,$02,$01,$05<br />
dc.b $F5,$0A,$E9,$E8,$EC,$02,$80,$30,$80,$80,$BD,$06<br />
dc.b $BF,$C6,$C2,$1E,$80,$60,$80,$06,$C6,$80,$C6,$C4<br />
dc.b $80,$C4,$80,$C3,$80,$C3,$80,$BF,$03,$80,$BF,$80<br />
dc.b $09,$80,$06,$80,$30,$80,$80,$BD,$06,$BF,$C6,$C2<br />
dc.b $1E,$80,$60,$F4<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$00,$EC,$FE,$E8,$06,$80,$60,$80,$0C,$BF,$80<br />
dc.b $BF,$80,$BF,$80,$BF,$80,$60,$80,$0C,$BF,$80,$BF<br />
dc.b $80,$BF,$04,$80,$BF,$80,$0C,$BF,$80,$60,$EC,$02<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F4,$EC,$FF,$E9,$E8,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $E9,$18,$EC,$02,$B1,$30,$B0,$18,$B1,$0C,$B0,$AE<br />
dc.b $30,$B1,$EC,$FE,$80,$0C,$B5,$80,$B5,$80,$B6,$80<br />
dc.b $B6,$EC,$03,$80,$B1,$80,$B1,$80,$B1,$80,$B1,$EC<br />
dc.b $FC,$80,$B1,$80,$B1,$80,$B1,$18,$08,$B1,$04,$EC<br />
dc.b $01,$E9,$18,$F5,$05,$E1,$01,$80,$60,$80,$80,$80<br />
dc.b $80,$80,$80,$0C,$CD,$06,$80,$D4,$CD,$80,$0C,$CD<br />
dc.b $06,$80,$D4,$CD,$80,$18,$80,$54,$E9,$24,$EC,$FD<br />
MusCreditsE770: dc.b $F5,$03,$80,$06<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$FF<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$01<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusCred_PSG3: dc.b $F3,$E7,$80,$60,$F5,$02<br />
- dc.b $C6,$0C,$0C,$0C,$06,$06,$0C,$0C,$06,$06,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$1F<br />
dc.w z80_ptr(-)<br />
dc.b $0C,$F5,$03,$C6,$F5,$02<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $06,$06,$06,$06<br />
dc.b $F7,$01,$04<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$04,$EC,$02<br />
- dc.b $E8,$03,$C6,$06,$06,$E8,$00,$0C<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$02,$EC,$FD<br />
- dc.b $80,$0C,$C6,$06,$80,$07,$C6,$06,$80,$11,$C6,$0C<br />
dc.b $80,$06,$C6,$0C,$80,$06,$C6,$80<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$02<br />
- dc.b $C6,$0C,$08,$04<br />
dc.b $F7,$00,$18<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$0C,$0C,$08,$04<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$04,$EC,$02<br />
- dc.b $C6,$06,$06,$0C<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EC,$FF<br />
- dc.b $F5,$01,$C6,$0C,$F5,$02,$EC,$FF,$08,$F5,$01,$EC<br />
dc.b $01,$04<br />
dc.b $F7,$00,$27<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$FF,$F5,$04<br />
- dc.b $E8,$03,$C6,$0C,$E8,$0C,$0C<br />
dc.b $F7,$00,$1E<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$03,$C6,$06,$E8,$0E,$12,$E8,$03,$0C,$E8,$0F<br />
dc.b $0C,$F2<br />
MusCred_DAC: dc.b $82,$06,$82,$82,$82,$82,$0C,$06,$0C,$06,$0C,$0C<br />
dc.b $0C<br />
- dc.b $81,$18,$82<br />
dc.b $F7,$00,$0E<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C<br />
- dc.b $82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EA,$EA,$F8<br />
dc.w z80_ptr(MusCreditsEA6E)<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$82,$06,$82,$82,$82,$81,$0C,$82,$06,$82<br />
dc.b $81,$81,$82,$82,$82,$82<br />
- dc.b $81,$18,$82,$81,$82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$82,$82,$82,$06,$82,$8C,$8C,$8D,$8D<br />
dc.b $8E,$8E,$F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$18,$82,$0C,$81,$18,$82,$0C,$82,$82,$06,$82<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$0C,$82,$82,$82,$8D,$06,$8D,$8E,$8E,$82,$06<br />
dc.b $82,$8D,$0C,$82,$0C,$82,$06,$82,$80,$82,$82,$0C<br />
MusCreditsE8E5: dc.b $82,$0C,$82,$82,$06,$82,$8D,$8D<br />
- dc.b $81,$0C,$8F,$06,$90,$82,$0C,$90,$06,$91,$81,$0C<br />
dc.b $8F,$06,$91,$82,$0C,$8F,$06,$91<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$8F,$06,$91,$82,$0C,$8F,$06,$91,$8C,$06<br />
dc.b $03,$03,$8D,$06,$8D,$8D,$8E,$8E,$8E,$81,$06,$0C<br />
dc.b $82,$06,$80,$0C,$81,$82,$8E,$82,$06,$82,$82,$82<br />
- dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$12,$8C,$06<br />
dc.b $82,$0C,$83,$06,$81,$80<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$06,$82,$06<br />
dc.b $81,$0C,$06,$82,$0C,$08,$04,$EA,$CD,$82,$30,$82<br />
dc.b $0C,$82,$82,$82,$08,$04,$F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$04,$82,$08,$04<br />
dc.b $08,$04,$04,$04,$04,$08,$04,$EA,$C5<br />
- dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82,$0C,$06<br />
dc.b $06,$81,$0C,$82,$06,$82,$82,$82,$8D,$0C,$82,$0C<br />
dc.b $0C,$0C,$06,$06<br />
- dc.b $81,$0C,$81,$82,$80,$81,$81,$82,$83<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$82,$82,$82,$82,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $81,$06,$81,$82,$82,$81,$82,$81,$81,$82,$02,$82<br />
dc.b $04,$81,$0C,$06,$82,$0C,$06,$06,$81,$18,$82,$0C<br />
dc.b $81,$81,$18,$82,$81,$06,$81,$12,$82,$0C,$81,$81<br />
dc.b $18,$82,$81,$18,$82,$0C,$81,$81,$18,$82,$81,$06<br />
dc.b $81,$12,$82,$0C,$0C,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $82,$02,$04,$81,$0C,$06,$0C,$82,$02,$04,$81,$0C<br />
dc.b $06,$0C,$82,$06,$82,$82,$82,$EA,$C0,$81,$0C,$82<br />
dc.b $81,$82,$81,$82,$81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$0F<br />
dc.w z80_ptr(-)<br />
dc.b $81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$13<br />
dc.w z80_ptr(-)<br />
dc.b $82,$08,$0C,$04,$81,$0C,$82,$81,$82,$81,$0C,$82<br />
dc.b $81,$06,$80,$02,$82,$82,$82,$09,$82,$03<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$06,$80,$02,$82,$82,$82,$09,$82<br />
dc.b $03<br />
dc.b $F7,$01,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$82,$81,$06,$82,$12,$82,$0C,$81<br />
dc.b $F2<br />
MusCreditsEA6E: dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$83,$E3<br />
MusCreditsEA84: dc.b $81,$18,$82,$0C,$81,$18,$0C,$82,$81,$81,$18,$82<br />
dc.b $0C,$81,$12,$81,$82,$18,$81,$82,$0C,$81,$18,$0C<br />
dc.b $82,$81,$E3<br />
MusCreditsEA9F: dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$0C,$82,$04,$81<br />
dc.b $0C,$82,$81,$81,$08,$0C,$04,$82,$0C,$81,$08,$0C<br />
dc.b $82,$04,$81,$0C,$82,$82,$08,$04,$E3,$81,$06,$80<br />
dc.b $03,$81,$81,$06,$82,$81,$06,$80,$03,$81,$81,$06<br />
dc.b $82,$03,$82,$81,$06,$80,$03,$81,$81,$06,$82,$E3<br />
MusCred_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$01,$1F,$1F,$FF,$0F,$17,$27,$28,$80<br />
dc.b $08,$09,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$25,$0E,$30,$84<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$0B,$0D,$19,$0B,$80,$80<br />
dc.b $08,$0A,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$24,$13,$2D,$80<br />
dc.b $3D,$01,$51,$21,$01,$12,$14,$14,$0F,$0A,$05,$05<br />
dc.b $05,$00,$00,$00,$00,$2B,$2B,$2B,$1B,$19,$80,$80,$80<br />
dc.b $04,$57,$70,$02,$50,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$06,$00,$0A,$0A,$00,$00,$0F,$0F,$1A,$10,$80,$80<br />
dc.b $35,$01,$13,$01,$00,$1F,$18,$1D,$19,$00,$06,$09<br />
dc.b $0D,$00,$02,$00,$03,$00,$15,$06,$16,$1E,$83,$80,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1A,$16,$88,$88<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$14,$0F,$37,$80<br />
dc.b $3B,$0F,$01,$06,$02,$DF,$1F,$1F,$DF,$0C,$0A,$00<br />
dc.b $03,$0F,$00,$00,$01,$F3,$55,$05,$5C,$22,$22,$20,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1C,$14,$84,$80<br />
dc.b $3A,$69,$50,$70,$60,$1C,$1A,$18,$18,$10,$02,$0C<br />
dc.b $09,$08,$06,$06,$03,$F9,$06,$56,$06,$28,$14,$15,$00<br />
dc.b $3D,$00,$02,$01,$01,$4C,$50,$0F,$12,$0C,$00,$02<br />
dc.b $05,$01,$00,$00,$00,$28,$2A,$29,$19,$1A,$06,$00,$00<br />
dc.b $2C,$71,$31,$71,$31,$1F,$1F,$16,$16,$00,$00,$0F<br />
dc.b $0F,$00,$00,$0F,$0F,$00,$00,$FA,$FA,$15,$14,$00,$00<br />
dc.b $18,$37,$31,$32,$31,$9E,$1C,$DC,$9C,$0D,$04,$06<br />
dc.b $01,$08,$03,$0A,$05,$B6,$36,$B6,$28,$2C,$14,$22,$00<br />
dc.b $3D,$01,$02,$02,$02,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$24,$18,$18,$18,$1C,$82,$82,$82<br />
dc.b $32,$71,$33,$0D,$01,$5F,$5F,$99,$94,$05,$05,$05<br />
dc.b $07,$02,$02,$02,$02,$11,$11,$11,$72,$23,$26,$2D,$80<br />
dc.b $3A,$32,$52,$01,$31,$1F,$1F,$1F,$18,$01,$00,$1F<br />
dc.b $00,$00,$00,$0F,$00,$5A,$03,$0F,$1A,$3B,$4F,$30,$00<br />
dc.b $3C,$42,$32,$41,$41,$12,$12,$12,$12,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$06,$06,$08,$08,$24,$24,$08,$08<br />
dc.b $31,$34,$30,$35,$31,$DF,$9F,$DF,$9F,$0C,$0C,$07<br />
dc.b $09,$07,$07,$07,$08,$2F,$1F,$1F,$2F,$17,$14,$32,$80<br />
dc.b $3D,$01,$01,$01,$01,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$20,$1A,$1A,$1A,$19,$84,$84,$84<br />
dc.b $24,$70,$30,$74,$38,$12,$1F,$1F,$1F,$05,$05,$03<br />
dc.b $03,$05,$05,$03,$03,$36,$26,$2C,$2C,$0A,$06,$08,$08<br />
dc.b $3A,$01,$01,$01,$02,$8D,$07,$07,$52,$09,$00,$00<br />
dc.b $03,$01,$02,$02,$00,$5F,$0F,$0F,$2F,$18,$18,$22,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$03,$03,$08,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$17,$20,$28,$80<br />
dc.b $20,$7A,$00,$31,$00,$9F,$DC,$D8,$DF,$10,$04,$0A<br />
dc.b $04,$0F,$08,$08,$08,$5F,$BF,$5F,$BF,$14,$17,$2B,$80<br />
dc.b $3A,$61,$51,$08,$02,$5D,$5D,$5D,$50,$04,$1F,$0F<br />
dc.b $1F,$00,$00,$00,$00,$1F,$0F,$5F,$0F,$22,$22,$1E,$80<br />
dc.b $02,$01,$02,$55,$04,$92,$8E,$8D,$54,$0D,$00,$0C<br />
dc.b $03,$00,$00,$00,$00,$FF,$0F,$2F,$5F,$16,$1D,$2A,$80<br />
dc.b $02,$75,$73,$71,$31,$1F,$96,$58,$9F,$01,$03,$1B<br />
dc.b $08,$01,$01,$04,$05,$FF,$3F,$2F,$2F,$24,$30,$29,$80<br />
dc.b $20,$66,$60,$65,$60,$DF,$9F,$DF,$1F,$00,$09,$06<br />
dc.b $0C,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$1C,$16,$3A,$80<br />
dc.b $0D,$32,$06,$08,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$86,$80,$8D<br />
dc.b $38,$3A,$11,$0A,$02,$D4,$50,$14,$0E,$05,$02,$08<br />
dc.b $88,$00,$00,$00,$00,$99,$09,$09,$1A,$2D,$19,$2C,$86<br />
dc.b $0D,$32,$02,$04,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$8B,$86,$93<br />
dc.b $3A,$20,$60,$23,$01,$1E,$1F,$1F,$1F,$0A,$0B,$0A<br />
dc.b $0A,$05,$0A,$07,$08,$A4,$96,$85,$78,$21,$28,$25,$00<br />
dc.b $3A,$32,$32,$56,$42,$8D,$15,$4F,$52,$06,$07,$08<br />
dc.b $04,$02,$00,$00,$00,$18,$28,$18,$28,$19,$2A,$20,$00<br />
dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$19,$13,$37,$80<br />
dc.b $3D,$01,$02,$02,$02,$14,$8C,$0E,$0E,$08,$02,$05<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$1A,$80,$80,$80<br />
; end of Mus_Credits<br />
<br />
; ------------------------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ------------------------------------------------------------------------------------------<br />
; WARNING the sound driver treats certain sounds specially<br />
; going by the ID of the sound.<br />
; SndID_Ring, SndID_RingLeft, SndID_Gloop, SndID_SpindashRev<br />
; are referenced by the sound driver directly.<br />
; If needed you can change this in s2.sounddriver.asm<br />
<br />
<br />
; NOTE: the exact order of this list determines the priority of each sound, since it determines the sound's SndID.<br />
; a sound can get dropped if a higher-priority sound is already playing.<br />
; the rules for sound priority are currently unknown, but you can generally swap pointer lines around to resolve priority conflicts.<br />
; loc_FEE91: SoundPoint:<br />
SoundIndex:<br />
SndPtr_Jump: rom_ptr_z80 Sound20 ; jumping sound<br />
SndPtr_Checkpoint: rom_ptr_z80 Sound21 ; checkpoint ding-dong sound<br />
SndPtr_SpikeSwitch: rom_ptr_z80 Sound22 ; spike switch sound<br />
SndPtr_Hurt: rom_ptr_z80 Sound23 ; hurt sound<br />
SndPtr_Skidding: rom_ptr_z80 Sound24 ; skidding sound<br />
SndPtr_BlockPush: rom_ptr_z80 Sound25 ; block push sound<br />
SndPtr_HurtBySpikes: rom_ptr_z80 Sound26 ; spiky impalement sound<br />
SndPtr_Sparkle: rom_ptr_z80 Sound27 ; sparkling sound<br />
SndPtr_Beep: rom_ptr_z80 Sound28 ; short beep<br />
SndPtr_Bwoop: rom_ptr_z80 Sound29 ; bwoop<br />
SndPtr_Splash: rom_ptr_z80 Sound2A ; splash sound<br />
SndPtr_Swish: rom_ptr_z80 Sound2B ; swish<br />
SndPtr_BossHit: rom_ptr_z80 Sound2C ; boss hit<br />
SndPtr_InhalingBubble: rom_ptr_z80 Sound2D ; inhaling a bubble<br />
SndPtr_ArrowFiring:<br />
SndPtr_LavaBall: rom_ptr_z80 Sound2E ; arrow firing<br />
SndPtr_Shield: rom_ptr_z80 Sound2F ; shield sound<br />
SndPtr_LaserBeam: rom_ptr_z80 Sound30 ; laser beam<br />
SndPtr_Zap: rom_ptr_z80 Sound31 ; zap<br />
SndPtr_Drown: rom_ptr_z80 Sound32 ; drownage<br />
SndPtr_FireBurn: rom_ptr_z80 Sound33 ; fire + burn<br />
SndPtr_Bumper: rom_ptr_z80 Sound34 ; bumper bing<br />
SndPtr_Ring:<br />
SndPtr_RingRight: rom_ptr_z80 Sound35 ; ring sound<br />
SndPtr_SpikesMove: rom_ptr_z80 Sound36<br />
SndPtr_Rumbling: rom_ptr_z80 Sound37 ; rumbling<br />
rom_ptr_z80 Sound38<br />
SndPtr_Smash: rom_ptr_z80 Sound39 ; smash/breaking<br />
rom_ptr_z80 Sound3A ; nondescript ding<br />
SndPtr_DoorSlam: rom_ptr_z80 Sound3B ; door slamming shut<br />
SndPtr_SpindashRelease: rom_ptr_z80 Sound3C ; spindash unleashed<br />
SndPtr_Hammer: rom_ptr_z80 Sound3D ; slide-thunk<br />
SndPtr_Roll: rom_ptr_z80 Sound3E ; rolling sound<br />
SndPtr_ContinueJingle: rom_ptr_z80 Sound3F ; got continue<br />
SndPtr_CasinoBonus: rom_ptr_z80 Sound40 ; short bonus ding<br />
SndPtr_Explosion: rom_ptr_z80 Sound41 ; badnik bust<br />
SndPtr_WaterWarning: rom_ptr_z80 Sound42 ; warning ding-ding<br />
SndPtr_EnterGiantRing: rom_ptr_z80 Sound43 ; special stage ring flash (unused)<br />
SndPtr_BossExplosion: rom_ptr_z80 Sound44 ; thunk<br />
SndPtr_TallyEnd: rom_ptr_z80 Sound45 ; cha-ching<br />
SndPtr_RingSpill: rom_ptr_z80 Sound46 ; losing rings<br />
rom_ptr_z80 Sound47 ; chain pull chink-chink<br />
SndPtr_Flamethrower: rom_ptr_z80 Sound48 ; flamethrower<br />
SndPtr_Bonus: rom_ptr_z80 Sound49 ; bonus pwoieeew (unused)<br />
SndPtr_SpecStageEntry: rom_ptr_z80 Sound4A ; special stage entry<br />
SndPtr_SlowSmash: rom_ptr_z80 Sound4B ; slower smash/crumble<br />
SndPtr_Spring: rom_ptr_z80 Sound4C ; spring boing<br />
SndPtr_Blip: rom_ptr_z80 Sound4D ; selection blip<br />
SndPtr_RingLeft: rom_ptr_z80 Sound4E ; another ring sound (only plays in the left speaker?)<br />
SndPtr_Signpost: rom_ptr_z80 Sound4F ; signpost spin sound<br />
SndPtr_CNZBossZap: rom_ptr_z80 Sound50 ; mosquito zapper<br />
rom_ptr_z80 Sound51<br />
rom_ptr_z80 Sound52<br />
SndPtr_Signpost2P: rom_ptr_z80 Sound53<br />
SndPtr_OOZLidPop: rom_ptr_z80 Sound54 ; OOZ lid pop sound<br />
SndPtr_SlidingSpike: rom_ptr_z80 Sound55<br />
SndPtr_CNZElevator: rom_ptr_z80 Sound56<br />
SndPtr_PlatformKnock: rom_ptr_z80 Sound57<br />
SndPtr_BonusBumper: rom_ptr_z80 Sound58 ; CNZ bonusy bumper sound<br />
SndPtr_LargeBumper: rom_ptr_z80 Sound59 ; CNZ baaang bumper sound<br />
SndPtr_Gloop: rom_ptr_z80 Sound5A ; CNZ gloop / water droplet sound<br />
SndPtr_PreArrowFiring: rom_ptr_z80 Sound5B<br />
SndPtr_Fire: rom_ptr_z80 Sound5C<br />
SndPtr_ArrowStick: rom_ptr_z80 Sound5D ; chain clink<br />
SndPtr_Helicopter:<br />
SndPtr_WingFortress: rom_ptr_z80 Sound5E ; helicopter<br />
SndPtr_SuperTransform: rom_ptr_z80 Sound5F<br />
SndPtr_SpindashRev: rom_ptr_z80 Sound60 ; spindash charge<br />
SndPtr_Rumbling2: rom_ptr_z80 Sound61 ; rumbling<br />
SndPtr_CNZLaunch: rom_ptr_z80 Sound62<br />
SndPtr_Flipper: rom_ptr_z80 Sound63 ; CNZ blooing bumper<br />
SndPtr_HTZLiftClick: rom_ptr_z80 Sound64 ; HTZ track click sound<br />
SndPtr_Leaves: rom_ptr_z80 Sound65 ; kicking up leaves sound<br />
SndPtr_MegaMackDrop: rom_ptr_z80 Sound66 ; leaf splash?<br />
SndPtr_DrawbridgeMove: rom_ptr_z80 Sound67<br />
SndPtr_QuickDoorSlam: rom_ptr_z80 Sound68 ; door slamming quickly (seems unused)<br />
SndPtr_DrawbridgeDown: rom_ptr_z80 Sound69<br />
SndPtr_LaserBurst: rom_ptr_z80 Sound6A ; robotic laser burst<br />
SndPtr_Scatter:<br />
SndPtr_LaserFloor: rom_ptr_z80 Sound6B ; scatter<br />
SndPtr_Teleport: rom_ptr_z80 Sound6C<br />
SndPtr_Error: rom_ptr_z80 Sound6D ; error sound<br />
SndPtr_MechaSonicBuzz: rom_ptr_z80 Sound6E ; silver sonic buzz saw<br />
SndPtr_LargeLaser: rom_ptr_z80 Sound6F<br />
SndPtr_OilSlide: rom_ptr_z80 Sound70<br />
SndPtr__End:<br />
<br />
; There are many non-relative pointers in these sound effects,<br />
; so the sounds shouldn't simply be BINCLUDE'd.<br />
; They could be included as separate .asm files using "include" instead of "binclude",<br />
; but I wanted to minimize the number of included asm files.<br />
<br />
; some comments on what the various script commands do (after the header):<br />
; 0x00-0x7F sets the note duration (of the previous note and following notes)<br />
; 0x81-0xDF plays a note (the valid range may be smaller for PSG or DAC)<br />
; 0x80 plays silence<br />
; 0xE0-0xFF does special things. I won't list them here... search for "Coordination flags" sonic 2.<br />
<br />
; the FM voices (poorly named "ssamp" or "samples" below)<br />
; are 25 bytes each and go directly to YM2612 registers.<br />
; they can be hard to edit (there's an art to it)<br />
; but search for sonic "Voice editing" for more info if you want to try.<br />
<br />
; jumping sound<br />
Sound20: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$F400<br />
+ dc.b $F5,$00,$9E,$05,$F0,$02,$01,$F8,$65,$A3,$15,$F2<br />
<br />
; checkpoint ding-dong sound<br />
Sound21: dc.w z80_ptr(ssamp21),$0101<br />
dc.w $8005,z80_ptr(+),$0001<br />
ssamp21: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
+ dc.b $EF,$00,$BD,$06,$BA,$16,$F2<br />
<br />
; spike switch sound<br />
Sound22: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C0,$04,$CA,$04<br />
- dc.b $C0,$01,$EC<br />
dc.w $01F7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; hurt sound<br />
Sound23: dc.w z80_ptr(ssamp23),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B0,$07,$E7,$AD<br />
- dc.b $01,$E6<br />
dc.w $01F7,$002F,z80_ptr(-)<br />
dc.b $F2<br />
ssamp23: dc.b $30,$30,$30,$30,$30,$9E,$DC,$D8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$14,$14,$3C,$80<br />
<br />
; skidding sound<br />
Sound24: dc.w $0000,$0102 ; sound header... no sample and 2 script entries<br />
dc.w $80A0,z80_ptr(+),$F400 ; entry 1 header<br />
dc.w $80C0,z80_ptr(++),$F400 ; entry 2 header<br />
+ dc.b $F5,$00,$AF,$01,$80,$AF,$80,$03 ; script entry 1<br />
- dc.b $AF,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 1 end<br />
+ dc.b $F5,$00,$80,$01,$AD,$80,$AD,$80,$03 ; script entry 2<br />
- dc.b $AD,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 2 end<br />
<br />
; block push sound<br />
Sound25: dc.w z80_ptr(ssamp25),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$01,$8B,$0A,$80,$02,$F2<br />
ssamp25: dc.b $FA,$21,$10,$30,$32,$2F,$2F,$1F,$2F,$05,$09,$08<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
; spiky impalement sound<br />
Sound26: dc.w z80_ptr(ssamp26),$0101<br />
dc.w $8005,z80_ptr(+),$F200<br />
+ dc.b $EF,$00,$F0,$01,$01,$10,$FF,$CF,$05,$D7,$25,$F2<br />
ssamp26: dc.b $3B,$3C,$30,$39,$31,$DF,$1F,$1F,$DF,$04,$04,$05<br />
dc.b $01,$04,$04,$04,$02,$FF,$1F,$0F,$AF,$29,$0F,$20,$80<br />
<br />
; sparkling sound<br />
Sound27: dc.w z80_ptr(ssamp27),$0101<br />
dc.w $8004,z80_ptr(+),$0C1C<br />
+ dc.b $EF,$00,$C1,$05,$C4,$05,$C9,$2B,$F2<br />
ssamp27: dc.b $07,$73,$33,$33,$73,$0F,$19,$14,$1A,$0A,$0A,$0A<br />
dc.b $0A,$0A,$0A,$0A,$0A,$57,$57,$57,$57,$00,$00,$00,$00<br />
<br />
; short beep<br />
Sound28: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$E803<br />
+ dc.b $F5,$04,$CB,$04,$F2<br />
<br />
; bwoop<br />
Sound29: dc.w $0000,$0101<br />
dc.w $80A0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$E6,$35,$8E,$06,$F2<br />
<br />
; splash sound<br />
Sound2A: dc.w z80_ptr(ssamp2A),$0102<br />
dc.w $80C0,z80_ptr(+),$0000<br />
dc.w $8005,z80_ptr(++),$0003<br />
+ dc.b $F5,$00,$F3,$E7,$C2,$05,$C6,$05,$E7<br />
- dc.b $07,$EC,$01<br />
dc.w $E7F7,$000F,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$A6,$14,$F2<br />
ssamp2A: dc.b $00,$00,$02,$03,$00,$D9,$1F,$DF,$1F,$12,$14,$11<br />
dc.b $0F,$0A,$0A,$00,$0D,$FF,$FF,$FF,$FF,$22,$27,$07,$80<br />
<br />
; swish<br />
Sound2B: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$C6,$03,$80,$03,$C6,$01,$E7<br />
- dc.b $01,$EC,$01<br />
dc.w $E7F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; boss hit<br />
Sound2C: dc.w z80_ptr(smashsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$0C,$01<br />
- dc.b $81,$0A,$E6<br />
dc.w $10F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
smashsamp: dc.b $F9,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
<br />
; inhaling a bubble<br />
Sound2D: dc.w z80_ptr(ssamp2D),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$21,$6E,$A6,$07<br />
dc.b $80,$06,$F0,$01,$01,$44,$1E,$AD,$08,$F2<br />
ssamp2D: dc.b $35,$05,$08,$09,$07,$1E,$0D,$0D,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$1F,$2F,$1F,$15,$12,$12,$80<br />
<br />
; arrow firing<br />
Sound2E: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$C6,$01,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp2E: dc.b $FA,$02,$00,$03,$05,$12,$0F,$11,$13,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$2F,$0E,$1A,$80<br />
<br />
; shield sound<br />
Sound2F: dc.w z80_ptr(ssamp2F),$0101<br />
dc.w $8005,z80_ptr(+),$0C00<br />
+ dc.b $EF,$00,$80,$01,$A3,$05,$E7,$A4,$26,$F2<br />
ssamp2F: dc.b $30,$30,$30,$30,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$04,$14,$2C,$80<br />
<br />
; laser beam<br />
Sound30: dc.w z80_ptr(ssamp30),$0101 ; sound header... a voice and 1 script entry<br />
dc.w $8005,z80_ptr(+),$FB05 ; script entry header<br />
+ dc.b $EF,$00,$DF,$7F ; script start<br />
- dc.b $DF,$02,$E6 ; script continued<br />
dc.w $01F7,$001B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script end<br />
ssamp30: dc.b $83,$1F,$1F,$15,$1F,$1F,$1F,$1F,$1F,$00,$00,$00 ; voice<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$0B,$01,$16,$82 ; (fixed length)<br />
<br />
; zap<br />
Sound31: dc.w z80_ptr(ssamp31),$0101<br />
dc.w $8005,z80_ptr(+),$FB02<br />
+ dc.b $EF,$00,$B3,$05,$80,$01,$B3,$09,$F2<br />
ssamp31: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$05,$34,$10,$87<br />
<br />
; drownage<br />
Sound32: dc.w z80_ptr(ssamp32),$0102<br />
dc.w $8004,z80_ptr(++),$0C04<br />
dc.w $8005,z80_ptr(+),$0E02<br />
+ dc.b $EF,$00,$F0,$01,$01,$83,$0C<br />
- dc.b $8A,$05,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $80,$06,$EF,$00,$F0,$01,$01,$6F,$0E<br />
- dc.b $8D,$04,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp32: dc.b $35,$14,$04,$1A,$09,$0E,$11,$10,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$4F,$2F,$4F,$2F,$12,$12,$80<br />
<br />
; fire + burn<br />
Sound33: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$A7,$25,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; bumper bing<br />
Sound34: dc.w z80_ptr(ssamp34),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $8002,z80_ptr(+++),$0002<br />
+ dc.b $EF,$00,$F6<br />
dc.w z80_ptr(Sound34_3)<br />
+ dc.b $EF,$00,$E1,$07,$80,$01<br />
Sound34_3:<br />
dc.b $BA,$20,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
ssamp34: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$1F,$2B,$80,$80<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; ring sound<br />
Sound35: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$40,$C1,$05,$C4,$05,$C9,$1B,$F2<br />
<br />
<br />
Sound36: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C1,$07<br />
- dc.b $D0,$01,$EC<br />
dc.w $01F7,$000C,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; rumbling<br />
Sound37: dc.w z80_ptr(ssamp37),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$20,$08<br />
- dc.b $8B<br />
dc.w $0AF7,$0008,z80_ptr(-)<br />
- dc.b $8B,$10,$E6<br />
dc.w $03F7,$0009,z80_ptr(-)<br />
dc.b $F2<br />
ssamp37: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
<br />
Sound38: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$B4,$08<br />
- dc.b $B0,$02,$EC<br />
dc.w $01F7,$0003,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; smash/breaking<br />
Sound39: dc.w z80_ptr(smashsamp),$0104<br />
dc.w $8002,z80_ptr(+),$1000<br />
dc.w $8004,z80_ptr(+++),$0000<br />
dc.w $8005,z80_ptr(++),$1000<br />
dc.w $80C0,z80_ptr(s39s4),$0000<br />
+ dc.b $E0,$40,$80,$02,$F6<br />
dc.w z80_ptr(++)<br />
+ dc.b $E0,$80,$80,$01<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
s39s4: dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; nondescript ding<br />
Sound3A: dc.w z80_ptr(ssamp3A),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$AE,$08,$F2<br />
ssamp3A: dc.b $1C,$2E,$0F,$02,$02,$1F,$1F,$1F,$1F,$18,$14,$0F<br />
dc.b $0E,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$20,$1B,$80,$80<br />
<br />
; door slamming shut<br />
Sound3B: dc.w z80_ptr(ssamp3B),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$80,$A0,$06,$F2<br />
ssamp3B: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; spindash unleashed<br />
Sound3C: dc.w z80_ptr(ssamp3C),$0102<br />
dc.w $8005,z80_ptr(+),$9000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$F2<br />
+ dc.b $F5,$07,$80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$4F,$F2<br />
ssamp3C: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
<br />
; slide-thunk<br />
Sound3D: dc.w z80_ptr(ssamp3D),$0102<br />
dc.w $8005,z80_ptr(+),$100A<br />
dc.w $8004,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$60,$01,$A7,$08,$F2<br />
+ dc.b $80,$08,$EF,$01,$84,$22,$F2<br />
ssamp3D: dc.b $FA,$21,$19,$3A,$30,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
dc.b $FA,$31,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$1F,$2F,$2F,$0D,$01,$00,$80<br />
<br />
; rolling sound<br />
Sound3E: dc.w z80_ptr(ssamp3E),$0101<br />
dc.w $8004,z80_ptr(+),$0C05<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$09,$FF,$CA,$25,$F4<br />
- dc.b $E7,$E6,$01,$D0<br />
dc.w $02F7,$002A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3E: dc.b $3C,$00,$02,$44,$02,$1F,$1F,$1F,$15,$00,$00,$1F<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0D,$28,$00,$00<br />
<br />
; got continue<br />
Sound3F: dc.w z80_ptr(ssamp3F),$0103<br />
dc.w $8002,z80_ptr(+),$F406<br />
dc.w $8004,z80_ptr(++),$F406<br />
dc.w $8005,z80_ptr(+++),$F406<br />
+ dc.b $EF,$00,$C9,$07,$CD,$D0,$CB,$CE,$D2,$CD,$D0,$D4,$CE,$D2,$D5<br />
- dc.b $D0,$07,$D4,$D7,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$80,$07,$CD,$15,$CE,$D0,$D2<br />
- dc.b $D4,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$C9,$15,$CB,$CD,$CE<br />
- dc.b $D0,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3F: dc.b $14,$25,$36,$33,$11,$1F,$1F,$1F,$1F,$15,$1C,$18<br />
dc.b $13,$0B,$0D,$08,$09,$0F,$8F,$9F,$0F,$24,$0A,$05,$80<br />
<br />
; short bonus ding<br />
Sound40: dc.w z80_ptr(ssamp3F),$0102<br />
dc.w $8005,z80_ptr(++),$0008<br />
dc.w $8004,z80_ptr(+),$0008<br />
+ dc.b $E1,$03,$80,$02<br />
+ dc.b $EF,$00,$C4,$16,$F2<br />
<br />
; badnik bust<br />
Sound41: dc.w z80_ptr(ssamp41),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0002<br />
+ dc.b $F0,$03,$01,$72,$0B,$EF,$00,$BA,$16,$F2<br />
+ dc.b $F5,$01,$F3,$E7,$B0,$1B,$F2<br />
ssamp41: dc.b $3C,$0F,$03,$01,$01,$1F,$1F,$1F,$1F,$19,$19,$12<br />
dc.b $0E,$05,$00,$12,$0F,$0F,$FF,$7F,$FF,$00,$00,$80,$80<br />
<br />
; warning ding-ding<br />
Sound42: dc.w z80_ptr(ssamp3F),$0101<br />
dc.w $8005,z80_ptr(+),$0C08<br />
+ dc.b $EF,$00,$BA,$08,$BA,$25,$F2<br />
<br />
; special stage ring flash (unused)<br />
Sound43: dc.w z80_ptr(ssamp43),$0102<br />
dc.w $8004,z80_ptr(+),$0C00<br />
dc.w $8005,z80_ptr(++),$0013<br />
+ dc.b $EF,$01,$80,$01,$A2,$08,$EF,$00,$E7,$AD,$26,$F2<br />
+ dc.b $EF,$02,$F0,$06,$01,$03,$FF,$80,$0A<br />
- dc.b $C3<br />
dc.w $06F7,$0005,z80_ptr(-)<br />
dc.b $C3,$17,$F2<br />
ssamp43: dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$1C,$80<br />
dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$2C,$80<br />
dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$13,$13,$81,$88<br />
<br />
; thunk<br />
Sound44: dc.w z80_ptr(ssamp44),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$8A,$22,$F2<br />
ssamp44: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$4F,$2F,$2F,$0D,$04,$07,$80<br />
<br />
; cha-ching<br />
Sound45: dc.w z80_ptr(ssamp45),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$8A,$08,$80,$02,$8A,$08,$F2<br />
+ dc.b $EF,$01,$80,$12,$C6,$55,$F2<br />
+ dc.b $F5,$02,$F3,$E7,$80,$02,$C2,$05,$C4,$04,$C2,$05,$C4,$04,$F2<br />
ssamp45: dc.b $3B,$03,$02,$02,$06,$18,$1A,$1A,$96,$17,$0A,$0E<br />
dc.b $10,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$39,$28,$80<br />
ringsamp: dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$23,$80,$80<br />
<br />
; losing rings (scatter)<br />
Sound46: dc.w z80_ptr(ringsamp),$0102<br />
dc.w $8004,z80_ptr(+),$0005<br />
dc.w $8005,z80_ptr(++),$0008<br />
+ dc.b $EF,$00,$C6,$02,$05,$05,$05,$05,$05,$05,$3A,$F2<br />
+ dc.b $EF,$00,$80,$02,$C4,$02,$05,$15,$02,$05,$32,$F2<br />
<br />
; chain pull chink-chink<br />
Sound47: dc.w z80_ptr(ssamp47),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$BE,$05,$80,$04,$BE,$04,$80,$04,$F2<br />
ssamp47: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; flamethrower<br />
Sound48: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$25,$F2<br />
<br />
; bonus pwoieeew (unused)<br />
Sound49: dc.w z80_ptr(ssamp49),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$33,$18,$B9,$1A,$F2<br />
ssamp49: dc.b $3B,$0A,$05,$31,$02,$5F,$5F,$5F,$5F,$04,$16,$14<br />
dc.b $0C,$00,$00,$04,$00,$1F,$D8,$6F,$FF,$03,$00,$25,$80<br />
<br />
; special stage entry<br />
Sound4A: dc.w z80_ptr(ssamp4A),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$F0,$01,$01,$5B,$02,$CC,$65,$F2<br />
ssamp4A: dc.b $20,$36,$30,$35,$31,$41,$3B,$49,$4B,$09,$09,$06<br />
dc.b $08,$01,$02,$03,$A9,$0F,$0F,$0F,$0F,$29,$23,$27,$80<br />
<br />
; slower smash/crumble<br />
Sound4B: dc.w z80_ptr(smashsamp),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; spring boing<br />
Sound4C: dc.w z80_ptr(ssamp4C),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$5D,$0F,$B0,$0C,$F4<br />
- dc.b $E7,$E6,$02,$BD<br />
dc.w $02F7,$0019,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4C: dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$16,$13,$30,$80<br />
<br />
; selection blip<br />
Sound4D: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $BB,$02,$F2<br />
<br />
; another ring sound (only plays in the left speaker?)<br />
Sound4E: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8004,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$80,$C1,$04,$C4,$05,$C9,$1B,$F2<br />
<br />
; signpost spin sound<br />
Sound4F: dc.w z80_ptr(ssamp4F),$0102<br />
dc.w $8004,z80_ptr(+),$2703<br />
dc.w $8005,z80_ptr(++),$2700<br />
+ dc.b $80,$04<br />
+ dc.b $EF,$00<br />
- dc.b $B4,$05,$E6<br />
dc.w $02F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4F: dc.b $F4,$06,$0F,$04,$0E,$1F,$1F,$1F,$1F,$00,$0B,$00<br />
dc.b $0B,$00,$05,$00,$08,$0F,$FF,$0F,$FF,$0C,$03,$8B,$80<br />
<br />
; mosquito zapper<br />
Sound50: dc.w z80_ptr(ssamp50),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B3,$04,$80,$01<br />
- dc.b $B4,$04,$80<br />
dc.w $01F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
ssamp50: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$06,$34,$10,$87<br />
<br />
<br />
Sound51: dc.w z80_ptr(ssamp51),$0102<br />
dc.w $80C0,z80_ptr(+),$0001<br />
dc.w $8005,z80_ptr(++),$000B<br />
+ dc.b $F5,$02,$F3,$E4,$B0,$04,$85,$02,$F2<br />
+ dc.b $EF,$00,$E8,$04,$A5,$06,$F2<br />
ssamp51: dc.b $3C,$02,$01,$00,$01,$1F,$1F,$1F,$1F,$00,$19,$0E<br />
dc.b $10,$00,$00,$0C,$0F,$0F,$FF,$EF,$FF,$05,$00,$80,$80<br />
<br />
<br />
Sound52: dc.w z80_ptr(ssamp52),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $F0,$01,$01,$2A,$07,$EF,$00<br />
- dc.b $A5,$03<br />
dc.w $E7F7,$0013,z80_ptr(-)<br />
- dc.b $A5,$03,$E7,$E6<br />
dc.w $02F7,$0013,z80_ptr(-)<br />
dc.b $F2<br />
ssamp52: dc.b $28,$21,$21,$21,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$29,$20,$29,$80<br />
<br />
<br />
Sound53: dc.w z80_ptr(ssamp53),$0101<br />
dc.w $8005,z80_ptr(+),$F503<br />
+ dc.b $EF,$00,$F0,$01,$01,$46,$09,$A7,$14,$E7,$14,$E7,$E6,$04<br />
dc.b $14,$E7,$E6,$04,$14,$E7,$E6,$04,$0A,$E7,$E6,$04,$0A,$F2<br />
ssamp53: dc.b $07,$0A,$0C,$0C,$0C,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$2A,$0F,$0F,$80<br />
<br />
; OOZ lid pop sound<br />
Sound54: dc.w z80_ptr(ssamp54),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0006<br />
+ dc.b $EF,$00,$B6,$15,$F2<br />
+ dc.b $F3,$E7,$F5,$04,$C6,$03,$E7,$C5,$E7<br />
dc.b $C4,$E7,$C3,$E7,$C2,$E7,$C1,$E7,$C0,$F2<br />
ssamp54: dc.b $07,$03,$02,$03,$00,$FF,$6F,$6F,$3F,$12,$14,$11<br />
dc.b $0E,$1A,$0A,$03,$0D,$FF,$FF,$FF,$FF,$03,$07,$07,$80<br />
<br />
<br />
Sound55: dc.w z80_ptr(ssamp55),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$AA,$07,$B6,$15,$F2<br />
ssamp55: dc.b $42,$20,$0E,$0F,$0F,$1F,$1F,$1F,$1F,$1F,$1F,$1F<br />
dc.b $1F,$0F,$0E,$0F,$0E,$0F,$0F,$0F,$0F,$2E,$80,$20,$80<br />
<br />
<br />
Sound56: dc.w z80_ptr(ssamp56),$0101<br />
dc.w $8005,z80_ptr(+),$100E<br />
+ dc.b $EF,$00,$F0,$01,$01,$1E,$FF,$8F,$1C,$F4<br />
- dc.b $E7,$9A<br />
dc.w $05F7,$0009,z80_ptr(-)<br />
- dc.b $E7,$9A,$04,$E6,$02,$E7,$9A,$04,$E6<br />
dc.w $02F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp56: dc.b $0D,$06,$00,$00,$E5,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$27,$80,$80,$80<br />
<br />
<br />
Sound57: dc.w z80_ptr(ssamp57),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$CA,$15,$F2<br />
ssamp57: dc.b $04,$09,$70,$00,$30,$1C,$1F,$DF,$1F,$15,$12,$0B<br />
dc.b $0F,$0C,$0D,$00,$0D,$07,$2F,$FA,$FA,$00,$29,$00,$00<br />
<br />
; CNZ bonusy bumper sound<br />
Sound58: dc.w z80_ptr(ssamp58),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$B3,$06,$B3,$15,$F2<br />
ssamp58: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
<br />
; CNZ baaang bumper sound<br />
Sound59: dc.w z80_ptr(ssamp59),$0103<br />
dc.w $8004,z80_ptr(+),$0000<br />
dc.w $8002,z80_ptr(++),$0002<br />
dc.w $8005,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$E1,$0C,$B5,$14,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
+ dc.b $EF,$00,$B6,$14,$F2<br />
ssamp59: dc.b $32,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $0D,$00,$01,$01,$0C,$00,$23,$C3,$F6,$08,$07,$1C,$03<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; CNZ gloop / water droplet sound<br />
Sound5A: dc.w z80_ptr(ssamp5A),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$7F,$F1,$AA,$0A,$F2<br />
ssamp5A: dc.b $47,$03,$02,$02,$04,$5F,$5F,$5F,$5F,$0E,$1A,$11<br />
dc.b $0A,$09,$0A,$0A,$0A,$4F,$3F,$3F,$3F,$7F,$80,$80,$A3<br />
<br />
<br />
Sound5B: dc.w z80_ptr(ssamp5B),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$02,$A5,$01,$E7<br />
- dc.b $01,$E7,$E6<br />
dc.w $02F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5B: dc.b $38,$0F,$0F,$0F,$0F,$1F,$1F,$1F,$0E,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$1F,$00,$00,$00,$80<br />
<br />
<br />
Sound5C: dc.w z80_ptr(ssamp5C),$0102<br />
dc.w $8004,z80_ptr(+),$000E<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$85,$40<br />
- dc.b $E7,$04,$E6<br />
dc.w $04F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$40<br />
- dc.b $E7,$08,$E6<br />
dc.w $01F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5C: dc.b $FA,$12,$01,$01,$01,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$81,$8E,$14,$80<br />
<br />
; chain clink<br />
Sound5D: dc.w z80_ptr(ssamp5D),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$C0,$04,$F2<br />
ssamp5D: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; helicopter<br />
Sound5E: dc.w z80_ptr(ssamp5E),$0101<br />
dc.w $8002,z80_ptr(+),$1405<br />
+ dc.b $EF,$00<br />
- dc.b $95,$02,$95<br />
dc.w $01F7,$0013,z80_ptr(-)<br />
- dc.b $95,$02,$95,$01,$E6<br />
dc.w $01F7,$001B,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5E: dc.b $35,$30,$44,$40,$51,$1F,$1F,$1F,$1F,$10,$00,$13<br />
dc.b $15,$1F,$00,$1F,$1A,$7F,$0F,$7F,$5F,$02,$A8,$80,$80<br />
<br />
<br />
Sound5F: dc.w z80_ptr(ssamp5F),$0103<br />
dc.w $8005,z80_ptr(s5Fs1),$0000<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
s5Fs1 dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$E6,$0A,$80<br />
dc.b $06,$EF,$01,$F0,$01,$01,$11,$FF,$A2,$28<br />
- dc.b $E7,$03,$E6<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs2 dc.b $80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$1D<br />
- dc.b $E7,$07,$EC<br />
dc.w $01F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs3 dc.b $80,$16,$F5,$03<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $FFF7,$0005,z80_ptr(-)<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $01F7,$0007,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5F: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
dc.b $3A,$70,$30,$04,$01,$0F,$14,$19,$16,$08,$0A,$0B<br />
dc.b $05,$03,$03,$03,$05,$1F,$6F,$8F,$5F,$1F,$22,$1F,$80<br />
<br />
; spindash charge<br />
Sound60: dc.w z80_ptr(ssamp60),$0101<br />
dc.w $8005,z80_ptr(+),$FE00<br />
+ dc.b $EF,$00,$F0,$00,$01,$20,$F6,$C4,$16,$E7,$F4,$D0,$18,$E7<br />
- dc.b $04,$E7,$E6<br />
dc.w $03F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp60: dc.b $34,$00,$03,$0C,$09,$9F,$8C,$8F,$95,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$00,$1D,$00,$00<br />
<br />
; rumbling<br />
Sound61: dc.w z80_ptr(ssamp61),$0101<br />
dc.w $8004,z80_ptr(+),$0004<br />
+ dc.b $80,$01,$EF,$00,$F0,$00,$01,$70,$06,$82,$06,$85,$08,$83<br />
dc.b $01,$82,$05,$86,$06,$89,$03,$82,$08,$88,$04,$82,$06,$E6<br />
dc.b $02,$85,$08,$E6,$02,$83,$01,$E6,$02,$82,$05,$E6,$02,$86<br />
dc.b $06,$E6,$02,$89,$03,$E6,$02,$82,$08,$E6,$02,$88,$04,$E6,$02,$F2<br />
ssamp61: dc.b $32,$30,$30,$50,$30,$1F,$0E,$19,$0E,$07,$12,$15<br />
dc.b $09,$0A,$09,$1D,$06,$E8,$03,$0A,$17,$07,$00,$00,$00<br />
<br />
<br />
Sound62: dc.w z80_ptr(ssamp62),$0101<br />
dc.w $8005,z80_ptr(+),$FF00<br />
+ dc.b $EF,$00,$A6,$05,$F0,$01,$01,$E7,$40<br />
- dc.b $C4,$02,$E7,$E6<br />
dc.w $01F7,$0012,z80_ptr(-)<br />
dc.b $F2<br />
ssamp62: dc.b $34,$0C,$10,$73,$0C,$AF,$AC,$FF,$D5,$06,$00,$02<br />
dc.b $01,$02,$0A,$04,$08,$BF,$BF,$BF,$BF,$00,$08,$80,$80<br />
<br />
; CNZ blooing bumper<br />
Sound63: dc.w z80_ptr(ssamp63),$0101<br />
dc.w $8005,z80_ptr(+),$0907<br />
+ dc.b $EF,$00,$F0,$01,$01,$04,$56,$92,$03,$9A,$25,$F2<br />
ssamp63: dc.b $3D,$12,$10,$77,$30,$5F,$5F,$5F,$5F,$0F,$0A,$00<br />
dc.b $01,$0A,$0A,$0D,$0D,$4F,$0F,$0F,$0F,$13,$80,$80,$80<br />
<br />
; HTZ track click sound<br />
Sound64: dc.w z80_ptr(ssamp64),$0101<br />
dc.w $8005,z80_ptr(+),$1100<br />
+ dc.b $EF,$00,$C7,$02,$F2<br />
ssamp64: dc.b $24,$2A,$02,$05,$01,$1A,$1F,$10,$1F,$0F,$1F,$1F<br />
dc.b $1F,$0C,$0D,$11,$11,$0C,$09,$09,$0F,$0E,$04,$80,$80<br />
<br />
; kicking up leaves sound<br />
Sound65: dc.w z80_ptr(ssamp65),$0101<br />
dc.w $80C0,z80_ptr(+),$F800<br />
+ dc.b $F5,$03,$F3,$E7,$CE,$03,$F5,$06,$CE,$04,$EC<br />
dc.b $02,$CE,$02,$F5,$03,$EC,$FE,$CE,$08,$CE,$18,$F2<br />
ssamp65: ; uhm... apparently they forgot to null out the pointer to here.<br />
; luckily, sound 65 doesn't really use its sample<br />
<br />
; leaf splash?<br />
Sound66: dc.w z80_ptr(ssamp66),$0102<br />
dc.w $8005,z80_ptr(++),$EE08<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$F5,$09,$C6,$36,$F2<br />
+ dc.b $EF,$00,$80,$01,$92,$02,$02,$02,$30,$F2<br />
ssamp66: dc.b $32,$33,$17,$34,$13,$0F,$0D,$1B,$17,$00,$04,$02<br />
dc.b $0B,$08,$00,$08,$09,$6F,$5F,$4F,$6F,$05,$00,$00,$80<br />
<br />
<br />
Sound67: dc.w z80_ptr(ssamp67),$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$06,$F3,$E7,$90,$0A,$94,$0A,$98,$0A,$9C<br />
dc.b $0A,$A0,$0A,$A4,$08,$A8,$08,$AC,$08,$B0,$08,$F2<br />
ssamp67: ; another not-really-used sample (like Sound65)<br />
<br />
; door slamming quickly (seems unused)<br />
Sound68: dc.w z80_ptr(ssamp68),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$A5,$06,$F2<br />
ssamp68: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
<br />
Sound69: dc.w z80_ptr(ssamp69),$0102<br />
dc.w $8005,z80_ptr(+),$F400<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$9B,$03,$A8,$06,$9E,$08,$F2<br />
+ dc.b $F5,$04,$F3,$E7,$C6,$03,$C6,$06,$C6,$08,$F2<br />
ssamp69: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; robotic laser burst<br />
Sound6A: dc.w z80_ptr(ssamp6A),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$DF,$14,$E6,$18,$06,$F2<br />
ssamp6A: dc.b $3D,$09,$34,$34,$28,$1F,$16,$16,$16,$00,$00,$00<br />
dc.b $04,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$15,$02,$02,$00<br />
<br />
; scatter<br />
Sound6B: dc.w z80_ptr(ssamp6B),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$81,$04,$80,$0C,$F2<br />
ssamp6B: dc.b $3A,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $07,$00,$01,$01,$03,$00,$23,$C3,$46,$08,$07,$1C,$03<br />
<br />
<br />
Sound6C: dc.w z80_ptr(ssamp6C),$0104<br />
dc.w $8005,z80_ptr(++),$0010<br />
dc.w $8004,z80_ptr(+),$0010<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
+ dc.b $E1,$10<br />
+ dc.b $EF,$01,$F0,$01,$01,$EC,$56,$C0,$24,$F4,$EF,$00,$E6,$F0<br />
- dc.b $BB,$02,$E7,$E6,$02,$E9<br />
dc.w $01F7,$0020,z80_ptr(-)<br />
dc.b $F2<br />
ssamp6C: dc.b $00,$53,$30,$03,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$06,$23,$80<br />
dc.b $3C,$72,$32,$32,$72,$14,$14,$0F,$0F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$02,$02,$08,$08,$35,$14,$00,$00<br />
<br />
; error sound<br />
Sound6D: dc.w z80_ptr(ssamp6D),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$B0,$06,$80,$06,$B0,$18,$F2<br />
ssamp6D: dc.b $38,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$1F,$0C,$17,$00<br />
<br />
; silver sonic buzz saw<br />
Sound6E: dc.w z80_ptr(ssamp6E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$C6,$24,$E7<br />
- dc.b $C6,$04,$E7,$E6<br />
dc.w $04F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F3,$E7,$C7,$44,$F2<br />
ssamp6E: dc.b $33,$00,$10,$00,$31,$1F,$1D,$1E,$0E,$00,$0C,$1D<br />
dc.b $00,$00,$00,$01,$00,$0F,$0F,$0F,$0F,$08,$06,$07,$80<br />
<br />
<br />
Sound6F: dc.w z80_ptr(ssamp6A),$0103<br />
dc.w $8005,z80_ptr(++),$000B<br />
dc.w $8004,z80_ptr(+),$0012<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $E1,$02,$80,$02<br />
+ dc.b $EF,$00,$E6,$0C,$DF,$06,$E7,$E6,$F4,$06,$E7<br />
dc.b $E6,$F4,$12,$E7,$E6,$0C,$06,$E7,$E6,$0C,$06,$F2<br />
+ dc.b $F3,$E7,$C6,$04,$C0,$BA,$B4,$AE,$E6<br />
dc.b $01,$AE,$E6,$01,$AE,$E6,$01,$AE,$F2<br />
<br />
<br />
Sound70: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$C6,$18<br />
- dc.b $E7,$03,$E6<br />
dc.w $01F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to the other bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
; share these symbols externally (WARNING: don't rename, move or remove these labels!)<br />
shared movewZ80CompSize<br />
</asm><br />
<br />
We want to replace it with this optimized code:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===sound playback routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
move.b d0,(SFX_to_play_2).w<br />
rts<br />
; End of function PlaySoundStereo<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound in alternating speakers (as in the ring collection sound)<br />
; sub_1376:<br />
PlaySoundStereo:<br />
bra.s PlaySound<br />
; End of function PlaySoundStereo<br />
</asm></div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208743
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-24T23:53:31Z
<p>Kram1024: /* sound playback routines */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==<br />
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><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
move sr,-(sp)<br />
movem.l d0-a6,-(sp)<br />
move #$2700,sr<br />
lea (Z80_Bus_Request).l,a3<br />
lea (Z80_Reset).l,a2<br />
moveq #0,d2<br />
move.w #$100,d1<br />
move.w d1,(a3) ; get Z80 bus<br />
move.w d1,(a2) ; release Z80 reset (was held high by console on startup)<br />
- btst d2,(a3)<br />
bne.s - ; wait until the 68000 has the bus<br />
jsr DecompressSoundDriver(pc)<br />
btst #0,(VDP_control_port+1).l ; check video mode<br />
sne (Z80_RAM+zPalModeByte).l ; set if PAL<br />
move.w d2,(a2) ; hold Z80 reset<br />
move.w d2,(a3) ; release Z80 bus<br />
moveq #$E6,d0<br />
- dbf d0,- ; wait for 2,314 cycles<br />
move.w d1,(a2) ; release Z80 reset<br />
movem.l (sp)+,d0-a6<br />
move (sp)+,sr<br />
rts<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; slightly modified Saxman decompression of the sound driver<br />
; a4 == $A00000 (start of Z80 RAM)<br />
; a5 == current position in Z80 RAM?<br />
; a6 == current position in compressed sound driver?<br />
; d0 == data to decompress? (byte)<br />
; d4 == ???<br />
; d5 == ???<br />
; d6 == ???<br />
; d7 == bytes left to decompress<br />
; loc_EC04A:<br />
DecompressSoundDriver:<br />
lea Snd_Driver(pc),a6<br />
; WARNING: the build script needs editing if you rename this label<br />
movewZ80CompSize: move.w #Snd_Driver_End-Snd_Driver,d7 ; patched (by fixpointer.exe) after compression since the exact size can't be known beforehand<br />
moveq #0,d6<br />
lea (Z80_RAM).l,a5<br />
moveq #0,d5<br />
lea (Z80_RAM).l,a4<br />
<br />
loc_EC062:<br />
lsr.w #1,d6<br />
btst #8,d6<br />
bne.s +<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d6<br />
ori.w #$FF00,d6<br />
+<br />
btst #0,d6<br />
beq.s loc_EC086<br />
jsr sub_EC0DE(pc)<br />
move.b d0,(a5)+<br />
addq.w #1,d5<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC086:<br />
jsr sub_EC0DE(pc)<br />
moveq #0,d4<br />
move.b d0,d4<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d3<br />
andi.w #$F,d3<br />
addq.w #2,d3<br />
andi.w #$F0,d0<br />
lsl.w #4,d0<br />
add.w d0,d4<br />
addi.w #$12,d4<br />
andi.w #$FFF,d4<br />
move.w d5,d0<br />
andi.w #$F000,d0<br />
add.w d0,d4<br />
cmp.w d4,d5<br />
bhs.s loc_EC0CC<br />
subi.w #$1000,d4<br />
bcc.s loc_EC0CC<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b #0,(a5)+<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC0CC:<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b (a4,d4.w),(a5)+<br />
addq.w #1,d4<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; End of function DecompressSoundDriver<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_EC0DE:<br />
move.b (a6)+,d0<br />
subq.w #1,d7<br />
bne.s +<br />
addq.w #4,sp<br />
+<br />
rts<br />
; End of function sub_EC0DE<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; S2 sound driver (Sound driver compression (slightly modified Saxman))<br />
; ---------------------------------------------------------------------------<br />
; loc_EC0E8:<br />
Snd_Driver:<br />
save<br />
include "s2.sounddriver.asm" ; CPU Z80<br />
restore<br />
padding off<br />
!org (Snd_Driver+Size_of_Snd_driver_guess) ; don't worry; I know what I'm doing<br />
<br />
<br />
; loc_ED04C:<br />
Snd_Driver_End:<br />
<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ---------------------------------------------------------------------------<br />
; the DAC data has to line up with the end of the bank.<br />
<br />
; actually it only has to fit within one bank, but we'll line it up to the end anyway<br />
; because the padding gives the sound driver some room to grow<br />
cnop -Size_of_DAC_samples, $8000<br />
<br />
; ---------------------------------------------------------------------------<br />
; DAC samples<br />
; ---------------------------------------------------------------------------<br />
; loc_ED100:<br />
SndDAC_Start:<br />
<br />
SndDAC_Sample1:<br />
BINCLUDE "sound/DAC/Sample 1.bin"<br />
SndDAC_Sample1_End<br />
<br />
SndDAC_Sample2:<br />
BINCLUDE "sound/DAC/Sample 2.bin"<br />
SndDAC_Sample2_End<br />
<br />
SndDAC_Sample5:<br />
BINCLUDE "sound/DAC/Sample 5.bin"<br />
SndDAC_Sample5_End<br />
<br />
SndDAC_Sample6:<br />
BINCLUDE "sound/DAC/Sample 6.bin"<br />
SndDAC_Sample6_End<br />
<br />
SndDAC_Sample3:<br />
BINCLUDE "sound/DAC/Sample 3.bin"<br />
SndDAC_Sample3_End<br />
<br />
SndDAC_Sample4:<br />
BINCLUDE "sound/DAC/Sample 4.bin"<br />
SndDAC_Sample4_End<br />
<br />
SndDAC_Sample7:<br />
BINCLUDE "sound/DAC/Sample 7.bin"<br />
SndDAC_Sample7_End<br />
<br />
SndDAC_End<br />
<br />
if SndDAC_End - SndDAC_Start > $8000<br />
fatal "DAC samples must fit within $8000 bytes, but you have $\{SndDAC_End-SndDAC_Start } bytes of DAC samples."<br />
endif<br />
if SndDAC_End - SndDAC_Start > Size_of_DAC_samples<br />
fatal "Size_of_DAC_samples = $\{Size_of_DAC_samples}, but you have $\{SndDAC_End-SndDAC_Start} bytes of DAC samples."<br />
endif<br />
<br />
; ---------------------------------------------------------------------------<br />
; Music pointers<br />
; ---------------------------------------------------------------------------<br />
align $8000<br />
<br />
; loc_F0000:<br />
MusicPoint1:<br />
MusPtr_Continue: rom_ptr_z80 Mus_Continue-MusicPoint2<br />
<br />
<br />
Mus_Continue: BINCLUDE "sound/music/Continue.bin"<br />
<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ----------------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ----------------------------------------------------------------------------------<br />
; the PCM data has to line up with the end of the bank.<br />
cnop -Size_of_SEGA_sound, $8000<br />
<br />
; -------------------------------------------------------------------------------<br />
; Sega Intro Sound<br />
; 8-bit unsigned raw audio at 16Khz<br />
; -------------------------------------------------------------------------------<br />
; loc_F1E8C:<br />
Snd_Sega: BINCLUDE "sound/PCM/SEGA.bin"<br />
Snd_Sega_End:<br />
<br />
if Snd_Sega_End - Snd_Sega > $8000<br />
fatal "Sega sound must fit within $8000 bytes, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
if Snd_Sega_End - Snd_Sega > Size_of_SEGA_sound<br />
fatal "Size_of_SEGA_sound = $\{Size_of_SEGA_sound}, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
<br />
; ------------------------------------------------------------------------------<br />
; Music pointers<br />
; ------------------------------------------------------------------------------<br />
align $8000<br />
soundBankStart := *<br />
<br />
; loc_F8000:<br />
MusicPoint2:<br />
MusPtr_CNZ_2P: rom_ptr_z80 Mus_CNZ_2P<br />
MusPtr_EHZ: rom_ptr_z80 Mus_EHZ<br />
MusPtr_MTZ: rom_ptr_z80 Mus_MTZ<br />
MusPtr_CNZ: rom_ptr_z80 Mus_CNZ<br />
MusPtr_MCZ: rom_ptr_z80 Mus_MCZ<br />
MusPtr_MCZ_2P: rom_ptr_z80 Mus_MCZ_2P<br />
MusPtr_ARZ: rom_ptr_z80 Mus_ARZ<br />
MusPtr_DEZ: rom_ptr_z80 Mus_DEZ<br />
MusPtr_SpecStage: rom_ptr_z80 Mus_SpecStage<br />
MusPtr_Options: rom_ptr_z80 Mus_Options<br />
MusPtr_Ending: rom_ptr_z80 Mus_Ending<br />
MusPtr_EndBoss: rom_ptr_z80 Mus_EndBoss<br />
MusPtr_CPZ: rom_ptr_z80 Mus_CPZ<br />
MusPtr_Boss: rom_ptr_z80 Mus_Boss<br />
MusPtr_SCZ: rom_ptr_z80 Mus_SCZ<br />
MusPtr_OOZ: rom_ptr_z80 Mus_OOZ<br />
MusPtr_WFZ: rom_ptr_z80 Mus_WFZ<br />
MusPtr_EHZ_2P: rom_ptr_z80 Mus_EHZ_2P<br />
MusPtr_2PResult: rom_ptr_z80 Mus_2PResult<br />
MusPtr_SuperSonic: rom_ptr_z80 Mus_SuperSonic<br />
MusPtr_HTZ: rom_ptr_z80 Mus_HTZ<br />
MusPtr_ExtraLife: rom_ptr_z80 Mus_ExtraLife<br />
MusPtr_Title: rom_ptr_z80 Mus_Title<br />
MusPtr_EndLevel: rom_ptr_z80 Mus_EndLevel<br />
MusPtr_GameOver: rom_ptr_z80 Mus_GameOver<br />
MusPtr_Invincible: rom_ptr_z80 Mus_Invincible<br />
MusPtr_Emerald: rom_ptr_z80 Mus_Emerald<br />
MusPtr_HPZ: rom_ptr_z80 Mus_HPZ<br />
MusPtr_Drowning: rom_ptr_z80 Mus_Drowning<br />
MusPtr_Credits: rom_ptr_z80 Mus_Credits<br />
<br />
; loc_F803C:<br />
Mus_HPZ: BINCLUDE "sound/music/HPZ.bin"<br />
Mus_Drowning: BINCLUDE "sound/music/Drowning.bin"<br />
Mus_Invincible: BINCLUDE "sound/music/Invincible.bin"<br />
Mus_CNZ_2P: BINCLUDE "sound/music/CNZ_2p.bin"<br />
Mus_EHZ: BINCLUDE "sound/music/EHZ.bin"<br />
Mus_MTZ: BINCLUDE "sound/music/MTZ.bin"<br />
Mus_CNZ: BINCLUDE "sound/music/CNZ.bin"<br />
Mus_MCZ: BINCLUDE "sound/music/MCZ.bin"<br />
Mus_MCZ_2P: BINCLUDE "sound/music/MCZ_2p.bin"<br />
Mus_ARZ: BINCLUDE "sound/music/ARZ.bin"<br />
Mus_DEZ: BINCLUDE "sound/music/DEZ.bin"<br />
Mus_SpecStage: BINCLUDE "sound/music/SpecStg.bin"<br />
Mus_Options: BINCLUDE "sound/music/Options.bin"<br />
Mus_Ending: BINCLUDE "sound/music/Ending.bin"<br />
Mus_EndBoss: BINCLUDE "sound/music/End_Boss.bin"<br />
Mus_CPZ: BINCLUDE "sound/music/CPZ.bin"<br />
Mus_Boss: BINCLUDE "sound/music/Boss.bin"<br />
Mus_SCZ: BINCLUDE "sound/music/SCZ.bin"<br />
Mus_OOZ: BINCLUDE "sound/music/OOZ.bin"<br />
Mus_WFZ: BINCLUDE "sound/music/WFZ.bin"<br />
Mus_EHZ_2P: BINCLUDE "sound/music/EHZ_2p.bin"<br />
Mus_2PResult: BINCLUDE "sound/music/2player results screen.bin"<br />
Mus_SuperSonic: BINCLUDE "sound/music/Supersonic.bin"<br />
Mus_HTZ: BINCLUDE "sound/music/HTZ.bin"<br />
Mus_Title: BINCLUDE "sound/music/Title screen.bin"<br />
Mus_EndLevel: BINCLUDE "sound/music/End of level.bin"<br />
<br />
; The following act mostly like sound effects<br />
; despite being listed with the music.<br />
; This means they're uncompressed format with absolute pointers<br />
; instead of compressed with relative pointers.<br />
; Because they have absolute pointers,<br />
; they have to be assembled rather than BINCLUDE'd.<br />
; See below (right before Sound20) for other notes<br />
; about the sound format that apply to these too.<br />
<br />
;Mus_ExtraLife: BINCLUDE "sound/music/Extra life.bin"<br />
Mus_ExtraLife: dc.w z80_ptr(Mus_EL_Voices),$0603,$02CD<br />
dc.w z80_ptr(Mus_EL_DAC),$0000<br />
dc.w z80_ptr(Mus_EL_FM1),$E810<br />
dc.w z80_ptr(Mus_EL_FM2),$E810<br />
dc.w z80_ptr(Mus_EL_FM3),$E810<br />
dc.w z80_ptr(Mus_EL_FM4),$E810<br />
dc.w z80_ptr(Mus_EL_FM5),$E810<br />
dc.w z80_ptr(Mus_EL_PSG1),$D008,$0005<br />
dc.w z80_ptr(Mus_EL_PSG2),$DC08,$0005<br />
dc.w z80_ptr(Mus_EL_PSG3),$DC00,$0004<br />
Mus_EL_FM4: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM1: dc.b $E0,$80<br />
+ dc.b $EF,$00,$E8,$06,$D9,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$DB,$09,$D7,$D6,$06,$D9,$18,$F2<br />
Mus_EL_FM2: dc.b $EF,$01,$E8,$06,$E2,$01,$D6,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$D7,$09,$D4,$D2,$06,$D6,$18,$E2,$01,$F2<br />
Mus_EL_FM5: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM3: dc.b $E0,$80<br />
+ dc.b $EF,$02,$BA,$0C,$80,$06,$BA,$B8,$80,$03<br />
dc.b $B8,$06,$80,$03,$B8,$06,$BA,$18,$F2<br />
Mus_EL_PSG1: dc.b $E8,$06,$D6,$06,$03,$03,$06,$06,$E8,$00,$D7,$09<br />
dc.b $D4,$D2,$06,$D6,$18<br />
Mus_EL_PSG2:<br />
Mus_EL_PSG3: dc.b $F2<br />
Mus_EL_DAC: dc.b $88,$12,$06,$8B,$09,$09,$06,$88,$06,$8A,$88,$8A<br />
dc.b $88,$0C,$E4<br />
Mus_EL_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
<br />
<br />
;Mus_GameOver: BINCLUDE "sound/music/Game over.bin"<br />
Mus_GameOver: dc.w z80_ptr(MusGO_Voices),$0603,$02F2<br />
dc.w z80_ptr(MusGOver_DAC),$0000<br />
dc.w z80_ptr(MusGOver_FM1),$E80A<br />
dc.w z80_ptr(MusGOver_FM2),$F40F<br />
dc.w z80_ptr(MusGOver_FM3),$F40F<br />
dc.w z80_ptr(MusGOver_FM4),$F40D<br />
dc.w z80_ptr(MusGOver_FM5),$DC16<br />
dc.w z80_ptr(MusGOver_PSG),$D003,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC06,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC00,$0004<br />
MusGOver_FM1: dc.b $EF,$00<br />
dc.b $F0,$20,$01,$04,$05<br />
dc.b $80,$0C,$CA,$12,$80,$06,$CA,$80,$CB,$12,$C8,$1E<br />
dc.b $CA,$06,$80,$CA,$80,$CA,$80,$C6,$80,$C4,$12,$C8<br />
dc.b $0C,$80,$12,$C9,$04,$80,$C9,$C8,$06,$80,$C7,$80<br />
dc.b $C6,$80<br />
dc.b $F0,$28,$01,$18,$05<br />
dc.b $C5,$60,$F2<br />
MusGOver_FM2: dc.b $EF,$01,$80,$01,$D9,$06,$80,$D9,$80,$D6,$80,$D6<br />
dc.b $80,$D7,$15,$D7,$1B,$D9,$06,$80,$D9,$80,$D6,$80<br />
dc.b $D6,$80,$DC,$15,$DC,$1B,$F2<br />
MusGOver_FM3: dc.b $EF,$01,$D6,$0C,$D6,$D2,$D2,$D4,$15,$D4,$1B,$D6<br />
dc.b $0C,$D6,$D2,$D2,$D7,$15,$D7,$1B,$F2<br />
MusGOver_FM4: dc.b $EF,$02,$E2,$01,$AE,$06,$80,$AE,$80,$A9,$80,$A9<br />
dc.b $80,$AC,$15,$AB,$0C,$AC,$03,$AB,$0C,$AE,$06,$80<br />
dc.b $AE,$80,$A9,$80,$A9,$80,$B3,$15,$B2,$0C,$B3,$03<br />
dc.b $B2,$0C,$AE,$04,$80,$AE,$AD,$06,$80,$AC,$80,$AB<br />
dc.b $80,$AB,$60,$E2,$01,$F2<br />
MusGOver_FM5: dc.b $EF,$03,$80,$30,$D7,$12,$80,$03,$D7,$1B,$80,$30<br />
dc.b $DC,$12,$80,$03,$DC,$1B<br />
MusGOver_PSG: dc.b $F2<br />
MusGOver_DAC: dc.b $80,$18,$81<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(MusGOver_DAC)<br />
dc.b $F2<br />
MusGO_Voices: dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $3C,$33,$73,$30,$70,$94,$96,$9F,$9F,$12,$14,$00<br />
dc.b $0F,$04,$04,$0A,$0D,$2F,$4F,$0F,$2F,$33,$1A,$80,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$1C,$27,$28,$80<br />
dc.b $1F,$66,$53,$31,$22,$1C,$1F,$98,$1F,$12,$0F,$0F<br />
dc.b $0F,$00,$00,$00,$00,$FF,$0F,$0F,$0F,$8C,$8A,$8D,$8B<br />
<br />
;Mus_Emerald: BINCLUDE "sound/music/Got an emerald.bin"<br />
Mus_Emerald: dc.w z80_ptr(MusEmrldVoices),$0703,$01D5<br />
dc.w z80_ptr(MusEmeraldDAC),$0000<br />
dc.w z80_ptr(MusEmeraldFM1),$F408<br />
dc.w z80_ptr(MusEmeraldFM2),$F408<br />
dc.w z80_ptr(MusEmeraldFM3),$F407<br />
dc.w z80_ptr(MusEmeraldFM4),$F416<br />
dc.w z80_ptr(MusEmeraldFM5),$F416<br />
dc.w z80_ptr(MusEmeraldFM6),$F416<br />
dc.w z80_ptr(MusEmeraldPSG1),$F402,$0004<br />
dc.w z80_ptr(MusEmeraldPSG2),$F402,$0005<br />
dc.w z80_ptr(MusEmeraldPSG3),$F400,$0004<br />
MusEmeraldFM3: dc.b $E1,$02<br />
MusEmeraldFM1: dc.b $EF,$00,$C1,$06,$C4,$C9,$CD,$0C,$C9,$D0,$2A,$F2<br />
MusEmeraldFM2: dc.b $EF,$00,$BD,$06,$C1,$C4,$C9,$0C,$C6,$CB,$2A,$F2<br />
MusEmeraldFM4: dc.b $EF,$01,$C1,$0C,$C1,$06,$C4,$06,$80,$C4,$80,$C9<br />
dc.b $2A,$F2<br />
MusEmeraldFM5: dc.b $EF,$01,$C9,$0C,$C9,$06,$CD,$06,$80,$CD,$80,$D0<br />
dc.b $2A,$F2<br />
MusEmeraldFM6: dc.b $EF,$01,$C4,$0C,$C4,$06,$C9,$06,$80,$C9,$80,$CD<br />
dc.b $2A,$F2<br />
MusEmeraldPSG2: dc.b $80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusEmeraldPSG1: dc.b $E2,$01,$80,$02,$80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
MusEmeraldPSG3:<br />
MusEmeraldDAC: dc.b $E2,$01,$F2<br />
MusEmrldVoices: dc.b $04,$35,$54,$72,$46,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$1D,$14,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$07,$07,$1A,$16,$80,$80<br />
<br />
;Mus_Credits: BINCLUDE "sound/music/Credits.bin"<br />
Mus_Credits: dc.w z80_ptr(MusCred_Voices),$0603,$01F0<br />
dc.w z80_ptr(MusCred_DAC),$0000<br />
dc.w z80_ptr(MusCred_FM1),$000E<br />
dc.w z80_ptr(MusCred_FM2),$180A<br />
dc.w z80_ptr(MusCred_FM3),$0014<br />
dc.w z80_ptr(MusCred_FM4),$0016<br />
dc.w z80_ptr(MusCred_FM5),$0C16<br />
dc.w z80_ptr(MusCred_PSG1),$E806,$000B<br />
dc.w z80_ptr(MusCred_PSG2),$DC07,$000B<br />
dc.w z80_ptr(MusCred_PSG3),$0002,$0003<br />
MusCred_FM1: dc.b $E9,$F4,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$0C,$E6,$02<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$03,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $AE,$06,$A2,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $E6,$FD<br />
- dc.b $EF,$00,$B7,$06,$BA,$F8<br />
dc.w z80_ptr(MusCreditsDA13)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$06,$80,$80,$30,$80,$EF,$0B,$E9,$18,$E6,$02<br />
- dc.b $94,$0C,$8F,$92,$8F,$06,$94,$05,$94,$07,$06,$8F<br />
dc.b $0C,$92,$8F<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$30,$80,$EF,$0E,$E6,$FF,$E9,$E8,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$91,$94,$06,$80,$18,$96,$12,$9A,$06,$80<br />
dc.b $80,$12,$8F,$93,$08,$80,$16,$96,$06,$91,$92,$94<br />
dc.b $96,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$9D,$9A,$08,$80,$16,$96,$12,$9D,$08,$80<br />
dc.b $04,$EF,$12<br />
dc.b $F0,$18,$01,$0A,$04<br />
dc.b $80,$30,$80,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$24,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$EF,$01,$E9,$F4,$E6,$FA,$F4<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $80,$03,$80,$60,$E6,$04,$E1,$01,$EF,$1B,$E6,$06<br />
dc.b $C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80,$EF<br />
dc.b $1C,$E6,$FA,$E8,$00,$BC,$0C,$12,$06,$EF,$1B,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$80,$E8,$06,$C4,$06,$06,$C6,$C4,$E8<br />
dc.b $00,$C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80<br />
dc.b $E8,$00,$EF,$1C,$E6,$FA,$C1,$C4,$C1,$EF,$1A,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$06,$80,$80,$24,$80,$30,$80,$EF,$1F<br />
dc.b $E9,$18,$E6,$F7,$E1,$00,$80,$06,$AC,$AE,$80,$B1<br />
dc.b $80,$B3,$80,$B4,$80,$B3,$80,$B1,$B3,$80,$B1,$E9<br />
dc.b $F4,$EF,$00,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC<br />
dc.b $06,$AE,$B1,$80,$B4,$B1,$80,$B1,$E9,$0C,$EF,$1F<br />
dc.b $80,$06,$B8,$12,$B4,$06,$80,$B3,$80,$B4,$80,$B3<br />
dc.b $80,$B1,$AE,$80,$B1,$E9,$F4,$EF,$00,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$30,$80,$EF,$21,$E9,$0C,$80,$30,$80<br />
dc.b $08,$A0,$04,$9E,$0C,$9D,$9B,$99,$08,$04,$91,$0C<br />
dc.b $92,$93,$94,$98,$99,$9B,$9D,$98,$95,$93,$91,$98<br />
dc.b $9D,$91,$96,$98,$99,$98,$96,$99,$9D,$96,$95,$97<br />
dc.b $99,$97,$95,$96,$97,$98,$99,$98,$99,$9B,$9D,$08<br />
dc.b $04,$98,$0C,$91,$95,$96,$98,$99,$9D,$9E,$08,$96<br />
dc.b $10,$97,$0C,$98,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$08,$99,$04,$EF,$23,$E9,$E8,$E6,$07,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $80,$60,$E6,$FB,$80,$0C,$CD,$06,$80,$D4,$CD,$06<br />
dc.b $80,$0C,$CD,$06,$80,$D4,$CD,$06,$80,$18,$E6,$05<br />
dc.b $80,$0C,$AE,$80,$AE,$80,$24,$E1,$02,$E6,$08,$A2<br />
dc.b $6C,$F2<br />
MusCreditsD9D1: dc.b $A5,$0C,$B1,$06,$80,$B1,$0C,$AC,$B3,$12,$B1,$0C<br />
dc.b $AC,$06,$AE,$B1,$A7,$0C,$B3,$06,$80,$B3,$0C,$AE<br />
dc.b $B5,$12,$B3,$06,$80,$AE,$B0,$B3,$A3,$0C,$AF,$06<br />
dc.b $80,$AF,$0C,$AA,$B1,$12,$AF,$0C,$AA,$06,$AC,$AF<br />
dc.b $A2,$0C,$AE,$06,$A2,$A4,$0C,$B0,$06,$A4,$A5,$0C<br />
dc.b $B1,$06,$A5,$A2,$0C,$E3<br />
MusCreditsDA13: dc.b $BE,$0C,$BC,$06,$BA,$BC,$BA,$04,$E7,$08,$BA,$04<br />
dc.b $80,$0E,$EF,$07,$B7,$06,$B2,$B5,$B7,$EF,$00,$B7<br />
dc.b $BA,$BE,$0C,$BC,$06,$BA,$BC,$BA,$0C,$BC,$04,$80<br />
dc.b $08,$BA,$04,$80,$08,$BC,$04,$80,$08,$BE,$12,$BA<br />
dc.b $06,$B7,$80,$B7,$80,$24,$EF,$07,$B7,$06,$B2,$B5<br />
dc.b $B7,$80,$0C,$80,$30,$BE,$06,$BE,$BA,$04,$80,$08<br />
dc.b $BC,$06,$BE,$E3<br />
MusCreditsDA5F: dc.b $C3,$01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$02,$C3<br />
dc.b $01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01<br />
dc.b $E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$FC,$C3,$01,$E7<br />
dc.b $C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01,$E7,$C4<br />
dc.b $E7,$C5,$E7,$C6,$2D,$E7,$30,$E7,$30,$E3<br />
MusCreditsDA99: dc.b $A7,$0C,$B3,$06,$80,$B1,$80,$B3,$0C,$A7,$03,$80<br />
dc.b $06,$A7,$03,$B3,$0C,$B1,$B3,$09,$AE,$03,$AC,$06<br />
dc.b $80,$AC,$0C,$AE,$06,$80,$AE,$0C,$AF,$06,$80,$27<br />
dc.b $E3<br />
MusCreditsDABE: dc.b $80,$0C,$CA,$15,$80,$03,$CA,$06,$80,$CB,$0F,$80<br />
dc.b $03,$C8,$18,$80,$06,$CA,$80,$CA,$80,$CA,$80,$C6<br />
dc.b $80,$C4,$0F,$80,$03,$C8,$18,$80,$06<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E3<br />
MusCreditsDAE5: dc.b $80,$12,$94,$97,$06,$80,$18,$99,$12,$94,$06,$80<br />
dc.b $80,$12,$92,$96,$06,$80,$18,$97,$12,$92,$06,$80<br />
dc.b $E3<br />
MusCreditsDAFE: dc.b $80,$99,$80,$99,$80,$9E,$80,$E3<br />
MusCreditsDB06: dc.b $EF,$07,$80,$54,$C7,$04,$C8,$C9,$CA,$24,$CD,$D2<br />
dc.b $18,$D0,$24,$CF,$CB,$18,$CB,$0C,$CA,$80,$CD,$60<br />
dc.b $E7,$3C,$CA,$24,$CD,$D2,$18,$D4,$24,$D0,$D4,$18<br />
dc.b $D4,$24,$D6,$60,$E7,$3C,$E3<br />
MusCred_FM2: dc.b $80,$60,$EF,$01,$E8,$06,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $85,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8A,$87,$88,$89,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $88<br />
dc.b $F7,$00,$0B<br />
dc.w z80_ptr(-)<br />
- dc.b $8A<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$E6,$FC,$8A,$8B,$8C,$E6,$04,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$8D,$8A,$8B,$8C,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8D,$06,$99,$E8,$00,$8A,$0C,$8B,$8C,$E9,$E8,$E6<br />
dc.b $0C,$EF,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E6,$F9,$EF,$08<br />
MusCreditsDB93: dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $06,$9C,$12,$9D,$0C,$9E,$F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9D,$04,$80,$08,$9D,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $9C,$04,$80,$08,$9C,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(MusCreditsDB93)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$13,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$60,$EF,$0F,$E6,$F3<br />
dc.b $F0,$04,$02,$03,$02<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$30,$E7,$18,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$EF,$13,$E6,$F5,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$0C,$A9,$08,$A1,$10,$F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$08,$A9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E1,$02,$E9,$F4,$E6,$0A,$F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$EF,$1B,$E1,$00<br />
dc.b $E8,$06,$80,$3C,$B8,$06,$06,$BA,$BD,$BD,$BA,$EF<br />
dc.b $1D,$E6,$FA,$E8,$00,$F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $EF,$1C,$BD,$EF,$1D,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $80,$30,$80,$EF,$01,$E9,$18,$E6,$F9<br />
- dc.b $99,$0C,$A5,$06,$80,$96,$0C,$A2,$06,$80,$97,$0C<br />
dc.b $A3,$06,$80,$98,$0C,$A8,$06,$A7,$99,$06,$99,$12<br />
dc.b $96,$0C,$A2,$06,$80,$97,$0C,$A3,$06,$80,$98,$0C<br />
dc.b $A4,$06,$80<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$22,$E9,$E8,$E6,$03<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$AC,$04,$AE,$08,$B1,$04,$B5,$30,$80,$0C<br />
dc.b $B5,$08,$80,$04,$B6,$08,$B5,$10,$B9,$08,$04,$80<br />
dc.b $08,$B5,$34,$80,$0C,$B5,$BA,$08,$04,$80,$08,$B5<br />
dc.b $04,$B1,$24,$80,$0C,$B1,$08,$80,$04,$B3,$08,$B1<br />
dc.b $04,$B4,$0C,$B3,$08,$B1,$4C,$80,$0C,$B5,$08,$80<br />
dc.b $04,$B6,$08,$80,$04,$B5,$08,$80,$04,$B9,$08,$04<br />
dc.b $80,$08,$B5,$1C,$80,$0C,$BA,$18,$BC,$08,$BA,$04<br />
dc.b $BD,$18,$80,$0C,$BA,$04,$80,$08,$B8,$18,$B5,$B1<br />
dc.b $B3,$0C,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$0C,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$14,$B1,$04,$E6,$FF,$EF,$24,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $AC,$12,$AB,$0C,$AC,$06,$AB,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $B3,$12,$B2,$0C,$B3,$06,$B2,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $AC,$06,$80,$A9,$80,$AA,$80,$AB,$80,$AC,$AC,$A9<br />
dc.b $80,$AA,$80,$AC,$80,$A9,$80,$A9,$80,$AD,$80,$AD<br />
dc.b $80,$B0,$80,$B0,$80,$B3,$80,$B3,$80,$80,$0C,$A2<br />
dc.b $12,$80,$06,$A2,$12,$AD,$AE,$06,$80,$E6,$FD,$A2<br />
dc.b $6C,$F2<br />
MusCreditsDD59: dc.b $80,$0C,$C4,$06,$80,$C6,$80,$C4,$80,$C9,$80,$C9<br />
dc.b $80,$CB,$CD,$80,$0C,$80,$CB,$18,$C6,$06,$80,$C9<br />
dc.b $C9,$80,$CB,$0C,$80,$12,$80,$1E,$C7,$06,$C9,$C7<br />
dc.b $CB,$80,$C9,$80,$C7,$C9,$80,$C6,$E7,$C6,$30,$E7<br />
dc.b $18,$80,$18,$E3<br />
MusCreditsDD8D: dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
dc.b $06,$AB,$9F,$0C,$E3<br />
MusCreditsDD9D: dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$B6,$80,$18<br />
dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$30,$E7,$E3<br />
MusCreditsDDB5: dc.b $BF,$06,$BD,$BF,$12,$C2,$BF,$0C,$C1,$80,$06,$12<br />
dc.b $C4,$0C,$C2,$06,$80,$C9,$C6,$3C,$80,$06,$0C,$C7<br />
dc.b $12,$C6,$C4,$06,$C2,$C1,$18,$E3<br />
MusCreditsDDD5: dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$E3<br />
MusCreditsDDEA: dc.b $A2,$0C,$AE,$AC,$08,$AE,$04,$AC,$08,$A9,$04,$A7<br />
dc.b $08,$04,$E3<br />
MusCreditsDDF9: dc.b $80,$0C,$B1,$AE,$06,$06,$AC,$0C,$80,$B0,$AE,$06<br />
dc.b $06,$AC,$0C,$E3<br />
MusCreditsDE09: dc.b $AE,$AC,$06,$06,$AA,$0C,$80,$AC,$0C,$06,$06,$AE<br />
dc.b $AC,$E3<br />
MusCreditsDE17: dc.b $BA,$04,$80,$08,$B8,$18,$B5,$B1,$E3<br />
MusCreditsDE20: dc.b $AE,$06,$80,$AE,$80,$A9,$80,$A9,$80,$E3<br />
MusCreditsDE2A: dc.b $8A,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $E3<br />
MusCred_FM3: dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$18,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $B8,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $BD,$3C,$E9,$E8,$E6,$02,$E1,$03,$EF,$04,$E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$09,$E9,$0C,$E6,$FD,$E0,$40<br />
dc.b $F0,$06,$01,$05,$04<br />
dc.b $E1,$00<br />
- dc.b $9F,$0C,$AB,$06,$80,$A9,$80,$AB,$9F,$80,$9F,$AB<br />
dc.b $80,$A9,$80,$AB,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $9D,$0C,$A9,$06,$80,$A8,$80,$A9,$9C,$80,$9C,$A8<br />
dc.b $80,$A6,$80,$A8,$0C<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0D,$E6,$FB,$E0,$C0,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0F,$E0,$80,$E6,$0B,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$48,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$0C<br />
dc.b $F0,$18,$01,$03,$04<br />
dc.b $E6,$F3,$E0,$C0,$EF,$14,$A2,$14,$A4,$04,$A5,$04<br />
dc.b $80,$08,$A9,$04,$80,$08,$A8,$04,$80,$08,$A9,$04<br />
dc.b $80,$08,$AC,$08,$A9,$10<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$18,$E9,$F4,$E6,$08,$F4,$E0,$40,$80,$60,$80<br />
dc.b $30,$C6,$06,$80,$C2,$0C,$C4,$09,$C2,$03,$BF,$0C<br />
dc.b $80,$60,$80,$3C,$80,$60,$EF,$1B,$E6,$FB,$E0,$C0<br />
dc.b $E8,$06,$C4,$06,$06,$C6,$C9,$C9,$C6,$E8,$00,$CD<br />
dc.b $0C,$E8,$06,$C9,$06,$C6,$C9,$0C,$80,$80,$12,$EF<br />
dc.b $1C,$E8,$00,$BD,$BA,$0C,$E8,$06,$EF,$1B,$CE,$06<br />
dc.b $CE,$80,$CE,$80,$CE,$E8,$00,$CF,$0C,$D0,$80,$E8<br />
dc.b $06,$D0,$06,$06,$D2,$D0,$E8,$00,$CD,$0C,$E8,$06<br />
dc.b $C9,$06,$C6,$C9,$0C,$E8,$00,$EF,$1C,$80,$1E,$C2<br />
dc.b $0C,$C2,$BD,$06,$80,$60,$80,$60,$EF,$00,$E9,$18<br />
dc.b $80,$60,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC,$06<br />
dc.b $AE,$B1,$80,$B4,$B1,$80,$B1,$80,$60,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$60,$EF,$22,$E9,$DC,$E6,$FF,$E0,$80<br />
dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $CD,$30,$CB,$18,$CD,$0C,$CB,$C9,$30,$CE,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$FC,$80,$C4,$80,$C4,$80,$C6,$18,$08,$C4,$04<br />
dc.b $E9,$0C,$E6,$FF,$E0,$C0,$EF,$00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $CB,$12,$CB,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $D0,$12,$D0,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$CB,$12,$80,$06,$CB,$80,$CA,$12,$CB,$CA<br />
dc.b $0C,$C5,$18,$C8,$CB,$D1,$80,$0C,$CD,$80,$CD,$12<br />
dc.b $CC,$CD,$06,$80,$E6,$F8,$EF,$01,$E1,$03,$A2,$6C<br />
dc.b $F2<br />
MusCreditsDFF2: dc.b $80,$60,$BC,$06,$BD,$BC,$B8,$BA,$B6,$0C,$B8,$B3<br />
dc.b $B3,$06,$B6,$0C,$B8,$E3<br />
MusCreditsE004: dc.b $80,$0C,$CD,$04,$80,$10,$CD,$04,$80,$0C,$CD,$0C<br />
dc.b $CE,$08,$CD,$04,$80,$18,$80,$0C,$CB,$04,$80,$10<br />
dc.b $CB,$04,$80,$0C,$CB,$0C,$CD,$08,$CB,$04,$80,$18<br />
- dc.b $80,$0C,$C9,$04,$80,$10,$C9,$04,$80,$0C,$C9,$0C<br />
dc.b $CB,$08,$C9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E3<br />
MusCreditsE040: dc.b $80,$18,$B8,$0B,$80,$0D,$BA,$0C,$0B,$80,$19,$BD<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE051: dc.b $80,$0C,$C4,$80,$C4,$80,$C6,$80,$C6,$E3<br />
MusCreditsE05B: dc.b $CD,$06,$80,$CD,$80,$CA,$80,$CA,$80,$E3<br />
MusCreditsE065: dc.b $EF,$05,$E9,$F4,$C6,$60,$CB,$CD,$E7,$CD,$C6,$60<br />
dc.b $D0,$D0,$24,$D2,$60,$E7,$3C,$E3<br />
MusCred_FM4: dc.b $80,$60,$E9,$FB,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$1D,$E6,$02,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B5,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B8,$3C,$E6,$06,$EF,$05<br />
dc.b $F0,$02,$01,$FE,$04<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E9,$F4,$E6,$F7<br />
dc.b $F0,$0C,$01,$FB,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$25,$C3,$06,$C3,$80,$0C,$C3,$06,$C3,$05,$80<br />
dc.b $0D,$C3,$06,$C5,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$05,$F4,$E1,$02,$E0<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$0C,$80,$60,$EF,$10,$E6,$F7,$E1,$00,$E0<br />
dc.b $40,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $B3,$B7,$06,$AE,$0C,$B1,$B3,$B7,$06,$80,$B7,$AE<br />
dc.b $0C,$B1,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $EF,$15,$E6,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
- dc.b $EF,$14,$80,$4E,$E0,$40,$A1,$12,$A2,$06,$E0,$C0<br />
dc.b $EF,$16,$80,$30,$80,$06,$BA,$08,$B9,$04,$B8,$08<br />
dc.b $B7,$04,$B6,$08,$B5,$04<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E9,$F4,$E6,$02,$E0,$C0<br />
dc.b $F0,$01,$01,$03,$03<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$1E,$E0,$40,$E6,$FE,$E9,$F4,$F4,$E8<br />
dc.b $06,$80,$0C,$C1,$06,$12,$18,$C4,$06,$12,$0C,$EF<br />
dc.b $1C,$E0,$C0,$E6,$FA,$E8,$00,$C6,$E8,$06,$E6,$06<br />
dc.b $EF,$1E,$E0,$40,$C2,$06,$12,$18,$C4,$06,$12,$18<br />
dc.b $C1,$06,$12,$18,$C4,$06,$12,$0C,$EF,$1A,$E0,$C0<br />
dc.b $E9,$0C,$C6,$06,$C6,$80,$C6,$80,$C6,$E8,$00,$C7<br />
dc.b $0C,$C8,$06,$EF,$1E,$E0,$40,$E9,$F4,$E8,$06,$80<br />
dc.b $C4,$06,$12,$0C,$80,$60,$EF,$20,$E9,$18,$E6,$FA<br />
dc.b $E0,$C0,$E8,$00,$B4,$03,$E7,$B6,$5D,$B3,$03,$E7<br />
dc.b $B5,$5D,$B1,$03,$E7,$B3,$5D,$B3,$03,$E7,$B5,$5D<br />
dc.b $80,$60,$EF,$22,$E0,$40,$E9,$E8,$E6,$04,$80,$30<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $C9,$30,$C8,$18,$C9,$0C,$C8,$C6,$30,$C9,$80,$0C<br />
dc.b $C1,$80,$C1,$80,$C2,$80,$C2,$E6,$04,$80,$C1,$80<br />
dc.b $C1,$80,$C2,$80,$C2,$E6,$FC,$80,$C1,$80,$C1,$80<br />
dc.b $C2,$18,$08,$C1,$04,$E9,$0C,$E6,$FF,$E0,$C0,$EF<br />
dc.b $00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $C8,$12,$C8,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $CB,$12,$CB,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E1,$03,$E6,$08,$F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $E6,$F0,$EF,$01<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $A2,$6C,$F2<br />
MusCreditsE22D: dc.b $A2,$14,$A4,$04,$A5,$04,$80,$08,$A9,$04,$80,$08<br />
dc.b $A8,$04,$80,$08,$A9,$04,$80,$08,$AC,$08,$A9,$10<br />
dc.b $E3<br />
MusCreditsE246: dc.b $80,$0C<br />
dc.b $C9,$04,$80,$10<br />
dc.b $C9,$04,$80,$0C<br />
dc.b $C9,$0C<br />
dc.b $CB,$08<br />
dc.b $C9,$04,$80,$18,$80,$0C<br />
dc.b $C8,$04,$80,$10<br />
dc.b $C8,$04,$80,$0C<br />
dc.b $C8,$0C<br />
dc.b $C9,$08<br />
dc.b $C8,$04,$80,$18,$80,$0C<br />
<br />
if 1==1<br />
; this part of the original credits music (CNZ PSG) sounds buggy (dissonant)<br />
dc.b $C6,$04,$80,$10<br />
dc.b $C6,$04,$80,$0C<br />
dc.b $C6,$0C<br />
dc.b $C8,$08<br />
dc.b $C6,$04,$80,$18,$80,$0C<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $C7,$08<br />
else<br />
; replace the above block of notes with this to fix it.<br />
; (I'm not sure why, but the notes $C6 and $C7 are broken here,<br />
; so I've replaced them with pitch-shifted $C8s)<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$10 ; $C6<br />
dc.b $C8,$04,$80,$0C ; $C6<br />
dc.b $C8,$0C ; $C6<br />
dc.b $E1,0<br />
dc.b $C8,$08<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$24 ; $C6<br />
dc.b $E1,0<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $E1,-32<br />
dc.b $C8,$08 ; $C7<br />
dc.b $E1,0<br />
endif<br />
<br />
dc.b $C5,$04,$80,$18<br />
dc.b $E3<br />
MusCreditsE28F: dc.b $EF,$25,$80,$0C,$D0,$D4,$D7,$DB,$0C,$80,$06,$DB<br />
dc.b $0C,$DC,$06,$DB,$0C,$DD,$60,$DE,$0C,$80,$DE,$80<br />
dc.b $80,$06,$DD,$12,$DE,$0C,$E3<br />
MusCreditsE2AE: dc.b $80,$18,$B5,$0B,$80,$0D,$B7,$0C,$0B,$80,$19,$BA<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE2BF: dc.b $C3,$05,$80,$13,$C3,$12,$C3,$05,$E3<br />
MusCreditsE2C8: dc.b $CA,$06,$80,$CA,$80,$C6,$80,$C6,$80,$E3<br />
MusCreditsE2D2: dc.b $AF,$0C,$B3,$06,$B6,$0C,$AF,$B1,$06,$80,$B1,$0C<br />
dc.b $B5,$06,$B8,$0C,$B1,$06,$80,$B6,$0C,$BA,$06,$B1<br />
dc.b $0C,$B5,$B6,$BA,$06,$80,$BA,$AF,$0C,$B3,$B5,$B8<br />
dc.b $06,$B2,$0C,$B3,$B5,$B8,$06,$80,$B8,$B2,$0C,$B5<br />
dc.b $E3<br />
MusCred_FM5: dc.b $E9,$E8,$E6,$F8,$E1,$05,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$18,$E6,$08,$E1,$00,$EF,$02<br />
dc.b $F0,$0C,$01,$FC,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B1,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B5,$3C,$E9,$F4,$E6,$07<br />
dc.b $F0,$30,$01,$04,$04<br />
dc.b $EF,$06<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E6,$F6<br />
dc.b $F0,$0C,$01,$05,$04<br />
dc.b $E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$25,$C6,$06,$C6,$80,$0C,$C6,$06,$C6,$05,$80<br />
dc.b $0D,$C6,$06,$C8,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$E6,$05,$F4,$80,$01,$EF,$0C,$E1<br />
dc.b $FE,$E0,$40,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $23,$80,$0C,$80,$60,$EF,$11,$E9,$F4,$E6,$F4,$E1<br />
dc.b $00,$E0,$C0<br />
dc.b $F0,$06,$01,$06,$05<br />
dc.b $80,$60,$80,$30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60<br />
dc.b $80,$06,$CB,$80,$CB,$C9,$80,$C9,$80,$C7,$80,$C7<br />
dc.b $80,$C6,$03,$80,$C6,$80,$09,$80,$06,$80,$60,$80<br />
dc.b $30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60,$EF,$16,$E9<br />
dc.b $0C,$E6,$04,$F4,$E0,$80,$80,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
dc.b $80,$2F,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$30,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$60,$EF,$19,$E9,$F4,$E0,$C0,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$27,$B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$2A,$80,$60,$EF,$1E,$E9,$F4,$E8,$06<br />
- dc.b $80,$0C,$C4,$06,$12,$18,$C8,$06,$12,$0C,$80,$C6<br />
dc.b $06,$12,$18,$C8,$06,$12,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$20,$E8,$00,$E9,$18,$E6,$FA,$B8,$03<br />
dc.b $E7,$BA,$5D,$B6,$03,$E7,$B8,$5D,$B4,$03,$E7,$B6<br />
dc.b $5D,$B6,$03,$E7,$B8,$5D,$80,$60,$EF,$22,$E9,$F4<br />
dc.b $E6,$05<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$A7,$04,$A9,$08,$AC,$04,$B1,$30,$80,$0C<br />
dc.b $B1,$08,$80,$04,$B3,$08,$B1,$10,$B5,$08,$B5,$04<br />
dc.b $80,$08,$B0,$34,$80,$0C,$B0,$B5,$08,$04,$80,$08<br />
dc.b $B1,$04,$AE,$24,$80,$0C,$AE,$08,$80,$04,$B0,$08<br />
dc.b $AE,$04,$B1,$0C,$AF,$08,$AD,$4C,$80,$0C,$B1,$08<br />
dc.b $80,$04,$B3,$08,$80,$04,$B1,$08,$80,$04,$B5,$08<br />
dc.b $B5,$04,$80,$08,$B0,$1C,$80,$0C,$B5,$18,$B8,$08<br />
dc.b $B5,$04,$BA,$18,$80,$0C,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$04,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$F8,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$AA,$14,$A9,$04,$E6,$0C,$EF,$23,$E1,$03<br />
dc.b $E6,$F7,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E6,$09<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $F2<br />
MusCreditsE4CD: dc.b $80,$1E,$EF,$14,$A4,$12,$A5,$06,$EF,$16,$80,$30<br />
dc.b $80,$06,$BD,$08,$BC,$04,$BB,$08,$BA,$04,$B9,$08<br />
dc.b $B8,$04,$E3<br />
MusCreditsE4E8: dc.b $80,$18,$B1,$0B,$80,$0D,$B3,$0C,$0B,$80,$19,$B6<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE4F9: dc.b $C6,$05,$80,$13,$C6,$12,$C6,$05,$E3<br />
MusCreditsE502: dc.b $80,$60,$AC,$06,$80,$AC,$0C,$AE,$06,$80,$AE,$0C<br />
dc.b $AF,$06,$E3<br />
MusCred_PSG1: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG1)<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$F4,$E6,$FE,$F5,$01,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $AE,$B3,$06,$AC,$0C,$AE,$AE,$B3,$06,$80,$B3,$AB<br />
dc.b $0C,$AE,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $F5,$0B,$80,$04,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$20,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$F5,$00,$E8,$06,$E9,$F4,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$80,$C2,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$04,$80,$C2,$80,$0C,$C2,$80,$60,$F5,$08,$E9<br />
dc.b $04,$EC,$02,$E8,$06<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F0,$EC,$FF,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $E9,$18,$EC,$02,$B5,$30,$B3,$18,$B5,$0C,$B3,$B1<br />
dc.b $30,$B6,$EC,$FE,$80,$0C,$B8,$80,$B8,$80,$BA,$80<br />
dc.b $BA,$EC,$03,$C4,$18,$C1,$BD,$BF,$0C,$80,$EC,$FC<br />
dc.b $80,$B8,$80,$B8,$80,$BA,$18,$08,$B8,$04,$E9,$F4<br />
dc.b $EC,$01,$F5,$05<br />
- dc.b $80,$60<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$C8,$12,$80,$06,$C8,$80,$C6,$12,$C8,$C6<br />
dc.b $0C,$C1,$18,$C5,$C8,$CB,$80,$0C,$CA,$80,$CA,$12<br />
dc.b $C9,$CA,$06,$80,$09,$E9,$30,$EC,$FC,$F6<br />
dc.w z80_ptr(MusCreditsE770)<br />
dc.b $F2<br />
MusCreditsE618: dc.b $80,$0C,$BD,$06,$12,$18,$C4,$06,$12,$0C,$80,$C2<br />
dc.b $06,$12,$18,$C4,$06,$12,$0C,$E3<br />
MusCreditsE62C: dc.b $80,$60,$80,$0C,$C2,$80,$C2,$80,$E3<br />
MusCreditsE635: dc.b $AC,$0C,$AF,$06,$B3,$0C,$AC,$AC,$06,$80,$AC,$0C<br />
dc.b $AF,$06,$B5,$0C,$AC,$06,$80,$06,$B1,$0C,$B6,$06<br />
dc.b $AE,$0C,$B1,$B3,$B6,$06,$80,$B6,$AA,$0C,$AF,$AF<br />
dc.b $B5,$06,$AC,$0C,$AF,$B2,$B5,$06,$80,$B5,$AE,$0C<br />
dc.b $B2,$E3<br />
MusCred_PSG2: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG2)<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$0C,$EC,$FD,$F5,$04,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
dc.b $F0,$03,$02,$01,$05<br />
dc.b $F5,$0A,$E9,$E8,$EC,$02,$80,$30,$80,$80,$BD,$06<br />
dc.b $BF,$C6,$C2,$1E,$80,$60,$80,$06,$C6,$80,$C6,$C4<br />
dc.b $80,$C4,$80,$C3,$80,$C3,$80,$BF,$03,$80,$BF,$80<br />
dc.b $09,$80,$06,$80,$30,$80,$80,$BD,$06,$BF,$C6,$C2<br />
dc.b $1E,$80,$60,$F4<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$00,$EC,$FE,$E8,$06,$80,$60,$80,$0C,$BF,$80<br />
dc.b $BF,$80,$BF,$80,$BF,$80,$60,$80,$0C,$BF,$80,$BF<br />
dc.b $80,$BF,$04,$80,$BF,$80,$0C,$BF,$80,$60,$EC,$02<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F4,$EC,$FF,$E9,$E8,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $E9,$18,$EC,$02,$B1,$30,$B0,$18,$B1,$0C,$B0,$AE<br />
dc.b $30,$B1,$EC,$FE,$80,$0C,$B5,$80,$B5,$80,$B6,$80<br />
dc.b $B6,$EC,$03,$80,$B1,$80,$B1,$80,$B1,$80,$B1,$EC<br />
dc.b $FC,$80,$B1,$80,$B1,$80,$B1,$18,$08,$B1,$04,$EC<br />
dc.b $01,$E9,$18,$F5,$05,$E1,$01,$80,$60,$80,$80,$80<br />
dc.b $80,$80,$80,$0C,$CD,$06,$80,$D4,$CD,$80,$0C,$CD<br />
dc.b $06,$80,$D4,$CD,$80,$18,$80,$54,$E9,$24,$EC,$FD<br />
MusCreditsE770: dc.b $F5,$03,$80,$06<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$FF<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$01<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusCred_PSG3: dc.b $F3,$E7,$80,$60,$F5,$02<br />
- dc.b $C6,$0C,$0C,$0C,$06,$06,$0C,$0C,$06,$06,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$1F<br />
dc.w z80_ptr(-)<br />
dc.b $0C,$F5,$03,$C6,$F5,$02<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $06,$06,$06,$06<br />
dc.b $F7,$01,$04<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$04,$EC,$02<br />
- dc.b $E8,$03,$C6,$06,$06,$E8,$00,$0C<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$02,$EC,$FD<br />
- dc.b $80,$0C,$C6,$06,$80,$07,$C6,$06,$80,$11,$C6,$0C<br />
dc.b $80,$06,$C6,$0C,$80,$06,$C6,$80<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$02<br />
- dc.b $C6,$0C,$08,$04<br />
dc.b $F7,$00,$18<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$0C,$0C,$08,$04<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$04,$EC,$02<br />
- dc.b $C6,$06,$06,$0C<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EC,$FF<br />
- dc.b $F5,$01,$C6,$0C,$F5,$02,$EC,$FF,$08,$F5,$01,$EC<br />
dc.b $01,$04<br />
dc.b $F7,$00,$27<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$FF,$F5,$04<br />
- dc.b $E8,$03,$C6,$0C,$E8,$0C,$0C<br />
dc.b $F7,$00,$1E<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$03,$C6,$06,$E8,$0E,$12,$E8,$03,$0C,$E8,$0F<br />
dc.b $0C,$F2<br />
MusCred_DAC: dc.b $82,$06,$82,$82,$82,$82,$0C,$06,$0C,$06,$0C,$0C<br />
dc.b $0C<br />
- dc.b $81,$18,$82<br />
dc.b $F7,$00,$0E<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C<br />
- dc.b $82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EA,$EA,$F8<br />
dc.w z80_ptr(MusCreditsEA6E)<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$82,$06,$82,$82,$82,$81,$0C,$82,$06,$82<br />
dc.b $81,$81,$82,$82,$82,$82<br />
- dc.b $81,$18,$82,$81,$82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$82,$82,$82,$06,$82,$8C,$8C,$8D,$8D<br />
dc.b $8E,$8E,$F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$18,$82,$0C,$81,$18,$82,$0C,$82,$82,$06,$82<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$0C,$82,$82,$82,$8D,$06,$8D,$8E,$8E,$82,$06<br />
dc.b $82,$8D,$0C,$82,$0C,$82,$06,$82,$80,$82,$82,$0C<br />
MusCreditsE8E5: dc.b $82,$0C,$82,$82,$06,$82,$8D,$8D<br />
- dc.b $81,$0C,$8F,$06,$90,$82,$0C,$90,$06,$91,$81,$0C<br />
dc.b $8F,$06,$91,$82,$0C,$8F,$06,$91<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$8F,$06,$91,$82,$0C,$8F,$06,$91,$8C,$06<br />
dc.b $03,$03,$8D,$06,$8D,$8D,$8E,$8E,$8E,$81,$06,$0C<br />
dc.b $82,$06,$80,$0C,$81,$82,$8E,$82,$06,$82,$82,$82<br />
- dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$12,$8C,$06<br />
dc.b $82,$0C,$83,$06,$81,$80<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$06,$82,$06<br />
dc.b $81,$0C,$06,$82,$0C,$08,$04,$EA,$CD,$82,$30,$82<br />
dc.b $0C,$82,$82,$82,$08,$04,$F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$04,$82,$08,$04<br />
dc.b $08,$04,$04,$04,$04,$08,$04,$EA,$C5<br />
- dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82,$0C,$06<br />
dc.b $06,$81,$0C,$82,$06,$82,$82,$82,$8D,$0C,$82,$0C<br />
dc.b $0C,$0C,$06,$06<br />
- dc.b $81,$0C,$81,$82,$80,$81,$81,$82,$83<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$82,$82,$82,$82,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $81,$06,$81,$82,$82,$81,$82,$81,$81,$82,$02,$82<br />
dc.b $04,$81,$0C,$06,$82,$0C,$06,$06,$81,$18,$82,$0C<br />
dc.b $81,$81,$18,$82,$81,$06,$81,$12,$82,$0C,$81,$81<br />
dc.b $18,$82,$81,$18,$82,$0C,$81,$81,$18,$82,$81,$06<br />
dc.b $81,$12,$82,$0C,$0C,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $82,$02,$04,$81,$0C,$06,$0C,$82,$02,$04,$81,$0C<br />
dc.b $06,$0C,$82,$06,$82,$82,$82,$EA,$C0,$81,$0C,$82<br />
dc.b $81,$82,$81,$82,$81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$0F<br />
dc.w z80_ptr(-)<br />
dc.b $81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$13<br />
dc.w z80_ptr(-)<br />
dc.b $82,$08,$0C,$04,$81,$0C,$82,$81,$82,$81,$0C,$82<br />
dc.b $81,$06,$80,$02,$82,$82,$82,$09,$82,$03<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$06,$80,$02,$82,$82,$82,$09,$82<br />
dc.b $03<br />
dc.b $F7,$01,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$82,$81,$06,$82,$12,$82,$0C,$81<br />
dc.b $F2<br />
MusCreditsEA6E: dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$83,$E3<br />
MusCreditsEA84: dc.b $81,$18,$82,$0C,$81,$18,$0C,$82,$81,$81,$18,$82<br />
dc.b $0C,$81,$12,$81,$82,$18,$81,$82,$0C,$81,$18,$0C<br />
dc.b $82,$81,$E3<br />
MusCreditsEA9F: dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$0C,$82,$04,$81<br />
dc.b $0C,$82,$81,$81,$08,$0C,$04,$82,$0C,$81,$08,$0C<br />
dc.b $82,$04,$81,$0C,$82,$82,$08,$04,$E3,$81,$06,$80<br />
dc.b $03,$81,$81,$06,$82,$81,$06,$80,$03,$81,$81,$06<br />
dc.b $82,$03,$82,$81,$06,$80,$03,$81,$81,$06,$82,$E3<br />
MusCred_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$01,$1F,$1F,$FF,$0F,$17,$27,$28,$80<br />
dc.b $08,$09,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$25,$0E,$30,$84<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$0B,$0D,$19,$0B,$80,$80<br />
dc.b $08,$0A,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$24,$13,$2D,$80<br />
dc.b $3D,$01,$51,$21,$01,$12,$14,$14,$0F,$0A,$05,$05<br />
dc.b $05,$00,$00,$00,$00,$2B,$2B,$2B,$1B,$19,$80,$80,$80<br />
dc.b $04,$57,$70,$02,$50,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$06,$00,$0A,$0A,$00,$00,$0F,$0F,$1A,$10,$80,$80<br />
dc.b $35,$01,$13,$01,$00,$1F,$18,$1D,$19,$00,$06,$09<br />
dc.b $0D,$00,$02,$00,$03,$00,$15,$06,$16,$1E,$83,$80,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1A,$16,$88,$88<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$14,$0F,$37,$80<br />
dc.b $3B,$0F,$01,$06,$02,$DF,$1F,$1F,$DF,$0C,$0A,$00<br />
dc.b $03,$0F,$00,$00,$01,$F3,$55,$05,$5C,$22,$22,$20,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1C,$14,$84,$80<br />
dc.b $3A,$69,$50,$70,$60,$1C,$1A,$18,$18,$10,$02,$0C<br />
dc.b $09,$08,$06,$06,$03,$F9,$06,$56,$06,$28,$14,$15,$00<br />
dc.b $3D,$00,$02,$01,$01,$4C,$50,$0F,$12,$0C,$00,$02<br />
dc.b $05,$01,$00,$00,$00,$28,$2A,$29,$19,$1A,$06,$00,$00<br />
dc.b $2C,$71,$31,$71,$31,$1F,$1F,$16,$16,$00,$00,$0F<br />
dc.b $0F,$00,$00,$0F,$0F,$00,$00,$FA,$FA,$15,$14,$00,$00<br />
dc.b $18,$37,$31,$32,$31,$9E,$1C,$DC,$9C,$0D,$04,$06<br />
dc.b $01,$08,$03,$0A,$05,$B6,$36,$B6,$28,$2C,$14,$22,$00<br />
dc.b $3D,$01,$02,$02,$02,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$24,$18,$18,$18,$1C,$82,$82,$82<br />
dc.b $32,$71,$33,$0D,$01,$5F,$5F,$99,$94,$05,$05,$05<br />
dc.b $07,$02,$02,$02,$02,$11,$11,$11,$72,$23,$26,$2D,$80<br />
dc.b $3A,$32,$52,$01,$31,$1F,$1F,$1F,$18,$01,$00,$1F<br />
dc.b $00,$00,$00,$0F,$00,$5A,$03,$0F,$1A,$3B,$4F,$30,$00<br />
dc.b $3C,$42,$32,$41,$41,$12,$12,$12,$12,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$06,$06,$08,$08,$24,$24,$08,$08<br />
dc.b $31,$34,$30,$35,$31,$DF,$9F,$DF,$9F,$0C,$0C,$07<br />
dc.b $09,$07,$07,$07,$08,$2F,$1F,$1F,$2F,$17,$14,$32,$80<br />
dc.b $3D,$01,$01,$01,$01,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$20,$1A,$1A,$1A,$19,$84,$84,$84<br />
dc.b $24,$70,$30,$74,$38,$12,$1F,$1F,$1F,$05,$05,$03<br />
dc.b $03,$05,$05,$03,$03,$36,$26,$2C,$2C,$0A,$06,$08,$08<br />
dc.b $3A,$01,$01,$01,$02,$8D,$07,$07,$52,$09,$00,$00<br />
dc.b $03,$01,$02,$02,$00,$5F,$0F,$0F,$2F,$18,$18,$22,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$03,$03,$08,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$17,$20,$28,$80<br />
dc.b $20,$7A,$00,$31,$00,$9F,$DC,$D8,$DF,$10,$04,$0A<br />
dc.b $04,$0F,$08,$08,$08,$5F,$BF,$5F,$BF,$14,$17,$2B,$80<br />
dc.b $3A,$61,$51,$08,$02,$5D,$5D,$5D,$50,$04,$1F,$0F<br />
dc.b $1F,$00,$00,$00,$00,$1F,$0F,$5F,$0F,$22,$22,$1E,$80<br />
dc.b $02,$01,$02,$55,$04,$92,$8E,$8D,$54,$0D,$00,$0C<br />
dc.b $03,$00,$00,$00,$00,$FF,$0F,$2F,$5F,$16,$1D,$2A,$80<br />
dc.b $02,$75,$73,$71,$31,$1F,$96,$58,$9F,$01,$03,$1B<br />
dc.b $08,$01,$01,$04,$05,$FF,$3F,$2F,$2F,$24,$30,$29,$80<br />
dc.b $20,$66,$60,$65,$60,$DF,$9F,$DF,$1F,$00,$09,$06<br />
dc.b $0C,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$1C,$16,$3A,$80<br />
dc.b $0D,$32,$06,$08,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$86,$80,$8D<br />
dc.b $38,$3A,$11,$0A,$02,$D4,$50,$14,$0E,$05,$02,$08<br />
dc.b $88,$00,$00,$00,$00,$99,$09,$09,$1A,$2D,$19,$2C,$86<br />
dc.b $0D,$32,$02,$04,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$8B,$86,$93<br />
dc.b $3A,$20,$60,$23,$01,$1E,$1F,$1F,$1F,$0A,$0B,$0A<br />
dc.b $0A,$05,$0A,$07,$08,$A4,$96,$85,$78,$21,$28,$25,$00<br />
dc.b $3A,$32,$32,$56,$42,$8D,$15,$4F,$52,$06,$07,$08<br />
dc.b $04,$02,$00,$00,$00,$18,$28,$18,$28,$19,$2A,$20,$00<br />
dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$19,$13,$37,$80<br />
dc.b $3D,$01,$02,$02,$02,$14,$8C,$0E,$0E,$08,$02,$05<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$1A,$80,$80,$80<br />
; end of Mus_Credits<br />
<br />
; ------------------------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ------------------------------------------------------------------------------------------<br />
; WARNING the sound driver treats certain sounds specially<br />
; going by the ID of the sound.<br />
; SndID_Ring, SndID_RingLeft, SndID_Gloop, SndID_SpindashRev<br />
; are referenced by the sound driver directly.<br />
; If needed you can change this in s2.sounddriver.asm<br />
<br />
<br />
; NOTE: the exact order of this list determines the priority of each sound, since it determines the sound's SndID.<br />
; a sound can get dropped if a higher-priority sound is already playing.<br />
; the rules for sound priority are currently unknown, but you can generally swap pointer lines around to resolve priority conflicts.<br />
; loc_FEE91: SoundPoint:<br />
SoundIndex:<br />
SndPtr_Jump: rom_ptr_z80 Sound20 ; jumping sound<br />
SndPtr_Checkpoint: rom_ptr_z80 Sound21 ; checkpoint ding-dong sound<br />
SndPtr_SpikeSwitch: rom_ptr_z80 Sound22 ; spike switch sound<br />
SndPtr_Hurt: rom_ptr_z80 Sound23 ; hurt sound<br />
SndPtr_Skidding: rom_ptr_z80 Sound24 ; skidding sound<br />
SndPtr_BlockPush: rom_ptr_z80 Sound25 ; block push sound<br />
SndPtr_HurtBySpikes: rom_ptr_z80 Sound26 ; spiky impalement sound<br />
SndPtr_Sparkle: rom_ptr_z80 Sound27 ; sparkling sound<br />
SndPtr_Beep: rom_ptr_z80 Sound28 ; short beep<br />
SndPtr_Bwoop: rom_ptr_z80 Sound29 ; bwoop<br />
SndPtr_Splash: rom_ptr_z80 Sound2A ; splash sound<br />
SndPtr_Swish: rom_ptr_z80 Sound2B ; swish<br />
SndPtr_BossHit: rom_ptr_z80 Sound2C ; boss hit<br />
SndPtr_InhalingBubble: rom_ptr_z80 Sound2D ; inhaling a bubble<br />
SndPtr_ArrowFiring:<br />
SndPtr_LavaBall: rom_ptr_z80 Sound2E ; arrow firing<br />
SndPtr_Shield: rom_ptr_z80 Sound2F ; shield sound<br />
SndPtr_LaserBeam: rom_ptr_z80 Sound30 ; laser beam<br />
SndPtr_Zap: rom_ptr_z80 Sound31 ; zap<br />
SndPtr_Drown: rom_ptr_z80 Sound32 ; drownage<br />
SndPtr_FireBurn: rom_ptr_z80 Sound33 ; fire + burn<br />
SndPtr_Bumper: rom_ptr_z80 Sound34 ; bumper bing<br />
SndPtr_Ring:<br />
SndPtr_RingRight: rom_ptr_z80 Sound35 ; ring sound<br />
SndPtr_SpikesMove: rom_ptr_z80 Sound36<br />
SndPtr_Rumbling: rom_ptr_z80 Sound37 ; rumbling<br />
rom_ptr_z80 Sound38<br />
SndPtr_Smash: rom_ptr_z80 Sound39 ; smash/breaking<br />
rom_ptr_z80 Sound3A ; nondescript ding<br />
SndPtr_DoorSlam: rom_ptr_z80 Sound3B ; door slamming shut<br />
SndPtr_SpindashRelease: rom_ptr_z80 Sound3C ; spindash unleashed<br />
SndPtr_Hammer: rom_ptr_z80 Sound3D ; slide-thunk<br />
SndPtr_Roll: rom_ptr_z80 Sound3E ; rolling sound<br />
SndPtr_ContinueJingle: rom_ptr_z80 Sound3F ; got continue<br />
SndPtr_CasinoBonus: rom_ptr_z80 Sound40 ; short bonus ding<br />
SndPtr_Explosion: rom_ptr_z80 Sound41 ; badnik bust<br />
SndPtr_WaterWarning: rom_ptr_z80 Sound42 ; warning ding-ding<br />
SndPtr_EnterGiantRing: rom_ptr_z80 Sound43 ; special stage ring flash (unused)<br />
SndPtr_BossExplosion: rom_ptr_z80 Sound44 ; thunk<br />
SndPtr_TallyEnd: rom_ptr_z80 Sound45 ; cha-ching<br />
SndPtr_RingSpill: rom_ptr_z80 Sound46 ; losing rings<br />
rom_ptr_z80 Sound47 ; chain pull chink-chink<br />
SndPtr_Flamethrower: rom_ptr_z80 Sound48 ; flamethrower<br />
SndPtr_Bonus: rom_ptr_z80 Sound49 ; bonus pwoieeew (unused)<br />
SndPtr_SpecStageEntry: rom_ptr_z80 Sound4A ; special stage entry<br />
SndPtr_SlowSmash: rom_ptr_z80 Sound4B ; slower smash/crumble<br />
SndPtr_Spring: rom_ptr_z80 Sound4C ; spring boing<br />
SndPtr_Blip: rom_ptr_z80 Sound4D ; selection blip<br />
SndPtr_RingLeft: rom_ptr_z80 Sound4E ; another ring sound (only plays in the left speaker?)<br />
SndPtr_Signpost: rom_ptr_z80 Sound4F ; signpost spin sound<br />
SndPtr_CNZBossZap: rom_ptr_z80 Sound50 ; mosquito zapper<br />
rom_ptr_z80 Sound51<br />
rom_ptr_z80 Sound52<br />
SndPtr_Signpost2P: rom_ptr_z80 Sound53<br />
SndPtr_OOZLidPop: rom_ptr_z80 Sound54 ; OOZ lid pop sound<br />
SndPtr_SlidingSpike: rom_ptr_z80 Sound55<br />
SndPtr_CNZElevator: rom_ptr_z80 Sound56<br />
SndPtr_PlatformKnock: rom_ptr_z80 Sound57<br />
SndPtr_BonusBumper: rom_ptr_z80 Sound58 ; CNZ bonusy bumper sound<br />
SndPtr_LargeBumper: rom_ptr_z80 Sound59 ; CNZ baaang bumper sound<br />
SndPtr_Gloop: rom_ptr_z80 Sound5A ; CNZ gloop / water droplet sound<br />
SndPtr_PreArrowFiring: rom_ptr_z80 Sound5B<br />
SndPtr_Fire: rom_ptr_z80 Sound5C<br />
SndPtr_ArrowStick: rom_ptr_z80 Sound5D ; chain clink<br />
SndPtr_Helicopter:<br />
SndPtr_WingFortress: rom_ptr_z80 Sound5E ; helicopter<br />
SndPtr_SuperTransform: rom_ptr_z80 Sound5F<br />
SndPtr_SpindashRev: rom_ptr_z80 Sound60 ; spindash charge<br />
SndPtr_Rumbling2: rom_ptr_z80 Sound61 ; rumbling<br />
SndPtr_CNZLaunch: rom_ptr_z80 Sound62<br />
SndPtr_Flipper: rom_ptr_z80 Sound63 ; CNZ blooing bumper<br />
SndPtr_HTZLiftClick: rom_ptr_z80 Sound64 ; HTZ track click sound<br />
SndPtr_Leaves: rom_ptr_z80 Sound65 ; kicking up leaves sound<br />
SndPtr_MegaMackDrop: rom_ptr_z80 Sound66 ; leaf splash?<br />
SndPtr_DrawbridgeMove: rom_ptr_z80 Sound67<br />
SndPtr_QuickDoorSlam: rom_ptr_z80 Sound68 ; door slamming quickly (seems unused)<br />
SndPtr_DrawbridgeDown: rom_ptr_z80 Sound69<br />
SndPtr_LaserBurst: rom_ptr_z80 Sound6A ; robotic laser burst<br />
SndPtr_Scatter:<br />
SndPtr_LaserFloor: rom_ptr_z80 Sound6B ; scatter<br />
SndPtr_Teleport: rom_ptr_z80 Sound6C<br />
SndPtr_Error: rom_ptr_z80 Sound6D ; error sound<br />
SndPtr_MechaSonicBuzz: rom_ptr_z80 Sound6E ; silver sonic buzz saw<br />
SndPtr_LargeLaser: rom_ptr_z80 Sound6F<br />
SndPtr_OilSlide: rom_ptr_z80 Sound70<br />
SndPtr__End:<br />
<br />
; There are many non-relative pointers in these sound effects,<br />
; so the sounds shouldn't simply be BINCLUDE'd.<br />
; They could be included as separate .asm files using "include" instead of "binclude",<br />
; but I wanted to minimize the number of included asm files.<br />
<br />
; some comments on what the various script commands do (after the header):<br />
; 0x00-0x7F sets the note duration (of the previous note and following notes)<br />
; 0x81-0xDF plays a note (the valid range may be smaller for PSG or DAC)<br />
; 0x80 plays silence<br />
; 0xE0-0xFF does special things. I won't list them here... search for "Coordination flags" sonic 2.<br />
<br />
; the FM voices (poorly named "ssamp" or "samples" below)<br />
; are 25 bytes each and go directly to YM2612 registers.<br />
; they can be hard to edit (there's an art to it)<br />
; but search for sonic "Voice editing" for more info if you want to try.<br />
<br />
; jumping sound<br />
Sound20: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$F400<br />
+ dc.b $F5,$00,$9E,$05,$F0,$02,$01,$F8,$65,$A3,$15,$F2<br />
<br />
; checkpoint ding-dong sound<br />
Sound21: dc.w z80_ptr(ssamp21),$0101<br />
dc.w $8005,z80_ptr(+),$0001<br />
ssamp21: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
+ dc.b $EF,$00,$BD,$06,$BA,$16,$F2<br />
<br />
; spike switch sound<br />
Sound22: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C0,$04,$CA,$04<br />
- dc.b $C0,$01,$EC<br />
dc.w $01F7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; hurt sound<br />
Sound23: dc.w z80_ptr(ssamp23),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B0,$07,$E7,$AD<br />
- dc.b $01,$E6<br />
dc.w $01F7,$002F,z80_ptr(-)<br />
dc.b $F2<br />
ssamp23: dc.b $30,$30,$30,$30,$30,$9E,$DC,$D8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$14,$14,$3C,$80<br />
<br />
; skidding sound<br />
Sound24: dc.w $0000,$0102 ; sound header... no sample and 2 script entries<br />
dc.w $80A0,z80_ptr(+),$F400 ; entry 1 header<br />
dc.w $80C0,z80_ptr(++),$F400 ; entry 2 header<br />
+ dc.b $F5,$00,$AF,$01,$80,$AF,$80,$03 ; script entry 1<br />
- dc.b $AF,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 1 end<br />
+ dc.b $F5,$00,$80,$01,$AD,$80,$AD,$80,$03 ; script entry 2<br />
- dc.b $AD,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 2 end<br />
<br />
; block push sound<br />
Sound25: dc.w z80_ptr(ssamp25),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$01,$8B,$0A,$80,$02,$F2<br />
ssamp25: dc.b $FA,$21,$10,$30,$32,$2F,$2F,$1F,$2F,$05,$09,$08<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
; spiky impalement sound<br />
Sound26: dc.w z80_ptr(ssamp26),$0101<br />
dc.w $8005,z80_ptr(+),$F200<br />
+ dc.b $EF,$00,$F0,$01,$01,$10,$FF,$CF,$05,$D7,$25,$F2<br />
ssamp26: dc.b $3B,$3C,$30,$39,$31,$DF,$1F,$1F,$DF,$04,$04,$05<br />
dc.b $01,$04,$04,$04,$02,$FF,$1F,$0F,$AF,$29,$0F,$20,$80<br />
<br />
; sparkling sound<br />
Sound27: dc.w z80_ptr(ssamp27),$0101<br />
dc.w $8004,z80_ptr(+),$0C1C<br />
+ dc.b $EF,$00,$C1,$05,$C4,$05,$C9,$2B,$F2<br />
ssamp27: dc.b $07,$73,$33,$33,$73,$0F,$19,$14,$1A,$0A,$0A,$0A<br />
dc.b $0A,$0A,$0A,$0A,$0A,$57,$57,$57,$57,$00,$00,$00,$00<br />
<br />
; short beep<br />
Sound28: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$E803<br />
+ dc.b $F5,$04,$CB,$04,$F2<br />
<br />
; bwoop<br />
Sound29: dc.w $0000,$0101<br />
dc.w $80A0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$E6,$35,$8E,$06,$F2<br />
<br />
; splash sound<br />
Sound2A: dc.w z80_ptr(ssamp2A),$0102<br />
dc.w $80C0,z80_ptr(+),$0000<br />
dc.w $8005,z80_ptr(++),$0003<br />
+ dc.b $F5,$00,$F3,$E7,$C2,$05,$C6,$05,$E7<br />
- dc.b $07,$EC,$01<br />
dc.w $E7F7,$000F,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$A6,$14,$F2<br />
ssamp2A: dc.b $00,$00,$02,$03,$00,$D9,$1F,$DF,$1F,$12,$14,$11<br />
dc.b $0F,$0A,$0A,$00,$0D,$FF,$FF,$FF,$FF,$22,$27,$07,$80<br />
<br />
; swish<br />
Sound2B: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$C6,$03,$80,$03,$C6,$01,$E7<br />
- dc.b $01,$EC,$01<br />
dc.w $E7F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; boss hit<br />
Sound2C: dc.w z80_ptr(smashsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$0C,$01<br />
- dc.b $81,$0A,$E6<br />
dc.w $10F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
smashsamp: dc.b $F9,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
<br />
; inhaling a bubble<br />
Sound2D: dc.w z80_ptr(ssamp2D),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$21,$6E,$A6,$07<br />
dc.b $80,$06,$F0,$01,$01,$44,$1E,$AD,$08,$F2<br />
ssamp2D: dc.b $35,$05,$08,$09,$07,$1E,$0D,$0D,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$1F,$2F,$1F,$15,$12,$12,$80<br />
<br />
; arrow firing<br />
Sound2E: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$C6,$01,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp2E: dc.b $FA,$02,$00,$03,$05,$12,$0F,$11,$13,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$2F,$0E,$1A,$80<br />
<br />
; shield sound<br />
Sound2F: dc.w z80_ptr(ssamp2F),$0101<br />
dc.w $8005,z80_ptr(+),$0C00<br />
+ dc.b $EF,$00,$80,$01,$A3,$05,$E7,$A4,$26,$F2<br />
ssamp2F: dc.b $30,$30,$30,$30,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$04,$14,$2C,$80<br />
<br />
; laser beam<br />
Sound30: dc.w z80_ptr(ssamp30),$0101 ; sound header... a voice and 1 script entry<br />
dc.w $8005,z80_ptr(+),$FB05 ; script entry header<br />
+ dc.b $EF,$00,$DF,$7F ; script start<br />
- dc.b $DF,$02,$E6 ; script continued<br />
dc.w $01F7,$001B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script end<br />
ssamp30: dc.b $83,$1F,$1F,$15,$1F,$1F,$1F,$1F,$1F,$00,$00,$00 ; voice<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$0B,$01,$16,$82 ; (fixed length)<br />
<br />
; zap<br />
Sound31: dc.w z80_ptr(ssamp31),$0101<br />
dc.w $8005,z80_ptr(+),$FB02<br />
+ dc.b $EF,$00,$B3,$05,$80,$01,$B3,$09,$F2<br />
ssamp31: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$05,$34,$10,$87<br />
<br />
; drownage<br />
Sound32: dc.w z80_ptr(ssamp32),$0102<br />
dc.w $8004,z80_ptr(++),$0C04<br />
dc.w $8005,z80_ptr(+),$0E02<br />
+ dc.b $EF,$00,$F0,$01,$01,$83,$0C<br />
- dc.b $8A,$05,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $80,$06,$EF,$00,$F0,$01,$01,$6F,$0E<br />
- dc.b $8D,$04,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp32: dc.b $35,$14,$04,$1A,$09,$0E,$11,$10,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$4F,$2F,$4F,$2F,$12,$12,$80<br />
<br />
; fire + burn<br />
Sound33: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$A7,$25,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; bumper bing<br />
Sound34: dc.w z80_ptr(ssamp34),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $8002,z80_ptr(+++),$0002<br />
+ dc.b $EF,$00,$F6<br />
dc.w z80_ptr(Sound34_3)<br />
+ dc.b $EF,$00,$E1,$07,$80,$01<br />
Sound34_3:<br />
dc.b $BA,$20,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
ssamp34: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$1F,$2B,$80,$80<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; ring sound<br />
Sound35: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$40,$C1,$05,$C4,$05,$C9,$1B,$F2<br />
<br />
<br />
Sound36: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C1,$07<br />
- dc.b $D0,$01,$EC<br />
dc.w $01F7,$000C,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; rumbling<br />
Sound37: dc.w z80_ptr(ssamp37),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$20,$08<br />
- dc.b $8B<br />
dc.w $0AF7,$0008,z80_ptr(-)<br />
- dc.b $8B,$10,$E6<br />
dc.w $03F7,$0009,z80_ptr(-)<br />
dc.b $F2<br />
ssamp37: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
<br />
Sound38: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$B4,$08<br />
- dc.b $B0,$02,$EC<br />
dc.w $01F7,$0003,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; smash/breaking<br />
Sound39: dc.w z80_ptr(smashsamp),$0104<br />
dc.w $8002,z80_ptr(+),$1000<br />
dc.w $8004,z80_ptr(+++),$0000<br />
dc.w $8005,z80_ptr(++),$1000<br />
dc.w $80C0,z80_ptr(s39s4),$0000<br />
+ dc.b $E0,$40,$80,$02,$F6<br />
dc.w z80_ptr(++)<br />
+ dc.b $E0,$80,$80,$01<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
s39s4: dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; nondescript ding<br />
Sound3A: dc.w z80_ptr(ssamp3A),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$AE,$08,$F2<br />
ssamp3A: dc.b $1C,$2E,$0F,$02,$02,$1F,$1F,$1F,$1F,$18,$14,$0F<br />
dc.b $0E,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$20,$1B,$80,$80<br />
<br />
; door slamming shut<br />
Sound3B: dc.w z80_ptr(ssamp3B),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$80,$A0,$06,$F2<br />
ssamp3B: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; spindash unleashed<br />
Sound3C: dc.w z80_ptr(ssamp3C),$0102<br />
dc.w $8005,z80_ptr(+),$9000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$F2<br />
+ dc.b $F5,$07,$80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$4F,$F2<br />
ssamp3C: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
<br />
; slide-thunk<br />
Sound3D: dc.w z80_ptr(ssamp3D),$0102<br />
dc.w $8005,z80_ptr(+),$100A<br />
dc.w $8004,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$60,$01,$A7,$08,$F2<br />
+ dc.b $80,$08,$EF,$01,$84,$22,$F2<br />
ssamp3D: dc.b $FA,$21,$19,$3A,$30,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
dc.b $FA,$31,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$1F,$2F,$2F,$0D,$01,$00,$80<br />
<br />
; rolling sound<br />
Sound3E: dc.w z80_ptr(ssamp3E),$0101<br />
dc.w $8004,z80_ptr(+),$0C05<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$09,$FF,$CA,$25,$F4<br />
- dc.b $E7,$E6,$01,$D0<br />
dc.w $02F7,$002A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3E: dc.b $3C,$00,$02,$44,$02,$1F,$1F,$1F,$15,$00,$00,$1F<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0D,$28,$00,$00<br />
<br />
; got continue<br />
Sound3F: dc.w z80_ptr(ssamp3F),$0103<br />
dc.w $8002,z80_ptr(+),$F406<br />
dc.w $8004,z80_ptr(++),$F406<br />
dc.w $8005,z80_ptr(+++),$F406<br />
+ dc.b $EF,$00,$C9,$07,$CD,$D0,$CB,$CE,$D2,$CD,$D0,$D4,$CE,$D2,$D5<br />
- dc.b $D0,$07,$D4,$D7,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$80,$07,$CD,$15,$CE,$D0,$D2<br />
- dc.b $D4,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$C9,$15,$CB,$CD,$CE<br />
- dc.b $D0,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3F: dc.b $14,$25,$36,$33,$11,$1F,$1F,$1F,$1F,$15,$1C,$18<br />
dc.b $13,$0B,$0D,$08,$09,$0F,$8F,$9F,$0F,$24,$0A,$05,$80<br />
<br />
; short bonus ding<br />
Sound40: dc.w z80_ptr(ssamp3F),$0102<br />
dc.w $8005,z80_ptr(++),$0008<br />
dc.w $8004,z80_ptr(+),$0008<br />
+ dc.b $E1,$03,$80,$02<br />
+ dc.b $EF,$00,$C4,$16,$F2<br />
<br />
; badnik bust<br />
Sound41: dc.w z80_ptr(ssamp41),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0002<br />
+ dc.b $F0,$03,$01,$72,$0B,$EF,$00,$BA,$16,$F2<br />
+ dc.b $F5,$01,$F3,$E7,$B0,$1B,$F2<br />
ssamp41: dc.b $3C,$0F,$03,$01,$01,$1F,$1F,$1F,$1F,$19,$19,$12<br />
dc.b $0E,$05,$00,$12,$0F,$0F,$FF,$7F,$FF,$00,$00,$80,$80<br />
<br />
; warning ding-ding<br />
Sound42: dc.w z80_ptr(ssamp3F),$0101<br />
dc.w $8005,z80_ptr(+),$0C08<br />
+ dc.b $EF,$00,$BA,$08,$BA,$25,$F2<br />
<br />
; special stage ring flash (unused)<br />
Sound43: dc.w z80_ptr(ssamp43),$0102<br />
dc.w $8004,z80_ptr(+),$0C00<br />
dc.w $8005,z80_ptr(++),$0013<br />
+ dc.b $EF,$01,$80,$01,$A2,$08,$EF,$00,$E7,$AD,$26,$F2<br />
+ dc.b $EF,$02,$F0,$06,$01,$03,$FF,$80,$0A<br />
- dc.b $C3<br />
dc.w $06F7,$0005,z80_ptr(-)<br />
dc.b $C3,$17,$F2<br />
ssamp43: dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$1C,$80<br />
dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$2C,$80<br />
dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$13,$13,$81,$88<br />
<br />
; thunk<br />
Sound44: dc.w z80_ptr(ssamp44),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$8A,$22,$F2<br />
ssamp44: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$4F,$2F,$2F,$0D,$04,$07,$80<br />
<br />
; cha-ching<br />
Sound45: dc.w z80_ptr(ssamp45),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$8A,$08,$80,$02,$8A,$08,$F2<br />
+ dc.b $EF,$01,$80,$12,$C6,$55,$F2<br />
+ dc.b $F5,$02,$F3,$E7,$80,$02,$C2,$05,$C4,$04,$C2,$05,$C4,$04,$F2<br />
ssamp45: dc.b $3B,$03,$02,$02,$06,$18,$1A,$1A,$96,$17,$0A,$0E<br />
dc.b $10,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$39,$28,$80<br />
ringsamp: dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$23,$80,$80<br />
<br />
; losing rings (scatter)<br />
Sound46: dc.w z80_ptr(ringsamp),$0102<br />
dc.w $8004,z80_ptr(+),$0005<br />
dc.w $8005,z80_ptr(++),$0008<br />
+ dc.b $EF,$00,$C6,$02,$05,$05,$05,$05,$05,$05,$3A,$F2<br />
+ dc.b $EF,$00,$80,$02,$C4,$02,$05,$15,$02,$05,$32,$F2<br />
<br />
; chain pull chink-chink<br />
Sound47: dc.w z80_ptr(ssamp47),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$BE,$05,$80,$04,$BE,$04,$80,$04,$F2<br />
ssamp47: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; flamethrower<br />
Sound48: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$25,$F2<br />
<br />
; bonus pwoieeew (unused)<br />
Sound49: dc.w z80_ptr(ssamp49),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$33,$18,$B9,$1A,$F2<br />
ssamp49: dc.b $3B,$0A,$05,$31,$02,$5F,$5F,$5F,$5F,$04,$16,$14<br />
dc.b $0C,$00,$00,$04,$00,$1F,$D8,$6F,$FF,$03,$00,$25,$80<br />
<br />
; special stage entry<br />
Sound4A: dc.w z80_ptr(ssamp4A),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$F0,$01,$01,$5B,$02,$CC,$65,$F2<br />
ssamp4A: dc.b $20,$36,$30,$35,$31,$41,$3B,$49,$4B,$09,$09,$06<br />
dc.b $08,$01,$02,$03,$A9,$0F,$0F,$0F,$0F,$29,$23,$27,$80<br />
<br />
; slower smash/crumble<br />
Sound4B: dc.w z80_ptr(smashsamp),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; spring boing<br />
Sound4C: dc.w z80_ptr(ssamp4C),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$5D,$0F,$B0,$0C,$F4<br />
- dc.b $E7,$E6,$02,$BD<br />
dc.w $02F7,$0019,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4C: dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$16,$13,$30,$80<br />
<br />
; selection blip<br />
Sound4D: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $BB,$02,$F2<br />
<br />
; another ring sound (only plays in the left speaker?)<br />
Sound4E: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8004,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$80,$C1,$04,$C4,$05,$C9,$1B,$F2<br />
<br />
; signpost spin sound<br />
Sound4F: dc.w z80_ptr(ssamp4F),$0102<br />
dc.w $8004,z80_ptr(+),$2703<br />
dc.w $8005,z80_ptr(++),$2700<br />
+ dc.b $80,$04<br />
+ dc.b $EF,$00<br />
- dc.b $B4,$05,$E6<br />
dc.w $02F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4F: dc.b $F4,$06,$0F,$04,$0E,$1F,$1F,$1F,$1F,$00,$0B,$00<br />
dc.b $0B,$00,$05,$00,$08,$0F,$FF,$0F,$FF,$0C,$03,$8B,$80<br />
<br />
; mosquito zapper<br />
Sound50: dc.w z80_ptr(ssamp50),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B3,$04,$80,$01<br />
- dc.b $B4,$04,$80<br />
dc.w $01F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
ssamp50: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$06,$34,$10,$87<br />
<br />
<br />
Sound51: dc.w z80_ptr(ssamp51),$0102<br />
dc.w $80C0,z80_ptr(+),$0001<br />
dc.w $8005,z80_ptr(++),$000B<br />
+ dc.b $F5,$02,$F3,$E4,$B0,$04,$85,$02,$F2<br />
+ dc.b $EF,$00,$E8,$04,$A5,$06,$F2<br />
ssamp51: dc.b $3C,$02,$01,$00,$01,$1F,$1F,$1F,$1F,$00,$19,$0E<br />
dc.b $10,$00,$00,$0C,$0F,$0F,$FF,$EF,$FF,$05,$00,$80,$80<br />
<br />
<br />
Sound52: dc.w z80_ptr(ssamp52),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $F0,$01,$01,$2A,$07,$EF,$00<br />
- dc.b $A5,$03<br />
dc.w $E7F7,$0013,z80_ptr(-)<br />
- dc.b $A5,$03,$E7,$E6<br />
dc.w $02F7,$0013,z80_ptr(-)<br />
dc.b $F2<br />
ssamp52: dc.b $28,$21,$21,$21,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$29,$20,$29,$80<br />
<br />
<br />
Sound53: dc.w z80_ptr(ssamp53),$0101<br />
dc.w $8005,z80_ptr(+),$F503<br />
+ dc.b $EF,$00,$F0,$01,$01,$46,$09,$A7,$14,$E7,$14,$E7,$E6,$04<br />
dc.b $14,$E7,$E6,$04,$14,$E7,$E6,$04,$0A,$E7,$E6,$04,$0A,$F2<br />
ssamp53: dc.b $07,$0A,$0C,$0C,$0C,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$2A,$0F,$0F,$80<br />
<br />
; OOZ lid pop sound<br />
Sound54: dc.w z80_ptr(ssamp54),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0006<br />
+ dc.b $EF,$00,$B6,$15,$F2<br />
+ dc.b $F3,$E7,$F5,$04,$C6,$03,$E7,$C5,$E7<br />
dc.b $C4,$E7,$C3,$E7,$C2,$E7,$C1,$E7,$C0,$F2<br />
ssamp54: dc.b $07,$03,$02,$03,$00,$FF,$6F,$6F,$3F,$12,$14,$11<br />
dc.b $0E,$1A,$0A,$03,$0D,$FF,$FF,$FF,$FF,$03,$07,$07,$80<br />
<br />
<br />
Sound55: dc.w z80_ptr(ssamp55),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$AA,$07,$B6,$15,$F2<br />
ssamp55: dc.b $42,$20,$0E,$0F,$0F,$1F,$1F,$1F,$1F,$1F,$1F,$1F<br />
dc.b $1F,$0F,$0E,$0F,$0E,$0F,$0F,$0F,$0F,$2E,$80,$20,$80<br />
<br />
<br />
Sound56: dc.w z80_ptr(ssamp56),$0101<br />
dc.w $8005,z80_ptr(+),$100E<br />
+ dc.b $EF,$00,$F0,$01,$01,$1E,$FF,$8F,$1C,$F4<br />
- dc.b $E7,$9A<br />
dc.w $05F7,$0009,z80_ptr(-)<br />
- dc.b $E7,$9A,$04,$E6,$02,$E7,$9A,$04,$E6<br />
dc.w $02F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp56: dc.b $0D,$06,$00,$00,$E5,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$27,$80,$80,$80<br />
<br />
<br />
Sound57: dc.w z80_ptr(ssamp57),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$CA,$15,$F2<br />
ssamp57: dc.b $04,$09,$70,$00,$30,$1C,$1F,$DF,$1F,$15,$12,$0B<br />
dc.b $0F,$0C,$0D,$00,$0D,$07,$2F,$FA,$FA,$00,$29,$00,$00<br />
<br />
; CNZ bonusy bumper sound<br />
Sound58: dc.w z80_ptr(ssamp58),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$B3,$06,$B3,$15,$F2<br />
ssamp58: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
<br />
; CNZ baaang bumper sound<br />
Sound59: dc.w z80_ptr(ssamp59),$0103<br />
dc.w $8004,z80_ptr(+),$0000<br />
dc.w $8002,z80_ptr(++),$0002<br />
dc.w $8005,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$E1,$0C,$B5,$14,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
+ dc.b $EF,$00,$B6,$14,$F2<br />
ssamp59: dc.b $32,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $0D,$00,$01,$01,$0C,$00,$23,$C3,$F6,$08,$07,$1C,$03<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; CNZ gloop / water droplet sound<br />
Sound5A: dc.w z80_ptr(ssamp5A),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$7F,$F1,$AA,$0A,$F2<br />
ssamp5A: dc.b $47,$03,$02,$02,$04,$5F,$5F,$5F,$5F,$0E,$1A,$11<br />
dc.b $0A,$09,$0A,$0A,$0A,$4F,$3F,$3F,$3F,$7F,$80,$80,$A3<br />
<br />
<br />
Sound5B: dc.w z80_ptr(ssamp5B),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$02,$A5,$01,$E7<br />
- dc.b $01,$E7,$E6<br />
dc.w $02F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5B: dc.b $38,$0F,$0F,$0F,$0F,$1F,$1F,$1F,$0E,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$1F,$00,$00,$00,$80<br />
<br />
<br />
Sound5C: dc.w z80_ptr(ssamp5C),$0102<br />
dc.w $8004,z80_ptr(+),$000E<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$85,$40<br />
- dc.b $E7,$04,$E6<br />
dc.w $04F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$40<br />
- dc.b $E7,$08,$E6<br />
dc.w $01F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5C: dc.b $FA,$12,$01,$01,$01,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$81,$8E,$14,$80<br />
<br />
; chain clink<br />
Sound5D: dc.w z80_ptr(ssamp5D),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$C0,$04,$F2<br />
ssamp5D: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; helicopter<br />
Sound5E: dc.w z80_ptr(ssamp5E),$0101<br />
dc.w $8002,z80_ptr(+),$1405<br />
+ dc.b $EF,$00<br />
- dc.b $95,$02,$95<br />
dc.w $01F7,$0013,z80_ptr(-)<br />
- dc.b $95,$02,$95,$01,$E6<br />
dc.w $01F7,$001B,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5E: dc.b $35,$30,$44,$40,$51,$1F,$1F,$1F,$1F,$10,$00,$13<br />
dc.b $15,$1F,$00,$1F,$1A,$7F,$0F,$7F,$5F,$02,$A8,$80,$80<br />
<br />
<br />
Sound5F: dc.w z80_ptr(ssamp5F),$0103<br />
dc.w $8005,z80_ptr(s5Fs1),$0000<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
s5Fs1 dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$E6,$0A,$80<br />
dc.b $06,$EF,$01,$F0,$01,$01,$11,$FF,$A2,$28<br />
- dc.b $E7,$03,$E6<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs2 dc.b $80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$1D<br />
- dc.b $E7,$07,$EC<br />
dc.w $01F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs3 dc.b $80,$16,$F5,$03<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $FFF7,$0005,z80_ptr(-)<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $01F7,$0007,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5F: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
dc.b $3A,$70,$30,$04,$01,$0F,$14,$19,$16,$08,$0A,$0B<br />
dc.b $05,$03,$03,$03,$05,$1F,$6F,$8F,$5F,$1F,$22,$1F,$80<br />
<br />
; spindash charge<br />
Sound60: dc.w z80_ptr(ssamp60),$0101<br />
dc.w $8005,z80_ptr(+),$FE00<br />
+ dc.b $EF,$00,$F0,$00,$01,$20,$F6,$C4,$16,$E7,$F4,$D0,$18,$E7<br />
- dc.b $04,$E7,$E6<br />
dc.w $03F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp60: dc.b $34,$00,$03,$0C,$09,$9F,$8C,$8F,$95,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$00,$1D,$00,$00<br />
<br />
; rumbling<br />
Sound61: dc.w z80_ptr(ssamp61),$0101<br />
dc.w $8004,z80_ptr(+),$0004<br />
+ dc.b $80,$01,$EF,$00,$F0,$00,$01,$70,$06,$82,$06,$85,$08,$83<br />
dc.b $01,$82,$05,$86,$06,$89,$03,$82,$08,$88,$04,$82,$06,$E6<br />
dc.b $02,$85,$08,$E6,$02,$83,$01,$E6,$02,$82,$05,$E6,$02,$86<br />
dc.b $06,$E6,$02,$89,$03,$E6,$02,$82,$08,$E6,$02,$88,$04,$E6,$02,$F2<br />
ssamp61: dc.b $32,$30,$30,$50,$30,$1F,$0E,$19,$0E,$07,$12,$15<br />
dc.b $09,$0A,$09,$1D,$06,$E8,$03,$0A,$17,$07,$00,$00,$00<br />
<br />
<br />
Sound62: dc.w z80_ptr(ssamp62),$0101<br />
dc.w $8005,z80_ptr(+),$FF00<br />
+ dc.b $EF,$00,$A6,$05,$F0,$01,$01,$E7,$40<br />
- dc.b $C4,$02,$E7,$E6<br />
dc.w $01F7,$0012,z80_ptr(-)<br />
dc.b $F2<br />
ssamp62: dc.b $34,$0C,$10,$73,$0C,$AF,$AC,$FF,$D5,$06,$00,$02<br />
dc.b $01,$02,$0A,$04,$08,$BF,$BF,$BF,$BF,$00,$08,$80,$80<br />
<br />
; CNZ blooing bumper<br />
Sound63: dc.w z80_ptr(ssamp63),$0101<br />
dc.w $8005,z80_ptr(+),$0907<br />
+ dc.b $EF,$00,$F0,$01,$01,$04,$56,$92,$03,$9A,$25,$F2<br />
ssamp63: dc.b $3D,$12,$10,$77,$30,$5F,$5F,$5F,$5F,$0F,$0A,$00<br />
dc.b $01,$0A,$0A,$0D,$0D,$4F,$0F,$0F,$0F,$13,$80,$80,$80<br />
<br />
; HTZ track click sound<br />
Sound64: dc.w z80_ptr(ssamp64),$0101<br />
dc.w $8005,z80_ptr(+),$1100<br />
+ dc.b $EF,$00,$C7,$02,$F2<br />
ssamp64: dc.b $24,$2A,$02,$05,$01,$1A,$1F,$10,$1F,$0F,$1F,$1F<br />
dc.b $1F,$0C,$0D,$11,$11,$0C,$09,$09,$0F,$0E,$04,$80,$80<br />
<br />
; kicking up leaves sound<br />
Sound65: dc.w z80_ptr(ssamp65),$0101<br />
dc.w $80C0,z80_ptr(+),$F800<br />
+ dc.b $F5,$03,$F3,$E7,$CE,$03,$F5,$06,$CE,$04,$EC<br />
dc.b $02,$CE,$02,$F5,$03,$EC,$FE,$CE,$08,$CE,$18,$F2<br />
ssamp65: ; uhm... apparently they forgot to null out the pointer to here.<br />
; luckily, sound 65 doesn't really use its sample<br />
<br />
; leaf splash?<br />
Sound66: dc.w z80_ptr(ssamp66),$0102<br />
dc.w $8005,z80_ptr(++),$EE08<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$F5,$09,$C6,$36,$F2<br />
+ dc.b $EF,$00,$80,$01,$92,$02,$02,$02,$30,$F2<br />
ssamp66: dc.b $32,$33,$17,$34,$13,$0F,$0D,$1B,$17,$00,$04,$02<br />
dc.b $0B,$08,$00,$08,$09,$6F,$5F,$4F,$6F,$05,$00,$00,$80<br />
<br />
<br />
Sound67: dc.w z80_ptr(ssamp67),$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$06,$F3,$E7,$90,$0A,$94,$0A,$98,$0A,$9C<br />
dc.b $0A,$A0,$0A,$A4,$08,$A8,$08,$AC,$08,$B0,$08,$F2<br />
ssamp67: ; another not-really-used sample (like Sound65)<br />
<br />
; door slamming quickly (seems unused)<br />
Sound68: dc.w z80_ptr(ssamp68),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$A5,$06,$F2<br />
ssamp68: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
<br />
Sound69: dc.w z80_ptr(ssamp69),$0102<br />
dc.w $8005,z80_ptr(+),$F400<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$9B,$03,$A8,$06,$9E,$08,$F2<br />
+ dc.b $F5,$04,$F3,$E7,$C6,$03,$C6,$06,$C6,$08,$F2<br />
ssamp69: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; robotic laser burst<br />
Sound6A: dc.w z80_ptr(ssamp6A),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$DF,$14,$E6,$18,$06,$F2<br />
ssamp6A: dc.b $3D,$09,$34,$34,$28,$1F,$16,$16,$16,$00,$00,$00<br />
dc.b $04,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$15,$02,$02,$00<br />
<br />
; scatter<br />
Sound6B: dc.w z80_ptr(ssamp6B),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$81,$04,$80,$0C,$F2<br />
ssamp6B: dc.b $3A,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $07,$00,$01,$01,$03,$00,$23,$C3,$46,$08,$07,$1C,$03<br />
<br />
<br />
Sound6C: dc.w z80_ptr(ssamp6C),$0104<br />
dc.w $8005,z80_ptr(++),$0010<br />
dc.w $8004,z80_ptr(+),$0010<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
+ dc.b $E1,$10<br />
+ dc.b $EF,$01,$F0,$01,$01,$EC,$56,$C0,$24,$F4,$EF,$00,$E6,$F0<br />
- dc.b $BB,$02,$E7,$E6,$02,$E9<br />
dc.w $01F7,$0020,z80_ptr(-)<br />
dc.b $F2<br />
ssamp6C: dc.b $00,$53,$30,$03,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$06,$23,$80<br />
dc.b $3C,$72,$32,$32,$72,$14,$14,$0F,$0F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$02,$02,$08,$08,$35,$14,$00,$00<br />
<br />
; error sound<br />
Sound6D: dc.w z80_ptr(ssamp6D),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$B0,$06,$80,$06,$B0,$18,$F2<br />
ssamp6D: dc.b $38,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$1F,$0C,$17,$00<br />
<br />
; silver sonic buzz saw<br />
Sound6E: dc.w z80_ptr(ssamp6E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$C6,$24,$E7<br />
- dc.b $C6,$04,$E7,$E6<br />
dc.w $04F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F3,$E7,$C7,$44,$F2<br />
ssamp6E: dc.b $33,$00,$10,$00,$31,$1F,$1D,$1E,$0E,$00,$0C,$1D<br />
dc.b $00,$00,$00,$01,$00,$0F,$0F,$0F,$0F,$08,$06,$07,$80<br />
<br />
<br />
Sound6F: dc.w z80_ptr(ssamp6A),$0103<br />
dc.w $8005,z80_ptr(++),$000B<br />
dc.w $8004,z80_ptr(+),$0012<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $E1,$02,$80,$02<br />
+ dc.b $EF,$00,$E6,$0C,$DF,$06,$E7,$E6,$F4,$06,$E7<br />
dc.b $E6,$F4,$12,$E7,$E6,$0C,$06,$E7,$E6,$0C,$06,$F2<br />
+ dc.b $F3,$E7,$C6,$04,$C0,$BA,$B4,$AE,$E6<br />
dc.b $01,$AE,$E6,$01,$AE,$E6,$01,$AE,$F2<br />
<br />
<br />
Sound70: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$C6,$18<br />
- dc.b $E7,$03,$E6<br />
dc.w $01F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to the other bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
; share these symbols externally (WARNING: don't rename, move or remove these labels!)<br />
shared movewZ80CompSize<br />
</asm><br />
<br />
We want to replace it with this optimized code:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===sound playback routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(A0)<br />
bpl.s SkipPlaySound<br />
bra.s PlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopZ80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startZ80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
</asm></div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208742
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-24T23:48:24Z
<p>Kram1024: /* sound playback routines */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==<br />
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><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
move sr,-(sp)<br />
movem.l d0-a6,-(sp)<br />
move #$2700,sr<br />
lea (Z80_Bus_Request).l,a3<br />
lea (Z80_Reset).l,a2<br />
moveq #0,d2<br />
move.w #$100,d1<br />
move.w d1,(a3) ; get Z80 bus<br />
move.w d1,(a2) ; release Z80 reset (was held high by console on startup)<br />
- btst d2,(a3)<br />
bne.s - ; wait until the 68000 has the bus<br />
jsr DecompressSoundDriver(pc)<br />
btst #0,(VDP_control_port+1).l ; check video mode<br />
sne (Z80_RAM+zPalModeByte).l ; set if PAL<br />
move.w d2,(a2) ; hold Z80 reset<br />
move.w d2,(a3) ; release Z80 bus<br />
moveq #$E6,d0<br />
- dbf d0,- ; wait for 2,314 cycles<br />
move.w d1,(a2) ; release Z80 reset<br />
movem.l (sp)+,d0-a6<br />
move (sp)+,sr<br />
rts<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; slightly modified Saxman decompression of the sound driver<br />
; a4 == $A00000 (start of Z80 RAM)<br />
; a5 == current position in Z80 RAM?<br />
; a6 == current position in compressed sound driver?<br />
; d0 == data to decompress? (byte)<br />
; d4 == ???<br />
; d5 == ???<br />
; d6 == ???<br />
; d7 == bytes left to decompress<br />
; loc_EC04A:<br />
DecompressSoundDriver:<br />
lea Snd_Driver(pc),a6<br />
; WARNING: the build script needs editing if you rename this label<br />
movewZ80CompSize: move.w #Snd_Driver_End-Snd_Driver,d7 ; patched (by fixpointer.exe) after compression since the exact size can't be known beforehand<br />
moveq #0,d6<br />
lea (Z80_RAM).l,a5<br />
moveq #0,d5<br />
lea (Z80_RAM).l,a4<br />
<br />
loc_EC062:<br />
lsr.w #1,d6<br />
btst #8,d6<br />
bne.s +<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d6<br />
ori.w #$FF00,d6<br />
+<br />
btst #0,d6<br />
beq.s loc_EC086<br />
jsr sub_EC0DE(pc)<br />
move.b d0,(a5)+<br />
addq.w #1,d5<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC086:<br />
jsr sub_EC0DE(pc)<br />
moveq #0,d4<br />
move.b d0,d4<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d3<br />
andi.w #$F,d3<br />
addq.w #2,d3<br />
andi.w #$F0,d0<br />
lsl.w #4,d0<br />
add.w d0,d4<br />
addi.w #$12,d4<br />
andi.w #$FFF,d4<br />
move.w d5,d0<br />
andi.w #$F000,d0<br />
add.w d0,d4<br />
cmp.w d4,d5<br />
bhs.s loc_EC0CC<br />
subi.w #$1000,d4<br />
bcc.s loc_EC0CC<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b #0,(a5)+<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC0CC:<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b (a4,d4.w),(a5)+<br />
addq.w #1,d4<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; End of function DecompressSoundDriver<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_EC0DE:<br />
move.b (a6)+,d0<br />
subq.w #1,d7<br />
bne.s +<br />
addq.w #4,sp<br />
+<br />
rts<br />
; End of function sub_EC0DE<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; S2 sound driver (Sound driver compression (slightly modified Saxman))<br />
; ---------------------------------------------------------------------------<br />
; loc_EC0E8:<br />
Snd_Driver:<br />
save<br />
include "s2.sounddriver.asm" ; CPU Z80<br />
restore<br />
padding off<br />
!org (Snd_Driver+Size_of_Snd_driver_guess) ; don't worry; I know what I'm doing<br />
<br />
<br />
; loc_ED04C:<br />
Snd_Driver_End:<br />
<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ---------------------------------------------------------------------------<br />
; the DAC data has to line up with the end of the bank.<br />
<br />
; actually it only has to fit within one bank, but we'll line it up to the end anyway<br />
; because the padding gives the sound driver some room to grow<br />
cnop -Size_of_DAC_samples, $8000<br />
<br />
; ---------------------------------------------------------------------------<br />
; DAC samples<br />
; ---------------------------------------------------------------------------<br />
; loc_ED100:<br />
SndDAC_Start:<br />
<br />
SndDAC_Sample1:<br />
BINCLUDE "sound/DAC/Sample 1.bin"<br />
SndDAC_Sample1_End<br />
<br />
SndDAC_Sample2:<br />
BINCLUDE "sound/DAC/Sample 2.bin"<br />
SndDAC_Sample2_End<br />
<br />
SndDAC_Sample5:<br />
BINCLUDE "sound/DAC/Sample 5.bin"<br />
SndDAC_Sample5_End<br />
<br />
SndDAC_Sample6:<br />
BINCLUDE "sound/DAC/Sample 6.bin"<br />
SndDAC_Sample6_End<br />
<br />
SndDAC_Sample3:<br />
BINCLUDE "sound/DAC/Sample 3.bin"<br />
SndDAC_Sample3_End<br />
<br />
SndDAC_Sample4:<br />
BINCLUDE "sound/DAC/Sample 4.bin"<br />
SndDAC_Sample4_End<br />
<br />
SndDAC_Sample7:<br />
BINCLUDE "sound/DAC/Sample 7.bin"<br />
SndDAC_Sample7_End<br />
<br />
SndDAC_End<br />
<br />
if SndDAC_End - SndDAC_Start > $8000<br />
fatal "DAC samples must fit within $8000 bytes, but you have $\{SndDAC_End-SndDAC_Start } bytes of DAC samples."<br />
endif<br />
if SndDAC_End - SndDAC_Start > Size_of_DAC_samples<br />
fatal "Size_of_DAC_samples = $\{Size_of_DAC_samples}, but you have $\{SndDAC_End-SndDAC_Start} bytes of DAC samples."<br />
endif<br />
<br />
; ---------------------------------------------------------------------------<br />
; Music pointers<br />
; ---------------------------------------------------------------------------<br />
align $8000<br />
<br />
; loc_F0000:<br />
MusicPoint1:<br />
MusPtr_Continue: rom_ptr_z80 Mus_Continue-MusicPoint2<br />
<br />
<br />
Mus_Continue: BINCLUDE "sound/music/Continue.bin"<br />
<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ----------------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ----------------------------------------------------------------------------------<br />
; the PCM data has to line up with the end of the bank.<br />
cnop -Size_of_SEGA_sound, $8000<br />
<br />
; -------------------------------------------------------------------------------<br />
; Sega Intro Sound<br />
; 8-bit unsigned raw audio at 16Khz<br />
; -------------------------------------------------------------------------------<br />
; loc_F1E8C:<br />
Snd_Sega: BINCLUDE "sound/PCM/SEGA.bin"<br />
Snd_Sega_End:<br />
<br />
if Snd_Sega_End - Snd_Sega > $8000<br />
fatal "Sega sound must fit within $8000 bytes, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
if Snd_Sega_End - Snd_Sega > Size_of_SEGA_sound<br />
fatal "Size_of_SEGA_sound = $\{Size_of_SEGA_sound}, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
<br />
; ------------------------------------------------------------------------------<br />
; Music pointers<br />
; ------------------------------------------------------------------------------<br />
align $8000<br />
soundBankStart := *<br />
<br />
; loc_F8000:<br />
MusicPoint2:<br />
MusPtr_CNZ_2P: rom_ptr_z80 Mus_CNZ_2P<br />
MusPtr_EHZ: rom_ptr_z80 Mus_EHZ<br />
MusPtr_MTZ: rom_ptr_z80 Mus_MTZ<br />
MusPtr_CNZ: rom_ptr_z80 Mus_CNZ<br />
MusPtr_MCZ: rom_ptr_z80 Mus_MCZ<br />
MusPtr_MCZ_2P: rom_ptr_z80 Mus_MCZ_2P<br />
MusPtr_ARZ: rom_ptr_z80 Mus_ARZ<br />
MusPtr_DEZ: rom_ptr_z80 Mus_DEZ<br />
MusPtr_SpecStage: rom_ptr_z80 Mus_SpecStage<br />
MusPtr_Options: rom_ptr_z80 Mus_Options<br />
MusPtr_Ending: rom_ptr_z80 Mus_Ending<br />
MusPtr_EndBoss: rom_ptr_z80 Mus_EndBoss<br />
MusPtr_CPZ: rom_ptr_z80 Mus_CPZ<br />
MusPtr_Boss: rom_ptr_z80 Mus_Boss<br />
MusPtr_SCZ: rom_ptr_z80 Mus_SCZ<br />
MusPtr_OOZ: rom_ptr_z80 Mus_OOZ<br />
MusPtr_WFZ: rom_ptr_z80 Mus_WFZ<br />
MusPtr_EHZ_2P: rom_ptr_z80 Mus_EHZ_2P<br />
MusPtr_2PResult: rom_ptr_z80 Mus_2PResult<br />
MusPtr_SuperSonic: rom_ptr_z80 Mus_SuperSonic<br />
MusPtr_HTZ: rom_ptr_z80 Mus_HTZ<br />
MusPtr_ExtraLife: rom_ptr_z80 Mus_ExtraLife<br />
MusPtr_Title: rom_ptr_z80 Mus_Title<br />
MusPtr_EndLevel: rom_ptr_z80 Mus_EndLevel<br />
MusPtr_GameOver: rom_ptr_z80 Mus_GameOver<br />
MusPtr_Invincible: rom_ptr_z80 Mus_Invincible<br />
MusPtr_Emerald: rom_ptr_z80 Mus_Emerald<br />
MusPtr_HPZ: rom_ptr_z80 Mus_HPZ<br />
MusPtr_Drowning: rom_ptr_z80 Mus_Drowning<br />
MusPtr_Credits: rom_ptr_z80 Mus_Credits<br />
<br />
; loc_F803C:<br />
Mus_HPZ: BINCLUDE "sound/music/HPZ.bin"<br />
Mus_Drowning: BINCLUDE "sound/music/Drowning.bin"<br />
Mus_Invincible: BINCLUDE "sound/music/Invincible.bin"<br />
Mus_CNZ_2P: BINCLUDE "sound/music/CNZ_2p.bin"<br />
Mus_EHZ: BINCLUDE "sound/music/EHZ.bin"<br />
Mus_MTZ: BINCLUDE "sound/music/MTZ.bin"<br />
Mus_CNZ: BINCLUDE "sound/music/CNZ.bin"<br />
Mus_MCZ: BINCLUDE "sound/music/MCZ.bin"<br />
Mus_MCZ_2P: BINCLUDE "sound/music/MCZ_2p.bin"<br />
Mus_ARZ: BINCLUDE "sound/music/ARZ.bin"<br />
Mus_DEZ: BINCLUDE "sound/music/DEZ.bin"<br />
Mus_SpecStage: BINCLUDE "sound/music/SpecStg.bin"<br />
Mus_Options: BINCLUDE "sound/music/Options.bin"<br />
Mus_Ending: BINCLUDE "sound/music/Ending.bin"<br />
Mus_EndBoss: BINCLUDE "sound/music/End_Boss.bin"<br />
Mus_CPZ: BINCLUDE "sound/music/CPZ.bin"<br />
Mus_Boss: BINCLUDE "sound/music/Boss.bin"<br />
Mus_SCZ: BINCLUDE "sound/music/SCZ.bin"<br />
Mus_OOZ: BINCLUDE "sound/music/OOZ.bin"<br />
Mus_WFZ: BINCLUDE "sound/music/WFZ.bin"<br />
Mus_EHZ_2P: BINCLUDE "sound/music/EHZ_2p.bin"<br />
Mus_2PResult: BINCLUDE "sound/music/2player results screen.bin"<br />
Mus_SuperSonic: BINCLUDE "sound/music/Supersonic.bin"<br />
Mus_HTZ: BINCLUDE "sound/music/HTZ.bin"<br />
Mus_Title: BINCLUDE "sound/music/Title screen.bin"<br />
Mus_EndLevel: BINCLUDE "sound/music/End of level.bin"<br />
<br />
; The following act mostly like sound effects<br />
; despite being listed with the music.<br />
; This means they're uncompressed format with absolute pointers<br />
; instead of compressed with relative pointers.<br />
; Because they have absolute pointers,<br />
; they have to be assembled rather than BINCLUDE'd.<br />
; See below (right before Sound20) for other notes<br />
; about the sound format that apply to these too.<br />
<br />
;Mus_ExtraLife: BINCLUDE "sound/music/Extra life.bin"<br />
Mus_ExtraLife: dc.w z80_ptr(Mus_EL_Voices),$0603,$02CD<br />
dc.w z80_ptr(Mus_EL_DAC),$0000<br />
dc.w z80_ptr(Mus_EL_FM1),$E810<br />
dc.w z80_ptr(Mus_EL_FM2),$E810<br />
dc.w z80_ptr(Mus_EL_FM3),$E810<br />
dc.w z80_ptr(Mus_EL_FM4),$E810<br />
dc.w z80_ptr(Mus_EL_FM5),$E810<br />
dc.w z80_ptr(Mus_EL_PSG1),$D008,$0005<br />
dc.w z80_ptr(Mus_EL_PSG2),$DC08,$0005<br />
dc.w z80_ptr(Mus_EL_PSG3),$DC00,$0004<br />
Mus_EL_FM4: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM1: dc.b $E0,$80<br />
+ dc.b $EF,$00,$E8,$06,$D9,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$DB,$09,$D7,$D6,$06,$D9,$18,$F2<br />
Mus_EL_FM2: dc.b $EF,$01,$E8,$06,$E2,$01,$D6,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$D7,$09,$D4,$D2,$06,$D6,$18,$E2,$01,$F2<br />
Mus_EL_FM5: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM3: dc.b $E0,$80<br />
+ dc.b $EF,$02,$BA,$0C,$80,$06,$BA,$B8,$80,$03<br />
dc.b $B8,$06,$80,$03,$B8,$06,$BA,$18,$F2<br />
Mus_EL_PSG1: dc.b $E8,$06,$D6,$06,$03,$03,$06,$06,$E8,$00,$D7,$09<br />
dc.b $D4,$D2,$06,$D6,$18<br />
Mus_EL_PSG2:<br />
Mus_EL_PSG3: dc.b $F2<br />
Mus_EL_DAC: dc.b $88,$12,$06,$8B,$09,$09,$06,$88,$06,$8A,$88,$8A<br />
dc.b $88,$0C,$E4<br />
Mus_EL_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
<br />
<br />
;Mus_GameOver: BINCLUDE "sound/music/Game over.bin"<br />
Mus_GameOver: dc.w z80_ptr(MusGO_Voices),$0603,$02F2<br />
dc.w z80_ptr(MusGOver_DAC),$0000<br />
dc.w z80_ptr(MusGOver_FM1),$E80A<br />
dc.w z80_ptr(MusGOver_FM2),$F40F<br />
dc.w z80_ptr(MusGOver_FM3),$F40F<br />
dc.w z80_ptr(MusGOver_FM4),$F40D<br />
dc.w z80_ptr(MusGOver_FM5),$DC16<br />
dc.w z80_ptr(MusGOver_PSG),$D003,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC06,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC00,$0004<br />
MusGOver_FM1: dc.b $EF,$00<br />
dc.b $F0,$20,$01,$04,$05<br />
dc.b $80,$0C,$CA,$12,$80,$06,$CA,$80,$CB,$12,$C8,$1E<br />
dc.b $CA,$06,$80,$CA,$80,$CA,$80,$C6,$80,$C4,$12,$C8<br />
dc.b $0C,$80,$12,$C9,$04,$80,$C9,$C8,$06,$80,$C7,$80<br />
dc.b $C6,$80<br />
dc.b $F0,$28,$01,$18,$05<br />
dc.b $C5,$60,$F2<br />
MusGOver_FM2: dc.b $EF,$01,$80,$01,$D9,$06,$80,$D9,$80,$D6,$80,$D6<br />
dc.b $80,$D7,$15,$D7,$1B,$D9,$06,$80,$D9,$80,$D6,$80<br />
dc.b $D6,$80,$DC,$15,$DC,$1B,$F2<br />
MusGOver_FM3: dc.b $EF,$01,$D6,$0C,$D6,$D2,$D2,$D4,$15,$D4,$1B,$D6<br />
dc.b $0C,$D6,$D2,$D2,$D7,$15,$D7,$1B,$F2<br />
MusGOver_FM4: dc.b $EF,$02,$E2,$01,$AE,$06,$80,$AE,$80,$A9,$80,$A9<br />
dc.b $80,$AC,$15,$AB,$0C,$AC,$03,$AB,$0C,$AE,$06,$80<br />
dc.b $AE,$80,$A9,$80,$A9,$80,$B3,$15,$B2,$0C,$B3,$03<br />
dc.b $B2,$0C,$AE,$04,$80,$AE,$AD,$06,$80,$AC,$80,$AB<br />
dc.b $80,$AB,$60,$E2,$01,$F2<br />
MusGOver_FM5: dc.b $EF,$03,$80,$30,$D7,$12,$80,$03,$D7,$1B,$80,$30<br />
dc.b $DC,$12,$80,$03,$DC,$1B<br />
MusGOver_PSG: dc.b $F2<br />
MusGOver_DAC: dc.b $80,$18,$81<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(MusGOver_DAC)<br />
dc.b $F2<br />
MusGO_Voices: dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $3C,$33,$73,$30,$70,$94,$96,$9F,$9F,$12,$14,$00<br />
dc.b $0F,$04,$04,$0A,$0D,$2F,$4F,$0F,$2F,$33,$1A,$80,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$1C,$27,$28,$80<br />
dc.b $1F,$66,$53,$31,$22,$1C,$1F,$98,$1F,$12,$0F,$0F<br />
dc.b $0F,$00,$00,$00,$00,$FF,$0F,$0F,$0F,$8C,$8A,$8D,$8B<br />
<br />
;Mus_Emerald: BINCLUDE "sound/music/Got an emerald.bin"<br />
Mus_Emerald: dc.w z80_ptr(MusEmrldVoices),$0703,$01D5<br />
dc.w z80_ptr(MusEmeraldDAC),$0000<br />
dc.w z80_ptr(MusEmeraldFM1),$F408<br />
dc.w z80_ptr(MusEmeraldFM2),$F408<br />
dc.w z80_ptr(MusEmeraldFM3),$F407<br />
dc.w z80_ptr(MusEmeraldFM4),$F416<br />
dc.w z80_ptr(MusEmeraldFM5),$F416<br />
dc.w z80_ptr(MusEmeraldFM6),$F416<br />
dc.w z80_ptr(MusEmeraldPSG1),$F402,$0004<br />
dc.w z80_ptr(MusEmeraldPSG2),$F402,$0005<br />
dc.w z80_ptr(MusEmeraldPSG3),$F400,$0004<br />
MusEmeraldFM3: dc.b $E1,$02<br />
MusEmeraldFM1: dc.b $EF,$00,$C1,$06,$C4,$C9,$CD,$0C,$C9,$D0,$2A,$F2<br />
MusEmeraldFM2: dc.b $EF,$00,$BD,$06,$C1,$C4,$C9,$0C,$C6,$CB,$2A,$F2<br />
MusEmeraldFM4: dc.b $EF,$01,$C1,$0C,$C1,$06,$C4,$06,$80,$C4,$80,$C9<br />
dc.b $2A,$F2<br />
MusEmeraldFM5: dc.b $EF,$01,$C9,$0C,$C9,$06,$CD,$06,$80,$CD,$80,$D0<br />
dc.b $2A,$F2<br />
MusEmeraldFM6: dc.b $EF,$01,$C4,$0C,$C4,$06,$C9,$06,$80,$C9,$80,$CD<br />
dc.b $2A,$F2<br />
MusEmeraldPSG2: dc.b $80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusEmeraldPSG1: dc.b $E2,$01,$80,$02,$80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
MusEmeraldPSG3:<br />
MusEmeraldDAC: dc.b $E2,$01,$F2<br />
MusEmrldVoices: dc.b $04,$35,$54,$72,$46,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$1D,$14,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$07,$07,$1A,$16,$80,$80<br />
<br />
;Mus_Credits: BINCLUDE "sound/music/Credits.bin"<br />
Mus_Credits: dc.w z80_ptr(MusCred_Voices),$0603,$01F0<br />
dc.w z80_ptr(MusCred_DAC),$0000<br />
dc.w z80_ptr(MusCred_FM1),$000E<br />
dc.w z80_ptr(MusCred_FM2),$180A<br />
dc.w z80_ptr(MusCred_FM3),$0014<br />
dc.w z80_ptr(MusCred_FM4),$0016<br />
dc.w z80_ptr(MusCred_FM5),$0C16<br />
dc.w z80_ptr(MusCred_PSG1),$E806,$000B<br />
dc.w z80_ptr(MusCred_PSG2),$DC07,$000B<br />
dc.w z80_ptr(MusCred_PSG3),$0002,$0003<br />
MusCred_FM1: dc.b $E9,$F4,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$0C,$E6,$02<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$03,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $AE,$06,$A2,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $E6,$FD<br />
- dc.b $EF,$00,$B7,$06,$BA,$F8<br />
dc.w z80_ptr(MusCreditsDA13)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$06,$80,$80,$30,$80,$EF,$0B,$E9,$18,$E6,$02<br />
- dc.b $94,$0C,$8F,$92,$8F,$06,$94,$05,$94,$07,$06,$8F<br />
dc.b $0C,$92,$8F<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$30,$80,$EF,$0E,$E6,$FF,$E9,$E8,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$91,$94,$06,$80,$18,$96,$12,$9A,$06,$80<br />
dc.b $80,$12,$8F,$93,$08,$80,$16,$96,$06,$91,$92,$94<br />
dc.b $96,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$9D,$9A,$08,$80,$16,$96,$12,$9D,$08,$80<br />
dc.b $04,$EF,$12<br />
dc.b $F0,$18,$01,$0A,$04<br />
dc.b $80,$30,$80,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$24,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$EF,$01,$E9,$F4,$E6,$FA,$F4<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $80,$03,$80,$60,$E6,$04,$E1,$01,$EF,$1B,$E6,$06<br />
dc.b $C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80,$EF<br />
dc.b $1C,$E6,$FA,$E8,$00,$BC,$0C,$12,$06,$EF,$1B,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$80,$E8,$06,$C4,$06,$06,$C6,$C4,$E8<br />
dc.b $00,$C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80<br />
dc.b $E8,$00,$EF,$1C,$E6,$FA,$C1,$C4,$C1,$EF,$1A,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$06,$80,$80,$24,$80,$30,$80,$EF,$1F<br />
dc.b $E9,$18,$E6,$F7,$E1,$00,$80,$06,$AC,$AE,$80,$B1<br />
dc.b $80,$B3,$80,$B4,$80,$B3,$80,$B1,$B3,$80,$B1,$E9<br />
dc.b $F4,$EF,$00,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC<br />
dc.b $06,$AE,$B1,$80,$B4,$B1,$80,$B1,$E9,$0C,$EF,$1F<br />
dc.b $80,$06,$B8,$12,$B4,$06,$80,$B3,$80,$B4,$80,$B3<br />
dc.b $80,$B1,$AE,$80,$B1,$E9,$F4,$EF,$00,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$30,$80,$EF,$21,$E9,$0C,$80,$30,$80<br />
dc.b $08,$A0,$04,$9E,$0C,$9D,$9B,$99,$08,$04,$91,$0C<br />
dc.b $92,$93,$94,$98,$99,$9B,$9D,$98,$95,$93,$91,$98<br />
dc.b $9D,$91,$96,$98,$99,$98,$96,$99,$9D,$96,$95,$97<br />
dc.b $99,$97,$95,$96,$97,$98,$99,$98,$99,$9B,$9D,$08<br />
dc.b $04,$98,$0C,$91,$95,$96,$98,$99,$9D,$9E,$08,$96<br />
dc.b $10,$97,$0C,$98,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$08,$99,$04,$EF,$23,$E9,$E8,$E6,$07,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $80,$60,$E6,$FB,$80,$0C,$CD,$06,$80,$D4,$CD,$06<br />
dc.b $80,$0C,$CD,$06,$80,$D4,$CD,$06,$80,$18,$E6,$05<br />
dc.b $80,$0C,$AE,$80,$AE,$80,$24,$E1,$02,$E6,$08,$A2<br />
dc.b $6C,$F2<br />
MusCreditsD9D1: dc.b $A5,$0C,$B1,$06,$80,$B1,$0C,$AC,$B3,$12,$B1,$0C<br />
dc.b $AC,$06,$AE,$B1,$A7,$0C,$B3,$06,$80,$B3,$0C,$AE<br />
dc.b $B5,$12,$B3,$06,$80,$AE,$B0,$B3,$A3,$0C,$AF,$06<br />
dc.b $80,$AF,$0C,$AA,$B1,$12,$AF,$0C,$AA,$06,$AC,$AF<br />
dc.b $A2,$0C,$AE,$06,$A2,$A4,$0C,$B0,$06,$A4,$A5,$0C<br />
dc.b $B1,$06,$A5,$A2,$0C,$E3<br />
MusCreditsDA13: dc.b $BE,$0C,$BC,$06,$BA,$BC,$BA,$04,$E7,$08,$BA,$04<br />
dc.b $80,$0E,$EF,$07,$B7,$06,$B2,$B5,$B7,$EF,$00,$B7<br />
dc.b $BA,$BE,$0C,$BC,$06,$BA,$BC,$BA,$0C,$BC,$04,$80<br />
dc.b $08,$BA,$04,$80,$08,$BC,$04,$80,$08,$BE,$12,$BA<br />
dc.b $06,$B7,$80,$B7,$80,$24,$EF,$07,$B7,$06,$B2,$B5<br />
dc.b $B7,$80,$0C,$80,$30,$BE,$06,$BE,$BA,$04,$80,$08<br />
dc.b $BC,$06,$BE,$E3<br />
MusCreditsDA5F: dc.b $C3,$01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$02,$C3<br />
dc.b $01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01<br />
dc.b $E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$FC,$C3,$01,$E7<br />
dc.b $C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01,$E7,$C4<br />
dc.b $E7,$C5,$E7,$C6,$2D,$E7,$30,$E7,$30,$E3<br />
MusCreditsDA99: dc.b $A7,$0C,$B3,$06,$80,$B1,$80,$B3,$0C,$A7,$03,$80<br />
dc.b $06,$A7,$03,$B3,$0C,$B1,$B3,$09,$AE,$03,$AC,$06<br />
dc.b $80,$AC,$0C,$AE,$06,$80,$AE,$0C,$AF,$06,$80,$27<br />
dc.b $E3<br />
MusCreditsDABE: dc.b $80,$0C,$CA,$15,$80,$03,$CA,$06,$80,$CB,$0F,$80<br />
dc.b $03,$C8,$18,$80,$06,$CA,$80,$CA,$80,$CA,$80,$C6<br />
dc.b $80,$C4,$0F,$80,$03,$C8,$18,$80,$06<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E3<br />
MusCreditsDAE5: dc.b $80,$12,$94,$97,$06,$80,$18,$99,$12,$94,$06,$80<br />
dc.b $80,$12,$92,$96,$06,$80,$18,$97,$12,$92,$06,$80<br />
dc.b $E3<br />
MusCreditsDAFE: dc.b $80,$99,$80,$99,$80,$9E,$80,$E3<br />
MusCreditsDB06: dc.b $EF,$07,$80,$54,$C7,$04,$C8,$C9,$CA,$24,$CD,$D2<br />
dc.b $18,$D0,$24,$CF,$CB,$18,$CB,$0C,$CA,$80,$CD,$60<br />
dc.b $E7,$3C,$CA,$24,$CD,$D2,$18,$D4,$24,$D0,$D4,$18<br />
dc.b $D4,$24,$D6,$60,$E7,$3C,$E3<br />
MusCred_FM2: dc.b $80,$60,$EF,$01,$E8,$06,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $85,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8A,$87,$88,$89,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $88<br />
dc.b $F7,$00,$0B<br />
dc.w z80_ptr(-)<br />
- dc.b $8A<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$E6,$FC,$8A,$8B,$8C,$E6,$04,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$8D,$8A,$8B,$8C,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8D,$06,$99,$E8,$00,$8A,$0C,$8B,$8C,$E9,$E8,$E6<br />
dc.b $0C,$EF,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E6,$F9,$EF,$08<br />
MusCreditsDB93: dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $06,$9C,$12,$9D,$0C,$9E,$F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9D,$04,$80,$08,$9D,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $9C,$04,$80,$08,$9C,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(MusCreditsDB93)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$13,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$60,$EF,$0F,$E6,$F3<br />
dc.b $F0,$04,$02,$03,$02<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$30,$E7,$18,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$EF,$13,$E6,$F5,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$0C,$A9,$08,$A1,$10,$F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$08,$A9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E1,$02,$E9,$F4,$E6,$0A,$F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$EF,$1B,$E1,$00<br />
dc.b $E8,$06,$80,$3C,$B8,$06,$06,$BA,$BD,$BD,$BA,$EF<br />
dc.b $1D,$E6,$FA,$E8,$00,$F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $EF,$1C,$BD,$EF,$1D,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $80,$30,$80,$EF,$01,$E9,$18,$E6,$F9<br />
- dc.b $99,$0C,$A5,$06,$80,$96,$0C,$A2,$06,$80,$97,$0C<br />
dc.b $A3,$06,$80,$98,$0C,$A8,$06,$A7,$99,$06,$99,$12<br />
dc.b $96,$0C,$A2,$06,$80,$97,$0C,$A3,$06,$80,$98,$0C<br />
dc.b $A4,$06,$80<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$22,$E9,$E8,$E6,$03<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$AC,$04,$AE,$08,$B1,$04,$B5,$30,$80,$0C<br />
dc.b $B5,$08,$80,$04,$B6,$08,$B5,$10,$B9,$08,$04,$80<br />
dc.b $08,$B5,$34,$80,$0C,$B5,$BA,$08,$04,$80,$08,$B5<br />
dc.b $04,$B1,$24,$80,$0C,$B1,$08,$80,$04,$B3,$08,$B1<br />
dc.b $04,$B4,$0C,$B3,$08,$B1,$4C,$80,$0C,$B5,$08,$80<br />
dc.b $04,$B6,$08,$80,$04,$B5,$08,$80,$04,$B9,$08,$04<br />
dc.b $80,$08,$B5,$1C,$80,$0C,$BA,$18,$BC,$08,$BA,$04<br />
dc.b $BD,$18,$80,$0C,$BA,$04,$80,$08,$B8,$18,$B5,$B1<br />
dc.b $B3,$0C,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$0C,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$14,$B1,$04,$E6,$FF,$EF,$24,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $AC,$12,$AB,$0C,$AC,$06,$AB,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $B3,$12,$B2,$0C,$B3,$06,$B2,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $AC,$06,$80,$A9,$80,$AA,$80,$AB,$80,$AC,$AC,$A9<br />
dc.b $80,$AA,$80,$AC,$80,$A9,$80,$A9,$80,$AD,$80,$AD<br />
dc.b $80,$B0,$80,$B0,$80,$B3,$80,$B3,$80,$80,$0C,$A2<br />
dc.b $12,$80,$06,$A2,$12,$AD,$AE,$06,$80,$E6,$FD,$A2<br />
dc.b $6C,$F2<br />
MusCreditsDD59: dc.b $80,$0C,$C4,$06,$80,$C6,$80,$C4,$80,$C9,$80,$C9<br />
dc.b $80,$CB,$CD,$80,$0C,$80,$CB,$18,$C6,$06,$80,$C9<br />
dc.b $C9,$80,$CB,$0C,$80,$12,$80,$1E,$C7,$06,$C9,$C7<br />
dc.b $CB,$80,$C9,$80,$C7,$C9,$80,$C6,$E7,$C6,$30,$E7<br />
dc.b $18,$80,$18,$E3<br />
MusCreditsDD8D: dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
dc.b $06,$AB,$9F,$0C,$E3<br />
MusCreditsDD9D: dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$B6,$80,$18<br />
dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$30,$E7,$E3<br />
MusCreditsDDB5: dc.b $BF,$06,$BD,$BF,$12,$C2,$BF,$0C,$C1,$80,$06,$12<br />
dc.b $C4,$0C,$C2,$06,$80,$C9,$C6,$3C,$80,$06,$0C,$C7<br />
dc.b $12,$C6,$C4,$06,$C2,$C1,$18,$E3<br />
MusCreditsDDD5: dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$E3<br />
MusCreditsDDEA: dc.b $A2,$0C,$AE,$AC,$08,$AE,$04,$AC,$08,$A9,$04,$A7<br />
dc.b $08,$04,$E3<br />
MusCreditsDDF9: dc.b $80,$0C,$B1,$AE,$06,$06,$AC,$0C,$80,$B0,$AE,$06<br />
dc.b $06,$AC,$0C,$E3<br />
MusCreditsDE09: dc.b $AE,$AC,$06,$06,$AA,$0C,$80,$AC,$0C,$06,$06,$AE<br />
dc.b $AC,$E3<br />
MusCreditsDE17: dc.b $BA,$04,$80,$08,$B8,$18,$B5,$B1,$E3<br />
MusCreditsDE20: dc.b $AE,$06,$80,$AE,$80,$A9,$80,$A9,$80,$E3<br />
MusCreditsDE2A: dc.b $8A,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $E3<br />
MusCred_FM3: dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$18,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $B8,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $BD,$3C,$E9,$E8,$E6,$02,$E1,$03,$EF,$04,$E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$09,$E9,$0C,$E6,$FD,$E0,$40<br />
dc.b $F0,$06,$01,$05,$04<br />
dc.b $E1,$00<br />
- dc.b $9F,$0C,$AB,$06,$80,$A9,$80,$AB,$9F,$80,$9F,$AB<br />
dc.b $80,$A9,$80,$AB,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $9D,$0C,$A9,$06,$80,$A8,$80,$A9,$9C,$80,$9C,$A8<br />
dc.b $80,$A6,$80,$A8,$0C<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0D,$E6,$FB,$E0,$C0,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0F,$E0,$80,$E6,$0B,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$48,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$0C<br />
dc.b $F0,$18,$01,$03,$04<br />
dc.b $E6,$F3,$E0,$C0,$EF,$14,$A2,$14,$A4,$04,$A5,$04<br />
dc.b $80,$08,$A9,$04,$80,$08,$A8,$04,$80,$08,$A9,$04<br />
dc.b $80,$08,$AC,$08,$A9,$10<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$18,$E9,$F4,$E6,$08,$F4,$E0,$40,$80,$60,$80<br />
dc.b $30,$C6,$06,$80,$C2,$0C,$C4,$09,$C2,$03,$BF,$0C<br />
dc.b $80,$60,$80,$3C,$80,$60,$EF,$1B,$E6,$FB,$E0,$C0<br />
dc.b $E8,$06,$C4,$06,$06,$C6,$C9,$C9,$C6,$E8,$00,$CD<br />
dc.b $0C,$E8,$06,$C9,$06,$C6,$C9,$0C,$80,$80,$12,$EF<br />
dc.b $1C,$E8,$00,$BD,$BA,$0C,$E8,$06,$EF,$1B,$CE,$06<br />
dc.b $CE,$80,$CE,$80,$CE,$E8,$00,$CF,$0C,$D0,$80,$E8<br />
dc.b $06,$D0,$06,$06,$D2,$D0,$E8,$00,$CD,$0C,$E8,$06<br />
dc.b $C9,$06,$C6,$C9,$0C,$E8,$00,$EF,$1C,$80,$1E,$C2<br />
dc.b $0C,$C2,$BD,$06,$80,$60,$80,$60,$EF,$00,$E9,$18<br />
dc.b $80,$60,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC,$06<br />
dc.b $AE,$B1,$80,$B4,$B1,$80,$B1,$80,$60,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$60,$EF,$22,$E9,$DC,$E6,$FF,$E0,$80<br />
dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $CD,$30,$CB,$18,$CD,$0C,$CB,$C9,$30,$CE,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$FC,$80,$C4,$80,$C4,$80,$C6,$18,$08,$C4,$04<br />
dc.b $E9,$0C,$E6,$FF,$E0,$C0,$EF,$00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $CB,$12,$CB,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $D0,$12,$D0,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$CB,$12,$80,$06,$CB,$80,$CA,$12,$CB,$CA<br />
dc.b $0C,$C5,$18,$C8,$CB,$D1,$80,$0C,$CD,$80,$CD,$12<br />
dc.b $CC,$CD,$06,$80,$E6,$F8,$EF,$01,$E1,$03,$A2,$6C<br />
dc.b $F2<br />
MusCreditsDFF2: dc.b $80,$60,$BC,$06,$BD,$BC,$B8,$BA,$B6,$0C,$B8,$B3<br />
dc.b $B3,$06,$B6,$0C,$B8,$E3<br />
MusCreditsE004: dc.b $80,$0C,$CD,$04,$80,$10,$CD,$04,$80,$0C,$CD,$0C<br />
dc.b $CE,$08,$CD,$04,$80,$18,$80,$0C,$CB,$04,$80,$10<br />
dc.b $CB,$04,$80,$0C,$CB,$0C,$CD,$08,$CB,$04,$80,$18<br />
- dc.b $80,$0C,$C9,$04,$80,$10,$C9,$04,$80,$0C,$C9,$0C<br />
dc.b $CB,$08,$C9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E3<br />
MusCreditsE040: dc.b $80,$18,$B8,$0B,$80,$0D,$BA,$0C,$0B,$80,$19,$BD<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE051: dc.b $80,$0C,$C4,$80,$C4,$80,$C6,$80,$C6,$E3<br />
MusCreditsE05B: dc.b $CD,$06,$80,$CD,$80,$CA,$80,$CA,$80,$E3<br />
MusCreditsE065: dc.b $EF,$05,$E9,$F4,$C6,$60,$CB,$CD,$E7,$CD,$C6,$60<br />
dc.b $D0,$D0,$24,$D2,$60,$E7,$3C,$E3<br />
MusCred_FM4: dc.b $80,$60,$E9,$FB,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$1D,$E6,$02,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B5,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B8,$3C,$E6,$06,$EF,$05<br />
dc.b $F0,$02,$01,$FE,$04<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E9,$F4,$E6,$F7<br />
dc.b $F0,$0C,$01,$FB,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$25,$C3,$06,$C3,$80,$0C,$C3,$06,$C3,$05,$80<br />
dc.b $0D,$C3,$06,$C5,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$05,$F4,$E1,$02,$E0<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$0C,$80,$60,$EF,$10,$E6,$F7,$E1,$00,$E0<br />
dc.b $40,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $B3,$B7,$06,$AE,$0C,$B1,$B3,$B7,$06,$80,$B7,$AE<br />
dc.b $0C,$B1,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $EF,$15,$E6,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
- dc.b $EF,$14,$80,$4E,$E0,$40,$A1,$12,$A2,$06,$E0,$C0<br />
dc.b $EF,$16,$80,$30,$80,$06,$BA,$08,$B9,$04,$B8,$08<br />
dc.b $B7,$04,$B6,$08,$B5,$04<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E9,$F4,$E6,$02,$E0,$C0<br />
dc.b $F0,$01,$01,$03,$03<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$1E,$E0,$40,$E6,$FE,$E9,$F4,$F4,$E8<br />
dc.b $06,$80,$0C,$C1,$06,$12,$18,$C4,$06,$12,$0C,$EF<br />
dc.b $1C,$E0,$C0,$E6,$FA,$E8,$00,$C6,$E8,$06,$E6,$06<br />
dc.b $EF,$1E,$E0,$40,$C2,$06,$12,$18,$C4,$06,$12,$18<br />
dc.b $C1,$06,$12,$18,$C4,$06,$12,$0C,$EF,$1A,$E0,$C0<br />
dc.b $E9,$0C,$C6,$06,$C6,$80,$C6,$80,$C6,$E8,$00,$C7<br />
dc.b $0C,$C8,$06,$EF,$1E,$E0,$40,$E9,$F4,$E8,$06,$80<br />
dc.b $C4,$06,$12,$0C,$80,$60,$EF,$20,$E9,$18,$E6,$FA<br />
dc.b $E0,$C0,$E8,$00,$B4,$03,$E7,$B6,$5D,$B3,$03,$E7<br />
dc.b $B5,$5D,$B1,$03,$E7,$B3,$5D,$B3,$03,$E7,$B5,$5D<br />
dc.b $80,$60,$EF,$22,$E0,$40,$E9,$E8,$E6,$04,$80,$30<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $C9,$30,$C8,$18,$C9,$0C,$C8,$C6,$30,$C9,$80,$0C<br />
dc.b $C1,$80,$C1,$80,$C2,$80,$C2,$E6,$04,$80,$C1,$80<br />
dc.b $C1,$80,$C2,$80,$C2,$E6,$FC,$80,$C1,$80,$C1,$80<br />
dc.b $C2,$18,$08,$C1,$04,$E9,$0C,$E6,$FF,$E0,$C0,$EF<br />
dc.b $00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $C8,$12,$C8,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $CB,$12,$CB,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E1,$03,$E6,$08,$F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $E6,$F0,$EF,$01<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $A2,$6C,$F2<br />
MusCreditsE22D: dc.b $A2,$14,$A4,$04,$A5,$04,$80,$08,$A9,$04,$80,$08<br />
dc.b $A8,$04,$80,$08,$A9,$04,$80,$08,$AC,$08,$A9,$10<br />
dc.b $E3<br />
MusCreditsE246: dc.b $80,$0C<br />
dc.b $C9,$04,$80,$10<br />
dc.b $C9,$04,$80,$0C<br />
dc.b $C9,$0C<br />
dc.b $CB,$08<br />
dc.b $C9,$04,$80,$18,$80,$0C<br />
dc.b $C8,$04,$80,$10<br />
dc.b $C8,$04,$80,$0C<br />
dc.b $C8,$0C<br />
dc.b $C9,$08<br />
dc.b $C8,$04,$80,$18,$80,$0C<br />
<br />
if 1==1<br />
; this part of the original credits music (CNZ PSG) sounds buggy (dissonant)<br />
dc.b $C6,$04,$80,$10<br />
dc.b $C6,$04,$80,$0C<br />
dc.b $C6,$0C<br />
dc.b $C8,$08<br />
dc.b $C6,$04,$80,$18,$80,$0C<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $C7,$08<br />
else<br />
; replace the above block of notes with this to fix it.<br />
; (I'm not sure why, but the notes $C6 and $C7 are broken here,<br />
; so I've replaced them with pitch-shifted $C8s)<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$10 ; $C6<br />
dc.b $C8,$04,$80,$0C ; $C6<br />
dc.b $C8,$0C ; $C6<br />
dc.b $E1,0<br />
dc.b $C8,$08<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$24 ; $C6<br />
dc.b $E1,0<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $E1,-32<br />
dc.b $C8,$08 ; $C7<br />
dc.b $E1,0<br />
endif<br />
<br />
dc.b $C5,$04,$80,$18<br />
dc.b $E3<br />
MusCreditsE28F: dc.b $EF,$25,$80,$0C,$D0,$D4,$D7,$DB,$0C,$80,$06,$DB<br />
dc.b $0C,$DC,$06,$DB,$0C,$DD,$60,$DE,$0C,$80,$DE,$80<br />
dc.b $80,$06,$DD,$12,$DE,$0C,$E3<br />
MusCreditsE2AE: dc.b $80,$18,$B5,$0B,$80,$0D,$B7,$0C,$0B,$80,$19,$BA<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE2BF: dc.b $C3,$05,$80,$13,$C3,$12,$C3,$05,$E3<br />
MusCreditsE2C8: dc.b $CA,$06,$80,$CA,$80,$C6,$80,$C6,$80,$E3<br />
MusCreditsE2D2: dc.b $AF,$0C,$B3,$06,$B6,$0C,$AF,$B1,$06,$80,$B1,$0C<br />
dc.b $B5,$06,$B8,$0C,$B1,$06,$80,$B6,$0C,$BA,$06,$B1<br />
dc.b $0C,$B5,$B6,$BA,$06,$80,$BA,$AF,$0C,$B3,$B5,$B8<br />
dc.b $06,$B2,$0C,$B3,$B5,$B8,$06,$80,$B8,$B2,$0C,$B5<br />
dc.b $E3<br />
MusCred_FM5: dc.b $E9,$E8,$E6,$F8,$E1,$05,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$18,$E6,$08,$E1,$00,$EF,$02<br />
dc.b $F0,$0C,$01,$FC,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B1,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B5,$3C,$E9,$F4,$E6,$07<br />
dc.b $F0,$30,$01,$04,$04<br />
dc.b $EF,$06<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E6,$F6<br />
dc.b $F0,$0C,$01,$05,$04<br />
dc.b $E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$25,$C6,$06,$C6,$80,$0C,$C6,$06,$C6,$05,$80<br />
dc.b $0D,$C6,$06,$C8,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$E6,$05,$F4,$80,$01,$EF,$0C,$E1<br />
dc.b $FE,$E0,$40,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $23,$80,$0C,$80,$60,$EF,$11,$E9,$F4,$E6,$F4,$E1<br />
dc.b $00,$E0,$C0<br />
dc.b $F0,$06,$01,$06,$05<br />
dc.b $80,$60,$80,$30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60<br />
dc.b $80,$06,$CB,$80,$CB,$C9,$80,$C9,$80,$C7,$80,$C7<br />
dc.b $80,$C6,$03,$80,$C6,$80,$09,$80,$06,$80,$60,$80<br />
dc.b $30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60,$EF,$16,$E9<br />
dc.b $0C,$E6,$04,$F4,$E0,$80,$80,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
dc.b $80,$2F,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$30,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$60,$EF,$19,$E9,$F4,$E0,$C0,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$27,$B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$2A,$80,$60,$EF,$1E,$E9,$F4,$E8,$06<br />
- dc.b $80,$0C,$C4,$06,$12,$18,$C8,$06,$12,$0C,$80,$C6<br />
dc.b $06,$12,$18,$C8,$06,$12,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$20,$E8,$00,$E9,$18,$E6,$FA,$B8,$03<br />
dc.b $E7,$BA,$5D,$B6,$03,$E7,$B8,$5D,$B4,$03,$E7,$B6<br />
dc.b $5D,$B6,$03,$E7,$B8,$5D,$80,$60,$EF,$22,$E9,$F4<br />
dc.b $E6,$05<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$A7,$04,$A9,$08,$AC,$04,$B1,$30,$80,$0C<br />
dc.b $B1,$08,$80,$04,$B3,$08,$B1,$10,$B5,$08,$B5,$04<br />
dc.b $80,$08,$B0,$34,$80,$0C,$B0,$B5,$08,$04,$80,$08<br />
dc.b $B1,$04,$AE,$24,$80,$0C,$AE,$08,$80,$04,$B0,$08<br />
dc.b $AE,$04,$B1,$0C,$AF,$08,$AD,$4C,$80,$0C,$B1,$08<br />
dc.b $80,$04,$B3,$08,$80,$04,$B1,$08,$80,$04,$B5,$08<br />
dc.b $B5,$04,$80,$08,$B0,$1C,$80,$0C,$B5,$18,$B8,$08<br />
dc.b $B5,$04,$BA,$18,$80,$0C,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$04,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$F8,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$AA,$14,$A9,$04,$E6,$0C,$EF,$23,$E1,$03<br />
dc.b $E6,$F7,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E6,$09<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $F2<br />
MusCreditsE4CD: dc.b $80,$1E,$EF,$14,$A4,$12,$A5,$06,$EF,$16,$80,$30<br />
dc.b $80,$06,$BD,$08,$BC,$04,$BB,$08,$BA,$04,$B9,$08<br />
dc.b $B8,$04,$E3<br />
MusCreditsE4E8: dc.b $80,$18,$B1,$0B,$80,$0D,$B3,$0C,$0B,$80,$19,$B6<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE4F9: dc.b $C6,$05,$80,$13,$C6,$12,$C6,$05,$E3<br />
MusCreditsE502: dc.b $80,$60,$AC,$06,$80,$AC,$0C,$AE,$06,$80,$AE,$0C<br />
dc.b $AF,$06,$E3<br />
MusCred_PSG1: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG1)<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$F4,$E6,$FE,$F5,$01,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $AE,$B3,$06,$AC,$0C,$AE,$AE,$B3,$06,$80,$B3,$AB<br />
dc.b $0C,$AE,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $F5,$0B,$80,$04,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$20,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$F5,$00,$E8,$06,$E9,$F4,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$80,$C2,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$04,$80,$C2,$80,$0C,$C2,$80,$60,$F5,$08,$E9<br />
dc.b $04,$EC,$02,$E8,$06<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F0,$EC,$FF,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $E9,$18,$EC,$02,$B5,$30,$B3,$18,$B5,$0C,$B3,$B1<br />
dc.b $30,$B6,$EC,$FE,$80,$0C,$B8,$80,$B8,$80,$BA,$80<br />
dc.b $BA,$EC,$03,$C4,$18,$C1,$BD,$BF,$0C,$80,$EC,$FC<br />
dc.b $80,$B8,$80,$B8,$80,$BA,$18,$08,$B8,$04,$E9,$F4<br />
dc.b $EC,$01,$F5,$05<br />
- dc.b $80,$60<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$C8,$12,$80,$06,$C8,$80,$C6,$12,$C8,$C6<br />
dc.b $0C,$C1,$18,$C5,$C8,$CB,$80,$0C,$CA,$80,$CA,$12<br />
dc.b $C9,$CA,$06,$80,$09,$E9,$30,$EC,$FC,$F6<br />
dc.w z80_ptr(MusCreditsE770)<br />
dc.b $F2<br />
MusCreditsE618: dc.b $80,$0C,$BD,$06,$12,$18,$C4,$06,$12,$0C,$80,$C2<br />
dc.b $06,$12,$18,$C4,$06,$12,$0C,$E3<br />
MusCreditsE62C: dc.b $80,$60,$80,$0C,$C2,$80,$C2,$80,$E3<br />
MusCreditsE635: dc.b $AC,$0C,$AF,$06,$B3,$0C,$AC,$AC,$06,$80,$AC,$0C<br />
dc.b $AF,$06,$B5,$0C,$AC,$06,$80,$06,$B1,$0C,$B6,$06<br />
dc.b $AE,$0C,$B1,$B3,$B6,$06,$80,$B6,$AA,$0C,$AF,$AF<br />
dc.b $B5,$06,$AC,$0C,$AF,$B2,$B5,$06,$80,$B5,$AE,$0C<br />
dc.b $B2,$E3<br />
MusCred_PSG2: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG2)<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$0C,$EC,$FD,$F5,$04,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
dc.b $F0,$03,$02,$01,$05<br />
dc.b $F5,$0A,$E9,$E8,$EC,$02,$80,$30,$80,$80,$BD,$06<br />
dc.b $BF,$C6,$C2,$1E,$80,$60,$80,$06,$C6,$80,$C6,$C4<br />
dc.b $80,$C4,$80,$C3,$80,$C3,$80,$BF,$03,$80,$BF,$80<br />
dc.b $09,$80,$06,$80,$30,$80,$80,$BD,$06,$BF,$C6,$C2<br />
dc.b $1E,$80,$60,$F4<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$00,$EC,$FE,$E8,$06,$80,$60,$80,$0C,$BF,$80<br />
dc.b $BF,$80,$BF,$80,$BF,$80,$60,$80,$0C,$BF,$80,$BF<br />
dc.b $80,$BF,$04,$80,$BF,$80,$0C,$BF,$80,$60,$EC,$02<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F4,$EC,$FF,$E9,$E8,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $E9,$18,$EC,$02,$B1,$30,$B0,$18,$B1,$0C,$B0,$AE<br />
dc.b $30,$B1,$EC,$FE,$80,$0C,$B5,$80,$B5,$80,$B6,$80<br />
dc.b $B6,$EC,$03,$80,$B1,$80,$B1,$80,$B1,$80,$B1,$EC<br />
dc.b $FC,$80,$B1,$80,$B1,$80,$B1,$18,$08,$B1,$04,$EC<br />
dc.b $01,$E9,$18,$F5,$05,$E1,$01,$80,$60,$80,$80,$80<br />
dc.b $80,$80,$80,$0C,$CD,$06,$80,$D4,$CD,$80,$0C,$CD<br />
dc.b $06,$80,$D4,$CD,$80,$18,$80,$54,$E9,$24,$EC,$FD<br />
MusCreditsE770: dc.b $F5,$03,$80,$06<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$FF<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$01<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusCred_PSG3: dc.b $F3,$E7,$80,$60,$F5,$02<br />
- dc.b $C6,$0C,$0C,$0C,$06,$06,$0C,$0C,$06,$06,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$1F<br />
dc.w z80_ptr(-)<br />
dc.b $0C,$F5,$03,$C6,$F5,$02<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $06,$06,$06,$06<br />
dc.b $F7,$01,$04<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$04,$EC,$02<br />
- dc.b $E8,$03,$C6,$06,$06,$E8,$00,$0C<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$02,$EC,$FD<br />
- dc.b $80,$0C,$C6,$06,$80,$07,$C6,$06,$80,$11,$C6,$0C<br />
dc.b $80,$06,$C6,$0C,$80,$06,$C6,$80<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$02<br />
- dc.b $C6,$0C,$08,$04<br />
dc.b $F7,$00,$18<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$0C,$0C,$08,$04<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$04,$EC,$02<br />
- dc.b $C6,$06,$06,$0C<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EC,$FF<br />
- dc.b $F5,$01,$C6,$0C,$F5,$02,$EC,$FF,$08,$F5,$01,$EC<br />
dc.b $01,$04<br />
dc.b $F7,$00,$27<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$FF,$F5,$04<br />
- dc.b $E8,$03,$C6,$0C,$E8,$0C,$0C<br />
dc.b $F7,$00,$1E<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$03,$C6,$06,$E8,$0E,$12,$E8,$03,$0C,$E8,$0F<br />
dc.b $0C,$F2<br />
MusCred_DAC: dc.b $82,$06,$82,$82,$82,$82,$0C,$06,$0C,$06,$0C,$0C<br />
dc.b $0C<br />
- dc.b $81,$18,$82<br />
dc.b $F7,$00,$0E<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C<br />
- dc.b $82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EA,$EA,$F8<br />
dc.w z80_ptr(MusCreditsEA6E)<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$82,$06,$82,$82,$82,$81,$0C,$82,$06,$82<br />
dc.b $81,$81,$82,$82,$82,$82<br />
- dc.b $81,$18,$82,$81,$82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$82,$82,$82,$06,$82,$8C,$8C,$8D,$8D<br />
dc.b $8E,$8E,$F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$18,$82,$0C,$81,$18,$82,$0C,$82,$82,$06,$82<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$0C,$82,$82,$82,$8D,$06,$8D,$8E,$8E,$82,$06<br />
dc.b $82,$8D,$0C,$82,$0C,$82,$06,$82,$80,$82,$82,$0C<br />
MusCreditsE8E5: dc.b $82,$0C,$82,$82,$06,$82,$8D,$8D<br />
- dc.b $81,$0C,$8F,$06,$90,$82,$0C,$90,$06,$91,$81,$0C<br />
dc.b $8F,$06,$91,$82,$0C,$8F,$06,$91<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$8F,$06,$91,$82,$0C,$8F,$06,$91,$8C,$06<br />
dc.b $03,$03,$8D,$06,$8D,$8D,$8E,$8E,$8E,$81,$06,$0C<br />
dc.b $82,$06,$80,$0C,$81,$82,$8E,$82,$06,$82,$82,$82<br />
- dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$12,$8C,$06<br />
dc.b $82,$0C,$83,$06,$81,$80<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$06,$82,$06<br />
dc.b $81,$0C,$06,$82,$0C,$08,$04,$EA,$CD,$82,$30,$82<br />
dc.b $0C,$82,$82,$82,$08,$04,$F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$04,$82,$08,$04<br />
dc.b $08,$04,$04,$04,$04,$08,$04,$EA,$C5<br />
- dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82,$0C,$06<br />
dc.b $06,$81,$0C,$82,$06,$82,$82,$82,$8D,$0C,$82,$0C<br />
dc.b $0C,$0C,$06,$06<br />
- dc.b $81,$0C,$81,$82,$80,$81,$81,$82,$83<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$82,$82,$82,$82,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $81,$06,$81,$82,$82,$81,$82,$81,$81,$82,$02,$82<br />
dc.b $04,$81,$0C,$06,$82,$0C,$06,$06,$81,$18,$82,$0C<br />
dc.b $81,$81,$18,$82,$81,$06,$81,$12,$82,$0C,$81,$81<br />
dc.b $18,$82,$81,$18,$82,$0C,$81,$81,$18,$82,$81,$06<br />
dc.b $81,$12,$82,$0C,$0C,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $82,$02,$04,$81,$0C,$06,$0C,$82,$02,$04,$81,$0C<br />
dc.b $06,$0C,$82,$06,$82,$82,$82,$EA,$C0,$81,$0C,$82<br />
dc.b $81,$82,$81,$82,$81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$0F<br />
dc.w z80_ptr(-)<br />
dc.b $81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$13<br />
dc.w z80_ptr(-)<br />
dc.b $82,$08,$0C,$04,$81,$0C,$82,$81,$82,$81,$0C,$82<br />
dc.b $81,$06,$80,$02,$82,$82,$82,$09,$82,$03<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$06,$80,$02,$82,$82,$82,$09,$82<br />
dc.b $03<br />
dc.b $F7,$01,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$82,$81,$06,$82,$12,$82,$0C,$81<br />
dc.b $F2<br />
MusCreditsEA6E: dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$83,$E3<br />
MusCreditsEA84: dc.b $81,$18,$82,$0C,$81,$18,$0C,$82,$81,$81,$18,$82<br />
dc.b $0C,$81,$12,$81,$82,$18,$81,$82,$0C,$81,$18,$0C<br />
dc.b $82,$81,$E3<br />
MusCreditsEA9F: dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$0C,$82,$04,$81<br />
dc.b $0C,$82,$81,$81,$08,$0C,$04,$82,$0C,$81,$08,$0C<br />
dc.b $82,$04,$81,$0C,$82,$82,$08,$04,$E3,$81,$06,$80<br />
dc.b $03,$81,$81,$06,$82,$81,$06,$80,$03,$81,$81,$06<br />
dc.b $82,$03,$82,$81,$06,$80,$03,$81,$81,$06,$82,$E3<br />
MusCred_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$01,$1F,$1F,$FF,$0F,$17,$27,$28,$80<br />
dc.b $08,$09,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$25,$0E,$30,$84<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$0B,$0D,$19,$0B,$80,$80<br />
dc.b $08,$0A,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$24,$13,$2D,$80<br />
dc.b $3D,$01,$51,$21,$01,$12,$14,$14,$0F,$0A,$05,$05<br />
dc.b $05,$00,$00,$00,$00,$2B,$2B,$2B,$1B,$19,$80,$80,$80<br />
dc.b $04,$57,$70,$02,$50,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$06,$00,$0A,$0A,$00,$00,$0F,$0F,$1A,$10,$80,$80<br />
dc.b $35,$01,$13,$01,$00,$1F,$18,$1D,$19,$00,$06,$09<br />
dc.b $0D,$00,$02,$00,$03,$00,$15,$06,$16,$1E,$83,$80,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1A,$16,$88,$88<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$14,$0F,$37,$80<br />
dc.b $3B,$0F,$01,$06,$02,$DF,$1F,$1F,$DF,$0C,$0A,$00<br />
dc.b $03,$0F,$00,$00,$01,$F3,$55,$05,$5C,$22,$22,$20,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1C,$14,$84,$80<br />
dc.b $3A,$69,$50,$70,$60,$1C,$1A,$18,$18,$10,$02,$0C<br />
dc.b $09,$08,$06,$06,$03,$F9,$06,$56,$06,$28,$14,$15,$00<br />
dc.b $3D,$00,$02,$01,$01,$4C,$50,$0F,$12,$0C,$00,$02<br />
dc.b $05,$01,$00,$00,$00,$28,$2A,$29,$19,$1A,$06,$00,$00<br />
dc.b $2C,$71,$31,$71,$31,$1F,$1F,$16,$16,$00,$00,$0F<br />
dc.b $0F,$00,$00,$0F,$0F,$00,$00,$FA,$FA,$15,$14,$00,$00<br />
dc.b $18,$37,$31,$32,$31,$9E,$1C,$DC,$9C,$0D,$04,$06<br />
dc.b $01,$08,$03,$0A,$05,$B6,$36,$B6,$28,$2C,$14,$22,$00<br />
dc.b $3D,$01,$02,$02,$02,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$24,$18,$18,$18,$1C,$82,$82,$82<br />
dc.b $32,$71,$33,$0D,$01,$5F,$5F,$99,$94,$05,$05,$05<br />
dc.b $07,$02,$02,$02,$02,$11,$11,$11,$72,$23,$26,$2D,$80<br />
dc.b $3A,$32,$52,$01,$31,$1F,$1F,$1F,$18,$01,$00,$1F<br />
dc.b $00,$00,$00,$0F,$00,$5A,$03,$0F,$1A,$3B,$4F,$30,$00<br />
dc.b $3C,$42,$32,$41,$41,$12,$12,$12,$12,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$06,$06,$08,$08,$24,$24,$08,$08<br />
dc.b $31,$34,$30,$35,$31,$DF,$9F,$DF,$9F,$0C,$0C,$07<br />
dc.b $09,$07,$07,$07,$08,$2F,$1F,$1F,$2F,$17,$14,$32,$80<br />
dc.b $3D,$01,$01,$01,$01,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$20,$1A,$1A,$1A,$19,$84,$84,$84<br />
dc.b $24,$70,$30,$74,$38,$12,$1F,$1F,$1F,$05,$05,$03<br />
dc.b $03,$05,$05,$03,$03,$36,$26,$2C,$2C,$0A,$06,$08,$08<br />
dc.b $3A,$01,$01,$01,$02,$8D,$07,$07,$52,$09,$00,$00<br />
dc.b $03,$01,$02,$02,$00,$5F,$0F,$0F,$2F,$18,$18,$22,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$03,$03,$08,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$17,$20,$28,$80<br />
dc.b $20,$7A,$00,$31,$00,$9F,$DC,$D8,$DF,$10,$04,$0A<br />
dc.b $04,$0F,$08,$08,$08,$5F,$BF,$5F,$BF,$14,$17,$2B,$80<br />
dc.b $3A,$61,$51,$08,$02,$5D,$5D,$5D,$50,$04,$1F,$0F<br />
dc.b $1F,$00,$00,$00,$00,$1F,$0F,$5F,$0F,$22,$22,$1E,$80<br />
dc.b $02,$01,$02,$55,$04,$92,$8E,$8D,$54,$0D,$00,$0C<br />
dc.b $03,$00,$00,$00,$00,$FF,$0F,$2F,$5F,$16,$1D,$2A,$80<br />
dc.b $02,$75,$73,$71,$31,$1F,$96,$58,$9F,$01,$03,$1B<br />
dc.b $08,$01,$01,$04,$05,$FF,$3F,$2F,$2F,$24,$30,$29,$80<br />
dc.b $20,$66,$60,$65,$60,$DF,$9F,$DF,$1F,$00,$09,$06<br />
dc.b $0C,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$1C,$16,$3A,$80<br />
dc.b $0D,$32,$06,$08,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$86,$80,$8D<br />
dc.b $38,$3A,$11,$0A,$02,$D4,$50,$14,$0E,$05,$02,$08<br />
dc.b $88,$00,$00,$00,$00,$99,$09,$09,$1A,$2D,$19,$2C,$86<br />
dc.b $0D,$32,$02,$04,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$8B,$86,$93<br />
dc.b $3A,$20,$60,$23,$01,$1E,$1F,$1F,$1F,$0A,$0B,$0A<br />
dc.b $0A,$05,$0A,$07,$08,$A4,$96,$85,$78,$21,$28,$25,$00<br />
dc.b $3A,$32,$32,$56,$42,$8D,$15,$4F,$52,$06,$07,$08<br />
dc.b $04,$02,$00,$00,$00,$18,$28,$18,$28,$19,$2A,$20,$00<br />
dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$19,$13,$37,$80<br />
dc.b $3D,$01,$02,$02,$02,$14,$8C,$0E,$0E,$08,$02,$05<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$1A,$80,$80,$80<br />
; end of Mus_Credits<br />
<br />
; ------------------------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ------------------------------------------------------------------------------------------<br />
; WARNING the sound driver treats certain sounds specially<br />
; going by the ID of the sound.<br />
; SndID_Ring, SndID_RingLeft, SndID_Gloop, SndID_SpindashRev<br />
; are referenced by the sound driver directly.<br />
; If needed you can change this in s2.sounddriver.asm<br />
<br />
<br />
; NOTE: the exact order of this list determines the priority of each sound, since it determines the sound's SndID.<br />
; a sound can get dropped if a higher-priority sound is already playing.<br />
; the rules for sound priority are currently unknown, but you can generally swap pointer lines around to resolve priority conflicts.<br />
; loc_FEE91: SoundPoint:<br />
SoundIndex:<br />
SndPtr_Jump: rom_ptr_z80 Sound20 ; jumping sound<br />
SndPtr_Checkpoint: rom_ptr_z80 Sound21 ; checkpoint ding-dong sound<br />
SndPtr_SpikeSwitch: rom_ptr_z80 Sound22 ; spike switch sound<br />
SndPtr_Hurt: rom_ptr_z80 Sound23 ; hurt sound<br />
SndPtr_Skidding: rom_ptr_z80 Sound24 ; skidding sound<br />
SndPtr_BlockPush: rom_ptr_z80 Sound25 ; block push sound<br />
SndPtr_HurtBySpikes: rom_ptr_z80 Sound26 ; spiky impalement sound<br />
SndPtr_Sparkle: rom_ptr_z80 Sound27 ; sparkling sound<br />
SndPtr_Beep: rom_ptr_z80 Sound28 ; short beep<br />
SndPtr_Bwoop: rom_ptr_z80 Sound29 ; bwoop<br />
SndPtr_Splash: rom_ptr_z80 Sound2A ; splash sound<br />
SndPtr_Swish: rom_ptr_z80 Sound2B ; swish<br />
SndPtr_BossHit: rom_ptr_z80 Sound2C ; boss hit<br />
SndPtr_InhalingBubble: rom_ptr_z80 Sound2D ; inhaling a bubble<br />
SndPtr_ArrowFiring:<br />
SndPtr_LavaBall: rom_ptr_z80 Sound2E ; arrow firing<br />
SndPtr_Shield: rom_ptr_z80 Sound2F ; shield sound<br />
SndPtr_LaserBeam: rom_ptr_z80 Sound30 ; laser beam<br />
SndPtr_Zap: rom_ptr_z80 Sound31 ; zap<br />
SndPtr_Drown: rom_ptr_z80 Sound32 ; drownage<br />
SndPtr_FireBurn: rom_ptr_z80 Sound33 ; fire + burn<br />
SndPtr_Bumper: rom_ptr_z80 Sound34 ; bumper bing<br />
SndPtr_Ring:<br />
SndPtr_RingRight: rom_ptr_z80 Sound35 ; ring sound<br />
SndPtr_SpikesMove: rom_ptr_z80 Sound36<br />
SndPtr_Rumbling: rom_ptr_z80 Sound37 ; rumbling<br />
rom_ptr_z80 Sound38<br />
SndPtr_Smash: rom_ptr_z80 Sound39 ; smash/breaking<br />
rom_ptr_z80 Sound3A ; nondescript ding<br />
SndPtr_DoorSlam: rom_ptr_z80 Sound3B ; door slamming shut<br />
SndPtr_SpindashRelease: rom_ptr_z80 Sound3C ; spindash unleashed<br />
SndPtr_Hammer: rom_ptr_z80 Sound3D ; slide-thunk<br />
SndPtr_Roll: rom_ptr_z80 Sound3E ; rolling sound<br />
SndPtr_ContinueJingle: rom_ptr_z80 Sound3F ; got continue<br />
SndPtr_CasinoBonus: rom_ptr_z80 Sound40 ; short bonus ding<br />
SndPtr_Explosion: rom_ptr_z80 Sound41 ; badnik bust<br />
SndPtr_WaterWarning: rom_ptr_z80 Sound42 ; warning ding-ding<br />
SndPtr_EnterGiantRing: rom_ptr_z80 Sound43 ; special stage ring flash (unused)<br />
SndPtr_BossExplosion: rom_ptr_z80 Sound44 ; thunk<br />
SndPtr_TallyEnd: rom_ptr_z80 Sound45 ; cha-ching<br />
SndPtr_RingSpill: rom_ptr_z80 Sound46 ; losing rings<br />
rom_ptr_z80 Sound47 ; chain pull chink-chink<br />
SndPtr_Flamethrower: rom_ptr_z80 Sound48 ; flamethrower<br />
SndPtr_Bonus: rom_ptr_z80 Sound49 ; bonus pwoieeew (unused)<br />
SndPtr_SpecStageEntry: rom_ptr_z80 Sound4A ; special stage entry<br />
SndPtr_SlowSmash: rom_ptr_z80 Sound4B ; slower smash/crumble<br />
SndPtr_Spring: rom_ptr_z80 Sound4C ; spring boing<br />
SndPtr_Blip: rom_ptr_z80 Sound4D ; selection blip<br />
SndPtr_RingLeft: rom_ptr_z80 Sound4E ; another ring sound (only plays in the left speaker?)<br />
SndPtr_Signpost: rom_ptr_z80 Sound4F ; signpost spin sound<br />
SndPtr_CNZBossZap: rom_ptr_z80 Sound50 ; mosquito zapper<br />
rom_ptr_z80 Sound51<br />
rom_ptr_z80 Sound52<br />
SndPtr_Signpost2P: rom_ptr_z80 Sound53<br />
SndPtr_OOZLidPop: rom_ptr_z80 Sound54 ; OOZ lid pop sound<br />
SndPtr_SlidingSpike: rom_ptr_z80 Sound55<br />
SndPtr_CNZElevator: rom_ptr_z80 Sound56<br />
SndPtr_PlatformKnock: rom_ptr_z80 Sound57<br />
SndPtr_BonusBumper: rom_ptr_z80 Sound58 ; CNZ bonusy bumper sound<br />
SndPtr_LargeBumper: rom_ptr_z80 Sound59 ; CNZ baaang bumper sound<br />
SndPtr_Gloop: rom_ptr_z80 Sound5A ; CNZ gloop / water droplet sound<br />
SndPtr_PreArrowFiring: rom_ptr_z80 Sound5B<br />
SndPtr_Fire: rom_ptr_z80 Sound5C<br />
SndPtr_ArrowStick: rom_ptr_z80 Sound5D ; chain clink<br />
SndPtr_Helicopter:<br />
SndPtr_WingFortress: rom_ptr_z80 Sound5E ; helicopter<br />
SndPtr_SuperTransform: rom_ptr_z80 Sound5F<br />
SndPtr_SpindashRev: rom_ptr_z80 Sound60 ; spindash charge<br />
SndPtr_Rumbling2: rom_ptr_z80 Sound61 ; rumbling<br />
SndPtr_CNZLaunch: rom_ptr_z80 Sound62<br />
SndPtr_Flipper: rom_ptr_z80 Sound63 ; CNZ blooing bumper<br />
SndPtr_HTZLiftClick: rom_ptr_z80 Sound64 ; HTZ track click sound<br />
SndPtr_Leaves: rom_ptr_z80 Sound65 ; kicking up leaves sound<br />
SndPtr_MegaMackDrop: rom_ptr_z80 Sound66 ; leaf splash?<br />
SndPtr_DrawbridgeMove: rom_ptr_z80 Sound67<br />
SndPtr_QuickDoorSlam: rom_ptr_z80 Sound68 ; door slamming quickly (seems unused)<br />
SndPtr_DrawbridgeDown: rom_ptr_z80 Sound69<br />
SndPtr_LaserBurst: rom_ptr_z80 Sound6A ; robotic laser burst<br />
SndPtr_Scatter:<br />
SndPtr_LaserFloor: rom_ptr_z80 Sound6B ; scatter<br />
SndPtr_Teleport: rom_ptr_z80 Sound6C<br />
SndPtr_Error: rom_ptr_z80 Sound6D ; error sound<br />
SndPtr_MechaSonicBuzz: rom_ptr_z80 Sound6E ; silver sonic buzz saw<br />
SndPtr_LargeLaser: rom_ptr_z80 Sound6F<br />
SndPtr_OilSlide: rom_ptr_z80 Sound70<br />
SndPtr__End:<br />
<br />
; There are many non-relative pointers in these sound effects,<br />
; so the sounds shouldn't simply be BINCLUDE'd.<br />
; They could be included as separate .asm files using "include" instead of "binclude",<br />
; but I wanted to minimize the number of included asm files.<br />
<br />
; some comments on what the various script commands do (after the header):<br />
; 0x00-0x7F sets the note duration (of the previous note and following notes)<br />
; 0x81-0xDF plays a note (the valid range may be smaller for PSG or DAC)<br />
; 0x80 plays silence<br />
; 0xE0-0xFF does special things. I won't list them here... search for "Coordination flags" sonic 2.<br />
<br />
; the FM voices (poorly named "ssamp" or "samples" below)<br />
; are 25 bytes each and go directly to YM2612 registers.<br />
; they can be hard to edit (there's an art to it)<br />
; but search for sonic "Voice editing" for more info if you want to try.<br />
<br />
; jumping sound<br />
Sound20: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$F400<br />
+ dc.b $F5,$00,$9E,$05,$F0,$02,$01,$F8,$65,$A3,$15,$F2<br />
<br />
; checkpoint ding-dong sound<br />
Sound21: dc.w z80_ptr(ssamp21),$0101<br />
dc.w $8005,z80_ptr(+),$0001<br />
ssamp21: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
+ dc.b $EF,$00,$BD,$06,$BA,$16,$F2<br />
<br />
; spike switch sound<br />
Sound22: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C0,$04,$CA,$04<br />
- dc.b $C0,$01,$EC<br />
dc.w $01F7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; hurt sound<br />
Sound23: dc.w z80_ptr(ssamp23),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B0,$07,$E7,$AD<br />
- dc.b $01,$E6<br />
dc.w $01F7,$002F,z80_ptr(-)<br />
dc.b $F2<br />
ssamp23: dc.b $30,$30,$30,$30,$30,$9E,$DC,$D8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$14,$14,$3C,$80<br />
<br />
; skidding sound<br />
Sound24: dc.w $0000,$0102 ; sound header... no sample and 2 script entries<br />
dc.w $80A0,z80_ptr(+),$F400 ; entry 1 header<br />
dc.w $80C0,z80_ptr(++),$F400 ; entry 2 header<br />
+ dc.b $F5,$00,$AF,$01,$80,$AF,$80,$03 ; script entry 1<br />
- dc.b $AF,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 1 end<br />
+ dc.b $F5,$00,$80,$01,$AD,$80,$AD,$80,$03 ; script entry 2<br />
- dc.b $AD,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 2 end<br />
<br />
; block push sound<br />
Sound25: dc.w z80_ptr(ssamp25),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$01,$8B,$0A,$80,$02,$F2<br />
ssamp25: dc.b $FA,$21,$10,$30,$32,$2F,$2F,$1F,$2F,$05,$09,$08<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
; spiky impalement sound<br />
Sound26: dc.w z80_ptr(ssamp26),$0101<br />
dc.w $8005,z80_ptr(+),$F200<br />
+ dc.b $EF,$00,$F0,$01,$01,$10,$FF,$CF,$05,$D7,$25,$F2<br />
ssamp26: dc.b $3B,$3C,$30,$39,$31,$DF,$1F,$1F,$DF,$04,$04,$05<br />
dc.b $01,$04,$04,$04,$02,$FF,$1F,$0F,$AF,$29,$0F,$20,$80<br />
<br />
; sparkling sound<br />
Sound27: dc.w z80_ptr(ssamp27),$0101<br />
dc.w $8004,z80_ptr(+),$0C1C<br />
+ dc.b $EF,$00,$C1,$05,$C4,$05,$C9,$2B,$F2<br />
ssamp27: dc.b $07,$73,$33,$33,$73,$0F,$19,$14,$1A,$0A,$0A,$0A<br />
dc.b $0A,$0A,$0A,$0A,$0A,$57,$57,$57,$57,$00,$00,$00,$00<br />
<br />
; short beep<br />
Sound28: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$E803<br />
+ dc.b $F5,$04,$CB,$04,$F2<br />
<br />
; bwoop<br />
Sound29: dc.w $0000,$0101<br />
dc.w $80A0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$E6,$35,$8E,$06,$F2<br />
<br />
; splash sound<br />
Sound2A: dc.w z80_ptr(ssamp2A),$0102<br />
dc.w $80C0,z80_ptr(+),$0000<br />
dc.w $8005,z80_ptr(++),$0003<br />
+ dc.b $F5,$00,$F3,$E7,$C2,$05,$C6,$05,$E7<br />
- dc.b $07,$EC,$01<br />
dc.w $E7F7,$000F,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$A6,$14,$F2<br />
ssamp2A: dc.b $00,$00,$02,$03,$00,$D9,$1F,$DF,$1F,$12,$14,$11<br />
dc.b $0F,$0A,$0A,$00,$0D,$FF,$FF,$FF,$FF,$22,$27,$07,$80<br />
<br />
; swish<br />
Sound2B: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$C6,$03,$80,$03,$C6,$01,$E7<br />
- dc.b $01,$EC,$01<br />
dc.w $E7F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; boss hit<br />
Sound2C: dc.w z80_ptr(smashsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$0C,$01<br />
- dc.b $81,$0A,$E6<br />
dc.w $10F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
smashsamp: dc.b $F9,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
<br />
; inhaling a bubble<br />
Sound2D: dc.w z80_ptr(ssamp2D),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$21,$6E,$A6,$07<br />
dc.b $80,$06,$F0,$01,$01,$44,$1E,$AD,$08,$F2<br />
ssamp2D: dc.b $35,$05,$08,$09,$07,$1E,$0D,$0D,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$1F,$2F,$1F,$15,$12,$12,$80<br />
<br />
; arrow firing<br />
Sound2E: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$C6,$01,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp2E: dc.b $FA,$02,$00,$03,$05,$12,$0F,$11,$13,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$2F,$0E,$1A,$80<br />
<br />
; shield sound<br />
Sound2F: dc.w z80_ptr(ssamp2F),$0101<br />
dc.w $8005,z80_ptr(+),$0C00<br />
+ dc.b $EF,$00,$80,$01,$A3,$05,$E7,$A4,$26,$F2<br />
ssamp2F: dc.b $30,$30,$30,$30,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$04,$14,$2C,$80<br />
<br />
; laser beam<br />
Sound30: dc.w z80_ptr(ssamp30),$0101 ; sound header... a voice and 1 script entry<br />
dc.w $8005,z80_ptr(+),$FB05 ; script entry header<br />
+ dc.b $EF,$00,$DF,$7F ; script start<br />
- dc.b $DF,$02,$E6 ; script continued<br />
dc.w $01F7,$001B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script end<br />
ssamp30: dc.b $83,$1F,$1F,$15,$1F,$1F,$1F,$1F,$1F,$00,$00,$00 ; voice<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$0B,$01,$16,$82 ; (fixed length)<br />
<br />
; zap<br />
Sound31: dc.w z80_ptr(ssamp31),$0101<br />
dc.w $8005,z80_ptr(+),$FB02<br />
+ dc.b $EF,$00,$B3,$05,$80,$01,$B3,$09,$F2<br />
ssamp31: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$05,$34,$10,$87<br />
<br />
; drownage<br />
Sound32: dc.w z80_ptr(ssamp32),$0102<br />
dc.w $8004,z80_ptr(++),$0C04<br />
dc.w $8005,z80_ptr(+),$0E02<br />
+ dc.b $EF,$00,$F0,$01,$01,$83,$0C<br />
- dc.b $8A,$05,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $80,$06,$EF,$00,$F0,$01,$01,$6F,$0E<br />
- dc.b $8D,$04,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp32: dc.b $35,$14,$04,$1A,$09,$0E,$11,$10,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$4F,$2F,$4F,$2F,$12,$12,$80<br />
<br />
; fire + burn<br />
Sound33: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$A7,$25,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; bumper bing<br />
Sound34: dc.w z80_ptr(ssamp34),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $8002,z80_ptr(+++),$0002<br />
+ dc.b $EF,$00,$F6<br />
dc.w z80_ptr(Sound34_3)<br />
+ dc.b $EF,$00,$E1,$07,$80,$01<br />
Sound34_3:<br />
dc.b $BA,$20,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
ssamp34: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$1F,$2B,$80,$80<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; ring sound<br />
Sound35: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$40,$C1,$05,$C4,$05,$C9,$1B,$F2<br />
<br />
<br />
Sound36: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C1,$07<br />
- dc.b $D0,$01,$EC<br />
dc.w $01F7,$000C,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; rumbling<br />
Sound37: dc.w z80_ptr(ssamp37),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$20,$08<br />
- dc.b $8B<br />
dc.w $0AF7,$0008,z80_ptr(-)<br />
- dc.b $8B,$10,$E6<br />
dc.w $03F7,$0009,z80_ptr(-)<br />
dc.b $F2<br />
ssamp37: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
<br />
Sound38: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$B4,$08<br />
- dc.b $B0,$02,$EC<br />
dc.w $01F7,$0003,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; smash/breaking<br />
Sound39: dc.w z80_ptr(smashsamp),$0104<br />
dc.w $8002,z80_ptr(+),$1000<br />
dc.w $8004,z80_ptr(+++),$0000<br />
dc.w $8005,z80_ptr(++),$1000<br />
dc.w $80C0,z80_ptr(s39s4),$0000<br />
+ dc.b $E0,$40,$80,$02,$F6<br />
dc.w z80_ptr(++)<br />
+ dc.b $E0,$80,$80,$01<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
s39s4: dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; nondescript ding<br />
Sound3A: dc.w z80_ptr(ssamp3A),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$AE,$08,$F2<br />
ssamp3A: dc.b $1C,$2E,$0F,$02,$02,$1F,$1F,$1F,$1F,$18,$14,$0F<br />
dc.b $0E,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$20,$1B,$80,$80<br />
<br />
; door slamming shut<br />
Sound3B: dc.w z80_ptr(ssamp3B),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$80,$A0,$06,$F2<br />
ssamp3B: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; spindash unleashed<br />
Sound3C: dc.w z80_ptr(ssamp3C),$0102<br />
dc.w $8005,z80_ptr(+),$9000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$F2<br />
+ dc.b $F5,$07,$80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$4F,$F2<br />
ssamp3C: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
<br />
; slide-thunk<br />
Sound3D: dc.w z80_ptr(ssamp3D),$0102<br />
dc.w $8005,z80_ptr(+),$100A<br />
dc.w $8004,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$60,$01,$A7,$08,$F2<br />
+ dc.b $80,$08,$EF,$01,$84,$22,$F2<br />
ssamp3D: dc.b $FA,$21,$19,$3A,$30,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
dc.b $FA,$31,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$1F,$2F,$2F,$0D,$01,$00,$80<br />
<br />
; rolling sound<br />
Sound3E: dc.w z80_ptr(ssamp3E),$0101<br />
dc.w $8004,z80_ptr(+),$0C05<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$09,$FF,$CA,$25,$F4<br />
- dc.b $E7,$E6,$01,$D0<br />
dc.w $02F7,$002A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3E: dc.b $3C,$00,$02,$44,$02,$1F,$1F,$1F,$15,$00,$00,$1F<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0D,$28,$00,$00<br />
<br />
; got continue<br />
Sound3F: dc.w z80_ptr(ssamp3F),$0103<br />
dc.w $8002,z80_ptr(+),$F406<br />
dc.w $8004,z80_ptr(++),$F406<br />
dc.w $8005,z80_ptr(+++),$F406<br />
+ dc.b $EF,$00,$C9,$07,$CD,$D0,$CB,$CE,$D2,$CD,$D0,$D4,$CE,$D2,$D5<br />
- dc.b $D0,$07,$D4,$D7,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$80,$07,$CD,$15,$CE,$D0,$D2<br />
- dc.b $D4,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$C9,$15,$CB,$CD,$CE<br />
- dc.b $D0,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3F: dc.b $14,$25,$36,$33,$11,$1F,$1F,$1F,$1F,$15,$1C,$18<br />
dc.b $13,$0B,$0D,$08,$09,$0F,$8F,$9F,$0F,$24,$0A,$05,$80<br />
<br />
; short bonus ding<br />
Sound40: dc.w z80_ptr(ssamp3F),$0102<br />
dc.w $8005,z80_ptr(++),$0008<br />
dc.w $8004,z80_ptr(+),$0008<br />
+ dc.b $E1,$03,$80,$02<br />
+ dc.b $EF,$00,$C4,$16,$F2<br />
<br />
; badnik bust<br />
Sound41: dc.w z80_ptr(ssamp41),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0002<br />
+ dc.b $F0,$03,$01,$72,$0B,$EF,$00,$BA,$16,$F2<br />
+ dc.b $F5,$01,$F3,$E7,$B0,$1B,$F2<br />
ssamp41: dc.b $3C,$0F,$03,$01,$01,$1F,$1F,$1F,$1F,$19,$19,$12<br />
dc.b $0E,$05,$00,$12,$0F,$0F,$FF,$7F,$FF,$00,$00,$80,$80<br />
<br />
; warning ding-ding<br />
Sound42: dc.w z80_ptr(ssamp3F),$0101<br />
dc.w $8005,z80_ptr(+),$0C08<br />
+ dc.b $EF,$00,$BA,$08,$BA,$25,$F2<br />
<br />
; special stage ring flash (unused)<br />
Sound43: dc.w z80_ptr(ssamp43),$0102<br />
dc.w $8004,z80_ptr(+),$0C00<br />
dc.w $8005,z80_ptr(++),$0013<br />
+ dc.b $EF,$01,$80,$01,$A2,$08,$EF,$00,$E7,$AD,$26,$F2<br />
+ dc.b $EF,$02,$F0,$06,$01,$03,$FF,$80,$0A<br />
- dc.b $C3<br />
dc.w $06F7,$0005,z80_ptr(-)<br />
dc.b $C3,$17,$F2<br />
ssamp43: dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$1C,$80<br />
dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$2C,$80<br />
dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$13,$13,$81,$88<br />
<br />
; thunk<br />
Sound44: dc.w z80_ptr(ssamp44),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$8A,$22,$F2<br />
ssamp44: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$4F,$2F,$2F,$0D,$04,$07,$80<br />
<br />
; cha-ching<br />
Sound45: dc.w z80_ptr(ssamp45),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$8A,$08,$80,$02,$8A,$08,$F2<br />
+ dc.b $EF,$01,$80,$12,$C6,$55,$F2<br />
+ dc.b $F5,$02,$F3,$E7,$80,$02,$C2,$05,$C4,$04,$C2,$05,$C4,$04,$F2<br />
ssamp45: dc.b $3B,$03,$02,$02,$06,$18,$1A,$1A,$96,$17,$0A,$0E<br />
dc.b $10,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$39,$28,$80<br />
ringsamp: dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$23,$80,$80<br />
<br />
; losing rings (scatter)<br />
Sound46: dc.w z80_ptr(ringsamp),$0102<br />
dc.w $8004,z80_ptr(+),$0005<br />
dc.w $8005,z80_ptr(++),$0008<br />
+ dc.b $EF,$00,$C6,$02,$05,$05,$05,$05,$05,$05,$3A,$F2<br />
+ dc.b $EF,$00,$80,$02,$C4,$02,$05,$15,$02,$05,$32,$F2<br />
<br />
; chain pull chink-chink<br />
Sound47: dc.w z80_ptr(ssamp47),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$BE,$05,$80,$04,$BE,$04,$80,$04,$F2<br />
ssamp47: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; flamethrower<br />
Sound48: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$25,$F2<br />
<br />
; bonus pwoieeew (unused)<br />
Sound49: dc.w z80_ptr(ssamp49),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$33,$18,$B9,$1A,$F2<br />
ssamp49: dc.b $3B,$0A,$05,$31,$02,$5F,$5F,$5F,$5F,$04,$16,$14<br />
dc.b $0C,$00,$00,$04,$00,$1F,$D8,$6F,$FF,$03,$00,$25,$80<br />
<br />
; special stage entry<br />
Sound4A: dc.w z80_ptr(ssamp4A),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$F0,$01,$01,$5B,$02,$CC,$65,$F2<br />
ssamp4A: dc.b $20,$36,$30,$35,$31,$41,$3B,$49,$4B,$09,$09,$06<br />
dc.b $08,$01,$02,$03,$A9,$0F,$0F,$0F,$0F,$29,$23,$27,$80<br />
<br />
; slower smash/crumble<br />
Sound4B: dc.w z80_ptr(smashsamp),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; spring boing<br />
Sound4C: dc.w z80_ptr(ssamp4C),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$5D,$0F,$B0,$0C,$F4<br />
- dc.b $E7,$E6,$02,$BD<br />
dc.w $02F7,$0019,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4C: dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$16,$13,$30,$80<br />
<br />
; selection blip<br />
Sound4D: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $BB,$02,$F2<br />
<br />
; another ring sound (only plays in the left speaker?)<br />
Sound4E: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8004,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$80,$C1,$04,$C4,$05,$C9,$1B,$F2<br />
<br />
; signpost spin sound<br />
Sound4F: dc.w z80_ptr(ssamp4F),$0102<br />
dc.w $8004,z80_ptr(+),$2703<br />
dc.w $8005,z80_ptr(++),$2700<br />
+ dc.b $80,$04<br />
+ dc.b $EF,$00<br />
- dc.b $B4,$05,$E6<br />
dc.w $02F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4F: dc.b $F4,$06,$0F,$04,$0E,$1F,$1F,$1F,$1F,$00,$0B,$00<br />
dc.b $0B,$00,$05,$00,$08,$0F,$FF,$0F,$FF,$0C,$03,$8B,$80<br />
<br />
; mosquito zapper<br />
Sound50: dc.w z80_ptr(ssamp50),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B3,$04,$80,$01<br />
- dc.b $B4,$04,$80<br />
dc.w $01F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
ssamp50: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$06,$34,$10,$87<br />
<br />
<br />
Sound51: dc.w z80_ptr(ssamp51),$0102<br />
dc.w $80C0,z80_ptr(+),$0001<br />
dc.w $8005,z80_ptr(++),$000B<br />
+ dc.b $F5,$02,$F3,$E4,$B0,$04,$85,$02,$F2<br />
+ dc.b $EF,$00,$E8,$04,$A5,$06,$F2<br />
ssamp51: dc.b $3C,$02,$01,$00,$01,$1F,$1F,$1F,$1F,$00,$19,$0E<br />
dc.b $10,$00,$00,$0C,$0F,$0F,$FF,$EF,$FF,$05,$00,$80,$80<br />
<br />
<br />
Sound52: dc.w z80_ptr(ssamp52),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $F0,$01,$01,$2A,$07,$EF,$00<br />
- dc.b $A5,$03<br />
dc.w $E7F7,$0013,z80_ptr(-)<br />
- dc.b $A5,$03,$E7,$E6<br />
dc.w $02F7,$0013,z80_ptr(-)<br />
dc.b $F2<br />
ssamp52: dc.b $28,$21,$21,$21,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$29,$20,$29,$80<br />
<br />
<br />
Sound53: dc.w z80_ptr(ssamp53),$0101<br />
dc.w $8005,z80_ptr(+),$F503<br />
+ dc.b $EF,$00,$F0,$01,$01,$46,$09,$A7,$14,$E7,$14,$E7,$E6,$04<br />
dc.b $14,$E7,$E6,$04,$14,$E7,$E6,$04,$0A,$E7,$E6,$04,$0A,$F2<br />
ssamp53: dc.b $07,$0A,$0C,$0C,$0C,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$2A,$0F,$0F,$80<br />
<br />
; OOZ lid pop sound<br />
Sound54: dc.w z80_ptr(ssamp54),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0006<br />
+ dc.b $EF,$00,$B6,$15,$F2<br />
+ dc.b $F3,$E7,$F5,$04,$C6,$03,$E7,$C5,$E7<br />
dc.b $C4,$E7,$C3,$E7,$C2,$E7,$C1,$E7,$C0,$F2<br />
ssamp54: dc.b $07,$03,$02,$03,$00,$FF,$6F,$6F,$3F,$12,$14,$11<br />
dc.b $0E,$1A,$0A,$03,$0D,$FF,$FF,$FF,$FF,$03,$07,$07,$80<br />
<br />
<br />
Sound55: dc.w z80_ptr(ssamp55),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$AA,$07,$B6,$15,$F2<br />
ssamp55: dc.b $42,$20,$0E,$0F,$0F,$1F,$1F,$1F,$1F,$1F,$1F,$1F<br />
dc.b $1F,$0F,$0E,$0F,$0E,$0F,$0F,$0F,$0F,$2E,$80,$20,$80<br />
<br />
<br />
Sound56: dc.w z80_ptr(ssamp56),$0101<br />
dc.w $8005,z80_ptr(+),$100E<br />
+ dc.b $EF,$00,$F0,$01,$01,$1E,$FF,$8F,$1C,$F4<br />
- dc.b $E7,$9A<br />
dc.w $05F7,$0009,z80_ptr(-)<br />
- dc.b $E7,$9A,$04,$E6,$02,$E7,$9A,$04,$E6<br />
dc.w $02F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp56: dc.b $0D,$06,$00,$00,$E5,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$27,$80,$80,$80<br />
<br />
<br />
Sound57: dc.w z80_ptr(ssamp57),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$CA,$15,$F2<br />
ssamp57: dc.b $04,$09,$70,$00,$30,$1C,$1F,$DF,$1F,$15,$12,$0B<br />
dc.b $0F,$0C,$0D,$00,$0D,$07,$2F,$FA,$FA,$00,$29,$00,$00<br />
<br />
; CNZ bonusy bumper sound<br />
Sound58: dc.w z80_ptr(ssamp58),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$B3,$06,$B3,$15,$F2<br />
ssamp58: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
<br />
; CNZ baaang bumper sound<br />
Sound59: dc.w z80_ptr(ssamp59),$0103<br />
dc.w $8004,z80_ptr(+),$0000<br />
dc.w $8002,z80_ptr(++),$0002<br />
dc.w $8005,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$E1,$0C,$B5,$14,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
+ dc.b $EF,$00,$B6,$14,$F2<br />
ssamp59: dc.b $32,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $0D,$00,$01,$01,$0C,$00,$23,$C3,$F6,$08,$07,$1C,$03<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; CNZ gloop / water droplet sound<br />
Sound5A: dc.w z80_ptr(ssamp5A),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$7F,$F1,$AA,$0A,$F2<br />
ssamp5A: dc.b $47,$03,$02,$02,$04,$5F,$5F,$5F,$5F,$0E,$1A,$11<br />
dc.b $0A,$09,$0A,$0A,$0A,$4F,$3F,$3F,$3F,$7F,$80,$80,$A3<br />
<br />
<br />
Sound5B: dc.w z80_ptr(ssamp5B),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$02,$A5,$01,$E7<br />
- dc.b $01,$E7,$E6<br />
dc.w $02F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5B: dc.b $38,$0F,$0F,$0F,$0F,$1F,$1F,$1F,$0E,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$1F,$00,$00,$00,$80<br />
<br />
<br />
Sound5C: dc.w z80_ptr(ssamp5C),$0102<br />
dc.w $8004,z80_ptr(+),$000E<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$85,$40<br />
- dc.b $E7,$04,$E6<br />
dc.w $04F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$40<br />
- dc.b $E7,$08,$E6<br />
dc.w $01F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5C: dc.b $FA,$12,$01,$01,$01,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$81,$8E,$14,$80<br />
<br />
; chain clink<br />
Sound5D: dc.w z80_ptr(ssamp5D),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$C0,$04,$F2<br />
ssamp5D: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; helicopter<br />
Sound5E: dc.w z80_ptr(ssamp5E),$0101<br />
dc.w $8002,z80_ptr(+),$1405<br />
+ dc.b $EF,$00<br />
- dc.b $95,$02,$95<br />
dc.w $01F7,$0013,z80_ptr(-)<br />
- dc.b $95,$02,$95,$01,$E6<br />
dc.w $01F7,$001B,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5E: dc.b $35,$30,$44,$40,$51,$1F,$1F,$1F,$1F,$10,$00,$13<br />
dc.b $15,$1F,$00,$1F,$1A,$7F,$0F,$7F,$5F,$02,$A8,$80,$80<br />
<br />
<br />
Sound5F: dc.w z80_ptr(ssamp5F),$0103<br />
dc.w $8005,z80_ptr(s5Fs1),$0000<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
s5Fs1 dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$E6,$0A,$80<br />
dc.b $06,$EF,$01,$F0,$01,$01,$11,$FF,$A2,$28<br />
- dc.b $E7,$03,$E6<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs2 dc.b $80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$1D<br />
- dc.b $E7,$07,$EC<br />
dc.w $01F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs3 dc.b $80,$16,$F5,$03<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $FFF7,$0005,z80_ptr(-)<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $01F7,$0007,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5F: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
dc.b $3A,$70,$30,$04,$01,$0F,$14,$19,$16,$08,$0A,$0B<br />
dc.b $05,$03,$03,$03,$05,$1F,$6F,$8F,$5F,$1F,$22,$1F,$80<br />
<br />
; spindash charge<br />
Sound60: dc.w z80_ptr(ssamp60),$0101<br />
dc.w $8005,z80_ptr(+),$FE00<br />
+ dc.b $EF,$00,$F0,$00,$01,$20,$F6,$C4,$16,$E7,$F4,$D0,$18,$E7<br />
- dc.b $04,$E7,$E6<br />
dc.w $03F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp60: dc.b $34,$00,$03,$0C,$09,$9F,$8C,$8F,$95,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$00,$1D,$00,$00<br />
<br />
; rumbling<br />
Sound61: dc.w z80_ptr(ssamp61),$0101<br />
dc.w $8004,z80_ptr(+),$0004<br />
+ dc.b $80,$01,$EF,$00,$F0,$00,$01,$70,$06,$82,$06,$85,$08,$83<br />
dc.b $01,$82,$05,$86,$06,$89,$03,$82,$08,$88,$04,$82,$06,$E6<br />
dc.b $02,$85,$08,$E6,$02,$83,$01,$E6,$02,$82,$05,$E6,$02,$86<br />
dc.b $06,$E6,$02,$89,$03,$E6,$02,$82,$08,$E6,$02,$88,$04,$E6,$02,$F2<br />
ssamp61: dc.b $32,$30,$30,$50,$30,$1F,$0E,$19,$0E,$07,$12,$15<br />
dc.b $09,$0A,$09,$1D,$06,$E8,$03,$0A,$17,$07,$00,$00,$00<br />
<br />
<br />
Sound62: dc.w z80_ptr(ssamp62),$0101<br />
dc.w $8005,z80_ptr(+),$FF00<br />
+ dc.b $EF,$00,$A6,$05,$F0,$01,$01,$E7,$40<br />
- dc.b $C4,$02,$E7,$E6<br />
dc.w $01F7,$0012,z80_ptr(-)<br />
dc.b $F2<br />
ssamp62: dc.b $34,$0C,$10,$73,$0C,$AF,$AC,$FF,$D5,$06,$00,$02<br />
dc.b $01,$02,$0A,$04,$08,$BF,$BF,$BF,$BF,$00,$08,$80,$80<br />
<br />
; CNZ blooing bumper<br />
Sound63: dc.w z80_ptr(ssamp63),$0101<br />
dc.w $8005,z80_ptr(+),$0907<br />
+ dc.b $EF,$00,$F0,$01,$01,$04,$56,$92,$03,$9A,$25,$F2<br />
ssamp63: dc.b $3D,$12,$10,$77,$30,$5F,$5F,$5F,$5F,$0F,$0A,$00<br />
dc.b $01,$0A,$0A,$0D,$0D,$4F,$0F,$0F,$0F,$13,$80,$80,$80<br />
<br />
; HTZ track click sound<br />
Sound64: dc.w z80_ptr(ssamp64),$0101<br />
dc.w $8005,z80_ptr(+),$1100<br />
+ dc.b $EF,$00,$C7,$02,$F2<br />
ssamp64: dc.b $24,$2A,$02,$05,$01,$1A,$1F,$10,$1F,$0F,$1F,$1F<br />
dc.b $1F,$0C,$0D,$11,$11,$0C,$09,$09,$0F,$0E,$04,$80,$80<br />
<br />
; kicking up leaves sound<br />
Sound65: dc.w z80_ptr(ssamp65),$0101<br />
dc.w $80C0,z80_ptr(+),$F800<br />
+ dc.b $F5,$03,$F3,$E7,$CE,$03,$F5,$06,$CE,$04,$EC<br />
dc.b $02,$CE,$02,$F5,$03,$EC,$FE,$CE,$08,$CE,$18,$F2<br />
ssamp65: ; uhm... apparently they forgot to null out the pointer to here.<br />
; luckily, sound 65 doesn't really use its sample<br />
<br />
; leaf splash?<br />
Sound66: dc.w z80_ptr(ssamp66),$0102<br />
dc.w $8005,z80_ptr(++),$EE08<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$F5,$09,$C6,$36,$F2<br />
+ dc.b $EF,$00,$80,$01,$92,$02,$02,$02,$30,$F2<br />
ssamp66: dc.b $32,$33,$17,$34,$13,$0F,$0D,$1B,$17,$00,$04,$02<br />
dc.b $0B,$08,$00,$08,$09,$6F,$5F,$4F,$6F,$05,$00,$00,$80<br />
<br />
<br />
Sound67: dc.w z80_ptr(ssamp67),$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$06,$F3,$E7,$90,$0A,$94,$0A,$98,$0A,$9C<br />
dc.b $0A,$A0,$0A,$A4,$08,$A8,$08,$AC,$08,$B0,$08,$F2<br />
ssamp67: ; another not-really-used sample (like Sound65)<br />
<br />
; door slamming quickly (seems unused)<br />
Sound68: dc.w z80_ptr(ssamp68),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$A5,$06,$F2<br />
ssamp68: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
<br />
Sound69: dc.w z80_ptr(ssamp69),$0102<br />
dc.w $8005,z80_ptr(+),$F400<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$9B,$03,$A8,$06,$9E,$08,$F2<br />
+ dc.b $F5,$04,$F3,$E7,$C6,$03,$C6,$06,$C6,$08,$F2<br />
ssamp69: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; robotic laser burst<br />
Sound6A: dc.w z80_ptr(ssamp6A),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$DF,$14,$E6,$18,$06,$F2<br />
ssamp6A: dc.b $3D,$09,$34,$34,$28,$1F,$16,$16,$16,$00,$00,$00<br />
dc.b $04,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$15,$02,$02,$00<br />
<br />
; scatter<br />
Sound6B: dc.w z80_ptr(ssamp6B),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$81,$04,$80,$0C,$F2<br />
ssamp6B: dc.b $3A,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $07,$00,$01,$01,$03,$00,$23,$C3,$46,$08,$07,$1C,$03<br />
<br />
<br />
Sound6C: dc.w z80_ptr(ssamp6C),$0104<br />
dc.w $8005,z80_ptr(++),$0010<br />
dc.w $8004,z80_ptr(+),$0010<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
+ dc.b $E1,$10<br />
+ dc.b $EF,$01,$F0,$01,$01,$EC,$56,$C0,$24,$F4,$EF,$00,$E6,$F0<br />
- dc.b $BB,$02,$E7,$E6,$02,$E9<br />
dc.w $01F7,$0020,z80_ptr(-)<br />
dc.b $F2<br />
ssamp6C: dc.b $00,$53,$30,$03,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$06,$23,$80<br />
dc.b $3C,$72,$32,$32,$72,$14,$14,$0F,$0F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$02,$02,$08,$08,$35,$14,$00,$00<br />
<br />
; error sound<br />
Sound6D: dc.w z80_ptr(ssamp6D),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$B0,$06,$80,$06,$B0,$18,$F2<br />
ssamp6D: dc.b $38,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$1F,$0C,$17,$00<br />
<br />
; silver sonic buzz saw<br />
Sound6E: dc.w z80_ptr(ssamp6E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$C6,$24,$E7<br />
- dc.b $C6,$04,$E7,$E6<br />
dc.w $04F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F3,$E7,$C7,$44,$F2<br />
ssamp6E: dc.b $33,$00,$10,$00,$31,$1F,$1D,$1E,$0E,$00,$0C,$1D<br />
dc.b $00,$00,$00,$01,$00,$0F,$0F,$0F,$0F,$08,$06,$07,$80<br />
<br />
<br />
Sound6F: dc.w z80_ptr(ssamp6A),$0103<br />
dc.w $8005,z80_ptr(++),$000B<br />
dc.w $8004,z80_ptr(+),$0012<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $E1,$02,$80,$02<br />
+ dc.b $EF,$00,$E6,$0C,$DF,$06,$E7,$E6,$F4,$06,$E7<br />
dc.b $E6,$F4,$12,$E7,$E6,$0C,$06,$E7,$E6,$0C,$06,$F2<br />
+ dc.b $F3,$E7,$C6,$04,$C0,$BA,$B4,$AE,$E6<br />
dc.b $01,$AE,$E6,$01,$AE,$E6,$01,$AE,$F2<br />
<br />
<br />
Sound70: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$C6,$18<br />
- dc.b $E7,$03,$E6<br />
dc.w $01F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to the other bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
; share these symbols externally (WARNING: don't rename, move or remove these labels!)<br />
shared movewZ80CompSize<br />
</asm><br />
<br />
We want to replace it with this optimized code:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===sound playback routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b 4(A0)<br />
bpl.s SkipPlaySound<br />
; End of function PlaySoundLocal<br />
</asm><br />
now we will find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
move.b d0,(SFX_to_play).w<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
; sub_1370<br />
PlaySound:<br />
stopz80<br />
cmp.b ($A01C0B).l,d0<br />
beq.s ++<br />
tst.b ($A01C0B).l<br />
bne.s +<br />
move.b d0,($A01C0B).l<br />
startz80<br />
rts<br />
<br />
+ move.b d0,($A01C0C).l<br />
<br />
+ move.w #0,($A11100).l<br />
<br />
SkipPlaySound:<br />
rts<br />
; End of function PlaySound<br />
</asm></div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208741
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-24T23:42:48Z
<p>Kram1024: /* Upgrade Music Routine */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==<br />
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><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
move sr,-(sp)<br />
movem.l d0-a6,-(sp)<br />
move #$2700,sr<br />
lea (Z80_Bus_Request).l,a3<br />
lea (Z80_Reset).l,a2<br />
moveq #0,d2<br />
move.w #$100,d1<br />
move.w d1,(a3) ; get Z80 bus<br />
move.w d1,(a2) ; release Z80 reset (was held high by console on startup)<br />
- btst d2,(a3)<br />
bne.s - ; wait until the 68000 has the bus<br />
jsr DecompressSoundDriver(pc)<br />
btst #0,(VDP_control_port+1).l ; check video mode<br />
sne (Z80_RAM+zPalModeByte).l ; set if PAL<br />
move.w d2,(a2) ; hold Z80 reset<br />
move.w d2,(a3) ; release Z80 bus<br />
moveq #$E6,d0<br />
- dbf d0,- ; wait for 2,314 cycles<br />
move.w d1,(a2) ; release Z80 reset<br />
movem.l (sp)+,d0-a6<br />
move (sp)+,sr<br />
rts<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; slightly modified Saxman decompression of the sound driver<br />
; a4 == $A00000 (start of Z80 RAM)<br />
; a5 == current position in Z80 RAM?<br />
; a6 == current position in compressed sound driver?<br />
; d0 == data to decompress? (byte)<br />
; d4 == ???<br />
; d5 == ???<br />
; d6 == ???<br />
; d7 == bytes left to decompress<br />
; loc_EC04A:<br />
DecompressSoundDriver:<br />
lea Snd_Driver(pc),a6<br />
; WARNING: the build script needs editing if you rename this label<br />
movewZ80CompSize: move.w #Snd_Driver_End-Snd_Driver,d7 ; patched (by fixpointer.exe) after compression since the exact size can't be known beforehand<br />
moveq #0,d6<br />
lea (Z80_RAM).l,a5<br />
moveq #0,d5<br />
lea (Z80_RAM).l,a4<br />
<br />
loc_EC062:<br />
lsr.w #1,d6<br />
btst #8,d6<br />
bne.s +<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d6<br />
ori.w #$FF00,d6<br />
+<br />
btst #0,d6<br />
beq.s loc_EC086<br />
jsr sub_EC0DE(pc)<br />
move.b d0,(a5)+<br />
addq.w #1,d5<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC086:<br />
jsr sub_EC0DE(pc)<br />
moveq #0,d4<br />
move.b d0,d4<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d3<br />
andi.w #$F,d3<br />
addq.w #2,d3<br />
andi.w #$F0,d0<br />
lsl.w #4,d0<br />
add.w d0,d4<br />
addi.w #$12,d4<br />
andi.w #$FFF,d4<br />
move.w d5,d0<br />
andi.w #$F000,d0<br />
add.w d0,d4<br />
cmp.w d4,d5<br />
bhs.s loc_EC0CC<br />
subi.w #$1000,d4<br />
bcc.s loc_EC0CC<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b #0,(a5)+<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC0CC:<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b (a4,d4.w),(a5)+<br />
addq.w #1,d4<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; End of function DecompressSoundDriver<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_EC0DE:<br />
move.b (a6)+,d0<br />
subq.w #1,d7<br />
bne.s +<br />
addq.w #4,sp<br />
+<br />
rts<br />
; End of function sub_EC0DE<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; S2 sound driver (Sound driver compression (slightly modified Saxman))<br />
; ---------------------------------------------------------------------------<br />
; loc_EC0E8:<br />
Snd_Driver:<br />
save<br />
include "s2.sounddriver.asm" ; CPU Z80<br />
restore<br />
padding off<br />
!org (Snd_Driver+Size_of_Snd_driver_guess) ; don't worry; I know what I'm doing<br />
<br />
<br />
; loc_ED04C:<br />
Snd_Driver_End:<br />
<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ---------------------------------------------------------------------------<br />
; the DAC data has to line up with the end of the bank.<br />
<br />
; actually it only has to fit within one bank, but we'll line it up to the end anyway<br />
; because the padding gives the sound driver some room to grow<br />
cnop -Size_of_DAC_samples, $8000<br />
<br />
; ---------------------------------------------------------------------------<br />
; DAC samples<br />
; ---------------------------------------------------------------------------<br />
; loc_ED100:<br />
SndDAC_Start:<br />
<br />
SndDAC_Sample1:<br />
BINCLUDE "sound/DAC/Sample 1.bin"<br />
SndDAC_Sample1_End<br />
<br />
SndDAC_Sample2:<br />
BINCLUDE "sound/DAC/Sample 2.bin"<br />
SndDAC_Sample2_End<br />
<br />
SndDAC_Sample5:<br />
BINCLUDE "sound/DAC/Sample 5.bin"<br />
SndDAC_Sample5_End<br />
<br />
SndDAC_Sample6:<br />
BINCLUDE "sound/DAC/Sample 6.bin"<br />
SndDAC_Sample6_End<br />
<br />
SndDAC_Sample3:<br />
BINCLUDE "sound/DAC/Sample 3.bin"<br />
SndDAC_Sample3_End<br />
<br />
SndDAC_Sample4:<br />
BINCLUDE "sound/DAC/Sample 4.bin"<br />
SndDAC_Sample4_End<br />
<br />
SndDAC_Sample7:<br />
BINCLUDE "sound/DAC/Sample 7.bin"<br />
SndDAC_Sample7_End<br />
<br />
SndDAC_End<br />
<br />
if SndDAC_End - SndDAC_Start > $8000<br />
fatal "DAC samples must fit within $8000 bytes, but you have $\{SndDAC_End-SndDAC_Start } bytes of DAC samples."<br />
endif<br />
if SndDAC_End - SndDAC_Start > Size_of_DAC_samples<br />
fatal "Size_of_DAC_samples = $\{Size_of_DAC_samples}, but you have $\{SndDAC_End-SndDAC_Start} bytes of DAC samples."<br />
endif<br />
<br />
; ---------------------------------------------------------------------------<br />
; Music pointers<br />
; ---------------------------------------------------------------------------<br />
align $8000<br />
<br />
; loc_F0000:<br />
MusicPoint1:<br />
MusPtr_Continue: rom_ptr_z80 Mus_Continue-MusicPoint2<br />
<br />
<br />
Mus_Continue: BINCLUDE "sound/music/Continue.bin"<br />
<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ----------------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ----------------------------------------------------------------------------------<br />
; the PCM data has to line up with the end of the bank.<br />
cnop -Size_of_SEGA_sound, $8000<br />
<br />
; -------------------------------------------------------------------------------<br />
; Sega Intro Sound<br />
; 8-bit unsigned raw audio at 16Khz<br />
; -------------------------------------------------------------------------------<br />
; loc_F1E8C:<br />
Snd_Sega: BINCLUDE "sound/PCM/SEGA.bin"<br />
Snd_Sega_End:<br />
<br />
if Snd_Sega_End - Snd_Sega > $8000<br />
fatal "Sega sound must fit within $8000 bytes, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
if Snd_Sega_End - Snd_Sega > Size_of_SEGA_sound<br />
fatal "Size_of_SEGA_sound = $\{Size_of_SEGA_sound}, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
<br />
; ------------------------------------------------------------------------------<br />
; Music pointers<br />
; ------------------------------------------------------------------------------<br />
align $8000<br />
soundBankStart := *<br />
<br />
; loc_F8000:<br />
MusicPoint2:<br />
MusPtr_CNZ_2P: rom_ptr_z80 Mus_CNZ_2P<br />
MusPtr_EHZ: rom_ptr_z80 Mus_EHZ<br />
MusPtr_MTZ: rom_ptr_z80 Mus_MTZ<br />
MusPtr_CNZ: rom_ptr_z80 Mus_CNZ<br />
MusPtr_MCZ: rom_ptr_z80 Mus_MCZ<br />
MusPtr_MCZ_2P: rom_ptr_z80 Mus_MCZ_2P<br />
MusPtr_ARZ: rom_ptr_z80 Mus_ARZ<br />
MusPtr_DEZ: rom_ptr_z80 Mus_DEZ<br />
MusPtr_SpecStage: rom_ptr_z80 Mus_SpecStage<br />
MusPtr_Options: rom_ptr_z80 Mus_Options<br />
MusPtr_Ending: rom_ptr_z80 Mus_Ending<br />
MusPtr_EndBoss: rom_ptr_z80 Mus_EndBoss<br />
MusPtr_CPZ: rom_ptr_z80 Mus_CPZ<br />
MusPtr_Boss: rom_ptr_z80 Mus_Boss<br />
MusPtr_SCZ: rom_ptr_z80 Mus_SCZ<br />
MusPtr_OOZ: rom_ptr_z80 Mus_OOZ<br />
MusPtr_WFZ: rom_ptr_z80 Mus_WFZ<br />
MusPtr_EHZ_2P: rom_ptr_z80 Mus_EHZ_2P<br />
MusPtr_2PResult: rom_ptr_z80 Mus_2PResult<br />
MusPtr_SuperSonic: rom_ptr_z80 Mus_SuperSonic<br />
MusPtr_HTZ: rom_ptr_z80 Mus_HTZ<br />
MusPtr_ExtraLife: rom_ptr_z80 Mus_ExtraLife<br />
MusPtr_Title: rom_ptr_z80 Mus_Title<br />
MusPtr_EndLevel: rom_ptr_z80 Mus_EndLevel<br />
MusPtr_GameOver: rom_ptr_z80 Mus_GameOver<br />
MusPtr_Invincible: rom_ptr_z80 Mus_Invincible<br />
MusPtr_Emerald: rom_ptr_z80 Mus_Emerald<br />
MusPtr_HPZ: rom_ptr_z80 Mus_HPZ<br />
MusPtr_Drowning: rom_ptr_z80 Mus_Drowning<br />
MusPtr_Credits: rom_ptr_z80 Mus_Credits<br />
<br />
; loc_F803C:<br />
Mus_HPZ: BINCLUDE "sound/music/HPZ.bin"<br />
Mus_Drowning: BINCLUDE "sound/music/Drowning.bin"<br />
Mus_Invincible: BINCLUDE "sound/music/Invincible.bin"<br />
Mus_CNZ_2P: BINCLUDE "sound/music/CNZ_2p.bin"<br />
Mus_EHZ: BINCLUDE "sound/music/EHZ.bin"<br />
Mus_MTZ: BINCLUDE "sound/music/MTZ.bin"<br />
Mus_CNZ: BINCLUDE "sound/music/CNZ.bin"<br />
Mus_MCZ: BINCLUDE "sound/music/MCZ.bin"<br />
Mus_MCZ_2P: BINCLUDE "sound/music/MCZ_2p.bin"<br />
Mus_ARZ: BINCLUDE "sound/music/ARZ.bin"<br />
Mus_DEZ: BINCLUDE "sound/music/DEZ.bin"<br />
Mus_SpecStage: BINCLUDE "sound/music/SpecStg.bin"<br />
Mus_Options: BINCLUDE "sound/music/Options.bin"<br />
Mus_Ending: BINCLUDE "sound/music/Ending.bin"<br />
Mus_EndBoss: BINCLUDE "sound/music/End_Boss.bin"<br />
Mus_CPZ: BINCLUDE "sound/music/CPZ.bin"<br />
Mus_Boss: BINCLUDE "sound/music/Boss.bin"<br />
Mus_SCZ: BINCLUDE "sound/music/SCZ.bin"<br />
Mus_OOZ: BINCLUDE "sound/music/OOZ.bin"<br />
Mus_WFZ: BINCLUDE "sound/music/WFZ.bin"<br />
Mus_EHZ_2P: BINCLUDE "sound/music/EHZ_2p.bin"<br />
Mus_2PResult: BINCLUDE "sound/music/2player results screen.bin"<br />
Mus_SuperSonic: BINCLUDE "sound/music/Supersonic.bin"<br />
Mus_HTZ: BINCLUDE "sound/music/HTZ.bin"<br />
Mus_Title: BINCLUDE "sound/music/Title screen.bin"<br />
Mus_EndLevel: BINCLUDE "sound/music/End of level.bin"<br />
<br />
; The following act mostly like sound effects<br />
; despite being listed with the music.<br />
; This means they're uncompressed format with absolute pointers<br />
; instead of compressed with relative pointers.<br />
; Because they have absolute pointers,<br />
; they have to be assembled rather than BINCLUDE'd.<br />
; See below (right before Sound20) for other notes<br />
; about the sound format that apply to these too.<br />
<br />
;Mus_ExtraLife: BINCLUDE "sound/music/Extra life.bin"<br />
Mus_ExtraLife: dc.w z80_ptr(Mus_EL_Voices),$0603,$02CD<br />
dc.w z80_ptr(Mus_EL_DAC),$0000<br />
dc.w z80_ptr(Mus_EL_FM1),$E810<br />
dc.w z80_ptr(Mus_EL_FM2),$E810<br />
dc.w z80_ptr(Mus_EL_FM3),$E810<br />
dc.w z80_ptr(Mus_EL_FM4),$E810<br />
dc.w z80_ptr(Mus_EL_FM5),$E810<br />
dc.w z80_ptr(Mus_EL_PSG1),$D008,$0005<br />
dc.w z80_ptr(Mus_EL_PSG2),$DC08,$0005<br />
dc.w z80_ptr(Mus_EL_PSG3),$DC00,$0004<br />
Mus_EL_FM4: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM1: dc.b $E0,$80<br />
+ dc.b $EF,$00,$E8,$06,$D9,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$DB,$09,$D7,$D6,$06,$D9,$18,$F2<br />
Mus_EL_FM2: dc.b $EF,$01,$E8,$06,$E2,$01,$D6,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$D7,$09,$D4,$D2,$06,$D6,$18,$E2,$01,$F2<br />
Mus_EL_FM5: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM3: dc.b $E0,$80<br />
+ dc.b $EF,$02,$BA,$0C,$80,$06,$BA,$B8,$80,$03<br />
dc.b $B8,$06,$80,$03,$B8,$06,$BA,$18,$F2<br />
Mus_EL_PSG1: dc.b $E8,$06,$D6,$06,$03,$03,$06,$06,$E8,$00,$D7,$09<br />
dc.b $D4,$D2,$06,$D6,$18<br />
Mus_EL_PSG2:<br />
Mus_EL_PSG3: dc.b $F2<br />
Mus_EL_DAC: dc.b $88,$12,$06,$8B,$09,$09,$06,$88,$06,$8A,$88,$8A<br />
dc.b $88,$0C,$E4<br />
Mus_EL_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
<br />
<br />
;Mus_GameOver: BINCLUDE "sound/music/Game over.bin"<br />
Mus_GameOver: dc.w z80_ptr(MusGO_Voices),$0603,$02F2<br />
dc.w z80_ptr(MusGOver_DAC),$0000<br />
dc.w z80_ptr(MusGOver_FM1),$E80A<br />
dc.w z80_ptr(MusGOver_FM2),$F40F<br />
dc.w z80_ptr(MusGOver_FM3),$F40F<br />
dc.w z80_ptr(MusGOver_FM4),$F40D<br />
dc.w z80_ptr(MusGOver_FM5),$DC16<br />
dc.w z80_ptr(MusGOver_PSG),$D003,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC06,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC00,$0004<br />
MusGOver_FM1: dc.b $EF,$00<br />
dc.b $F0,$20,$01,$04,$05<br />
dc.b $80,$0C,$CA,$12,$80,$06,$CA,$80,$CB,$12,$C8,$1E<br />
dc.b $CA,$06,$80,$CA,$80,$CA,$80,$C6,$80,$C4,$12,$C8<br />
dc.b $0C,$80,$12,$C9,$04,$80,$C9,$C8,$06,$80,$C7,$80<br />
dc.b $C6,$80<br />
dc.b $F0,$28,$01,$18,$05<br />
dc.b $C5,$60,$F2<br />
MusGOver_FM2: dc.b $EF,$01,$80,$01,$D9,$06,$80,$D9,$80,$D6,$80,$D6<br />
dc.b $80,$D7,$15,$D7,$1B,$D9,$06,$80,$D9,$80,$D6,$80<br />
dc.b $D6,$80,$DC,$15,$DC,$1B,$F2<br />
MusGOver_FM3: dc.b $EF,$01,$D6,$0C,$D6,$D2,$D2,$D4,$15,$D4,$1B,$D6<br />
dc.b $0C,$D6,$D2,$D2,$D7,$15,$D7,$1B,$F2<br />
MusGOver_FM4: dc.b $EF,$02,$E2,$01,$AE,$06,$80,$AE,$80,$A9,$80,$A9<br />
dc.b $80,$AC,$15,$AB,$0C,$AC,$03,$AB,$0C,$AE,$06,$80<br />
dc.b $AE,$80,$A9,$80,$A9,$80,$B3,$15,$B2,$0C,$B3,$03<br />
dc.b $B2,$0C,$AE,$04,$80,$AE,$AD,$06,$80,$AC,$80,$AB<br />
dc.b $80,$AB,$60,$E2,$01,$F2<br />
MusGOver_FM5: dc.b $EF,$03,$80,$30,$D7,$12,$80,$03,$D7,$1B,$80,$30<br />
dc.b $DC,$12,$80,$03,$DC,$1B<br />
MusGOver_PSG: dc.b $F2<br />
MusGOver_DAC: dc.b $80,$18,$81<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(MusGOver_DAC)<br />
dc.b $F2<br />
MusGO_Voices: dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $3C,$33,$73,$30,$70,$94,$96,$9F,$9F,$12,$14,$00<br />
dc.b $0F,$04,$04,$0A,$0D,$2F,$4F,$0F,$2F,$33,$1A,$80,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$1C,$27,$28,$80<br />
dc.b $1F,$66,$53,$31,$22,$1C,$1F,$98,$1F,$12,$0F,$0F<br />
dc.b $0F,$00,$00,$00,$00,$FF,$0F,$0F,$0F,$8C,$8A,$8D,$8B<br />
<br />
;Mus_Emerald: BINCLUDE "sound/music/Got an emerald.bin"<br />
Mus_Emerald: dc.w z80_ptr(MusEmrldVoices),$0703,$01D5<br />
dc.w z80_ptr(MusEmeraldDAC),$0000<br />
dc.w z80_ptr(MusEmeraldFM1),$F408<br />
dc.w z80_ptr(MusEmeraldFM2),$F408<br />
dc.w z80_ptr(MusEmeraldFM3),$F407<br />
dc.w z80_ptr(MusEmeraldFM4),$F416<br />
dc.w z80_ptr(MusEmeraldFM5),$F416<br />
dc.w z80_ptr(MusEmeraldFM6),$F416<br />
dc.w z80_ptr(MusEmeraldPSG1),$F402,$0004<br />
dc.w z80_ptr(MusEmeraldPSG2),$F402,$0005<br />
dc.w z80_ptr(MusEmeraldPSG3),$F400,$0004<br />
MusEmeraldFM3: dc.b $E1,$02<br />
MusEmeraldFM1: dc.b $EF,$00,$C1,$06,$C4,$C9,$CD,$0C,$C9,$D0,$2A,$F2<br />
MusEmeraldFM2: dc.b $EF,$00,$BD,$06,$C1,$C4,$C9,$0C,$C6,$CB,$2A,$F2<br />
MusEmeraldFM4: dc.b $EF,$01,$C1,$0C,$C1,$06,$C4,$06,$80,$C4,$80,$C9<br />
dc.b $2A,$F2<br />
MusEmeraldFM5: dc.b $EF,$01,$C9,$0C,$C9,$06,$CD,$06,$80,$CD,$80,$D0<br />
dc.b $2A,$F2<br />
MusEmeraldFM6: dc.b $EF,$01,$C4,$0C,$C4,$06,$C9,$06,$80,$C9,$80,$CD<br />
dc.b $2A,$F2<br />
MusEmeraldPSG2: dc.b $80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusEmeraldPSG1: dc.b $E2,$01,$80,$02,$80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
MusEmeraldPSG3:<br />
MusEmeraldDAC: dc.b $E2,$01,$F2<br />
MusEmrldVoices: dc.b $04,$35,$54,$72,$46,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$1D,$14,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$07,$07,$1A,$16,$80,$80<br />
<br />
;Mus_Credits: BINCLUDE "sound/music/Credits.bin"<br />
Mus_Credits: dc.w z80_ptr(MusCred_Voices),$0603,$01F0<br />
dc.w z80_ptr(MusCred_DAC),$0000<br />
dc.w z80_ptr(MusCred_FM1),$000E<br />
dc.w z80_ptr(MusCred_FM2),$180A<br />
dc.w z80_ptr(MusCred_FM3),$0014<br />
dc.w z80_ptr(MusCred_FM4),$0016<br />
dc.w z80_ptr(MusCred_FM5),$0C16<br />
dc.w z80_ptr(MusCred_PSG1),$E806,$000B<br />
dc.w z80_ptr(MusCred_PSG2),$DC07,$000B<br />
dc.w z80_ptr(MusCred_PSG3),$0002,$0003<br />
MusCred_FM1: dc.b $E9,$F4,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$0C,$E6,$02<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$03,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $AE,$06,$A2,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $E6,$FD<br />
- dc.b $EF,$00,$B7,$06,$BA,$F8<br />
dc.w z80_ptr(MusCreditsDA13)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$06,$80,$80,$30,$80,$EF,$0B,$E9,$18,$E6,$02<br />
- dc.b $94,$0C,$8F,$92,$8F,$06,$94,$05,$94,$07,$06,$8F<br />
dc.b $0C,$92,$8F<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$30,$80,$EF,$0E,$E6,$FF,$E9,$E8,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$91,$94,$06,$80,$18,$96,$12,$9A,$06,$80<br />
dc.b $80,$12,$8F,$93,$08,$80,$16,$96,$06,$91,$92,$94<br />
dc.b $96,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$9D,$9A,$08,$80,$16,$96,$12,$9D,$08,$80<br />
dc.b $04,$EF,$12<br />
dc.b $F0,$18,$01,$0A,$04<br />
dc.b $80,$30,$80,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$24,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$EF,$01,$E9,$F4,$E6,$FA,$F4<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $80,$03,$80,$60,$E6,$04,$E1,$01,$EF,$1B,$E6,$06<br />
dc.b $C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80,$EF<br />
dc.b $1C,$E6,$FA,$E8,$00,$BC,$0C,$12,$06,$EF,$1B,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$80,$E8,$06,$C4,$06,$06,$C6,$C4,$E8<br />
dc.b $00,$C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80<br />
dc.b $E8,$00,$EF,$1C,$E6,$FA,$C1,$C4,$C1,$EF,$1A,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$06,$80,$80,$24,$80,$30,$80,$EF,$1F<br />
dc.b $E9,$18,$E6,$F7,$E1,$00,$80,$06,$AC,$AE,$80,$B1<br />
dc.b $80,$B3,$80,$B4,$80,$B3,$80,$B1,$B3,$80,$B1,$E9<br />
dc.b $F4,$EF,$00,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC<br />
dc.b $06,$AE,$B1,$80,$B4,$B1,$80,$B1,$E9,$0C,$EF,$1F<br />
dc.b $80,$06,$B8,$12,$B4,$06,$80,$B3,$80,$B4,$80,$B3<br />
dc.b $80,$B1,$AE,$80,$B1,$E9,$F4,$EF,$00,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$30,$80,$EF,$21,$E9,$0C,$80,$30,$80<br />
dc.b $08,$A0,$04,$9E,$0C,$9D,$9B,$99,$08,$04,$91,$0C<br />
dc.b $92,$93,$94,$98,$99,$9B,$9D,$98,$95,$93,$91,$98<br />
dc.b $9D,$91,$96,$98,$99,$98,$96,$99,$9D,$96,$95,$97<br />
dc.b $99,$97,$95,$96,$97,$98,$99,$98,$99,$9B,$9D,$08<br />
dc.b $04,$98,$0C,$91,$95,$96,$98,$99,$9D,$9E,$08,$96<br />
dc.b $10,$97,$0C,$98,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$08,$99,$04,$EF,$23,$E9,$E8,$E6,$07,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $80,$60,$E6,$FB,$80,$0C,$CD,$06,$80,$D4,$CD,$06<br />
dc.b $80,$0C,$CD,$06,$80,$D4,$CD,$06,$80,$18,$E6,$05<br />
dc.b $80,$0C,$AE,$80,$AE,$80,$24,$E1,$02,$E6,$08,$A2<br />
dc.b $6C,$F2<br />
MusCreditsD9D1: dc.b $A5,$0C,$B1,$06,$80,$B1,$0C,$AC,$B3,$12,$B1,$0C<br />
dc.b $AC,$06,$AE,$B1,$A7,$0C,$B3,$06,$80,$B3,$0C,$AE<br />
dc.b $B5,$12,$B3,$06,$80,$AE,$B0,$B3,$A3,$0C,$AF,$06<br />
dc.b $80,$AF,$0C,$AA,$B1,$12,$AF,$0C,$AA,$06,$AC,$AF<br />
dc.b $A2,$0C,$AE,$06,$A2,$A4,$0C,$B0,$06,$A4,$A5,$0C<br />
dc.b $B1,$06,$A5,$A2,$0C,$E3<br />
MusCreditsDA13: dc.b $BE,$0C,$BC,$06,$BA,$BC,$BA,$04,$E7,$08,$BA,$04<br />
dc.b $80,$0E,$EF,$07,$B7,$06,$B2,$B5,$B7,$EF,$00,$B7<br />
dc.b $BA,$BE,$0C,$BC,$06,$BA,$BC,$BA,$0C,$BC,$04,$80<br />
dc.b $08,$BA,$04,$80,$08,$BC,$04,$80,$08,$BE,$12,$BA<br />
dc.b $06,$B7,$80,$B7,$80,$24,$EF,$07,$B7,$06,$B2,$B5<br />
dc.b $B7,$80,$0C,$80,$30,$BE,$06,$BE,$BA,$04,$80,$08<br />
dc.b $BC,$06,$BE,$E3<br />
MusCreditsDA5F: dc.b $C3,$01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$02,$C3<br />
dc.b $01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01<br />
dc.b $E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$FC,$C3,$01,$E7<br />
dc.b $C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01,$E7,$C4<br />
dc.b $E7,$C5,$E7,$C6,$2D,$E7,$30,$E7,$30,$E3<br />
MusCreditsDA99: dc.b $A7,$0C,$B3,$06,$80,$B1,$80,$B3,$0C,$A7,$03,$80<br />
dc.b $06,$A7,$03,$B3,$0C,$B1,$B3,$09,$AE,$03,$AC,$06<br />
dc.b $80,$AC,$0C,$AE,$06,$80,$AE,$0C,$AF,$06,$80,$27<br />
dc.b $E3<br />
MusCreditsDABE: dc.b $80,$0C,$CA,$15,$80,$03,$CA,$06,$80,$CB,$0F,$80<br />
dc.b $03,$C8,$18,$80,$06,$CA,$80,$CA,$80,$CA,$80,$C6<br />
dc.b $80,$C4,$0F,$80,$03,$C8,$18,$80,$06<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E3<br />
MusCreditsDAE5: dc.b $80,$12,$94,$97,$06,$80,$18,$99,$12,$94,$06,$80<br />
dc.b $80,$12,$92,$96,$06,$80,$18,$97,$12,$92,$06,$80<br />
dc.b $E3<br />
MusCreditsDAFE: dc.b $80,$99,$80,$99,$80,$9E,$80,$E3<br />
MusCreditsDB06: dc.b $EF,$07,$80,$54,$C7,$04,$C8,$C9,$CA,$24,$CD,$D2<br />
dc.b $18,$D0,$24,$CF,$CB,$18,$CB,$0C,$CA,$80,$CD,$60<br />
dc.b $E7,$3C,$CA,$24,$CD,$D2,$18,$D4,$24,$D0,$D4,$18<br />
dc.b $D4,$24,$D6,$60,$E7,$3C,$E3<br />
MusCred_FM2: dc.b $80,$60,$EF,$01,$E8,$06,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $85,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8A,$87,$88,$89,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $88<br />
dc.b $F7,$00,$0B<br />
dc.w z80_ptr(-)<br />
- dc.b $8A<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$E6,$FC,$8A,$8B,$8C,$E6,$04,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$8D,$8A,$8B,$8C,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8D,$06,$99,$E8,$00,$8A,$0C,$8B,$8C,$E9,$E8,$E6<br />
dc.b $0C,$EF,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E6,$F9,$EF,$08<br />
MusCreditsDB93: dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $06,$9C,$12,$9D,$0C,$9E,$F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9D,$04,$80,$08,$9D,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $9C,$04,$80,$08,$9C,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(MusCreditsDB93)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$13,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$60,$EF,$0F,$E6,$F3<br />
dc.b $F0,$04,$02,$03,$02<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$30,$E7,$18,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$EF,$13,$E6,$F5,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$0C,$A9,$08,$A1,$10,$F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$08,$A9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E1,$02,$E9,$F4,$E6,$0A,$F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$EF,$1B,$E1,$00<br />
dc.b $E8,$06,$80,$3C,$B8,$06,$06,$BA,$BD,$BD,$BA,$EF<br />
dc.b $1D,$E6,$FA,$E8,$00,$F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $EF,$1C,$BD,$EF,$1D,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $80,$30,$80,$EF,$01,$E9,$18,$E6,$F9<br />
- dc.b $99,$0C,$A5,$06,$80,$96,$0C,$A2,$06,$80,$97,$0C<br />
dc.b $A3,$06,$80,$98,$0C,$A8,$06,$A7,$99,$06,$99,$12<br />
dc.b $96,$0C,$A2,$06,$80,$97,$0C,$A3,$06,$80,$98,$0C<br />
dc.b $A4,$06,$80<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$22,$E9,$E8,$E6,$03<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$AC,$04,$AE,$08,$B1,$04,$B5,$30,$80,$0C<br />
dc.b $B5,$08,$80,$04,$B6,$08,$B5,$10,$B9,$08,$04,$80<br />
dc.b $08,$B5,$34,$80,$0C,$B5,$BA,$08,$04,$80,$08,$B5<br />
dc.b $04,$B1,$24,$80,$0C,$B1,$08,$80,$04,$B3,$08,$B1<br />
dc.b $04,$B4,$0C,$B3,$08,$B1,$4C,$80,$0C,$B5,$08,$80<br />
dc.b $04,$B6,$08,$80,$04,$B5,$08,$80,$04,$B9,$08,$04<br />
dc.b $80,$08,$B5,$1C,$80,$0C,$BA,$18,$BC,$08,$BA,$04<br />
dc.b $BD,$18,$80,$0C,$BA,$04,$80,$08,$B8,$18,$B5,$B1<br />
dc.b $B3,$0C,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$0C,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$14,$B1,$04,$E6,$FF,$EF,$24,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $AC,$12,$AB,$0C,$AC,$06,$AB,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $B3,$12,$B2,$0C,$B3,$06,$B2,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $AC,$06,$80,$A9,$80,$AA,$80,$AB,$80,$AC,$AC,$A9<br />
dc.b $80,$AA,$80,$AC,$80,$A9,$80,$A9,$80,$AD,$80,$AD<br />
dc.b $80,$B0,$80,$B0,$80,$B3,$80,$B3,$80,$80,$0C,$A2<br />
dc.b $12,$80,$06,$A2,$12,$AD,$AE,$06,$80,$E6,$FD,$A2<br />
dc.b $6C,$F2<br />
MusCreditsDD59: dc.b $80,$0C,$C4,$06,$80,$C6,$80,$C4,$80,$C9,$80,$C9<br />
dc.b $80,$CB,$CD,$80,$0C,$80,$CB,$18,$C6,$06,$80,$C9<br />
dc.b $C9,$80,$CB,$0C,$80,$12,$80,$1E,$C7,$06,$C9,$C7<br />
dc.b $CB,$80,$C9,$80,$C7,$C9,$80,$C6,$E7,$C6,$30,$E7<br />
dc.b $18,$80,$18,$E3<br />
MusCreditsDD8D: dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
dc.b $06,$AB,$9F,$0C,$E3<br />
MusCreditsDD9D: dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$B6,$80,$18<br />
dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$30,$E7,$E3<br />
MusCreditsDDB5: dc.b $BF,$06,$BD,$BF,$12,$C2,$BF,$0C,$C1,$80,$06,$12<br />
dc.b $C4,$0C,$C2,$06,$80,$C9,$C6,$3C,$80,$06,$0C,$C7<br />
dc.b $12,$C6,$C4,$06,$C2,$C1,$18,$E3<br />
MusCreditsDDD5: dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$E3<br />
MusCreditsDDEA: dc.b $A2,$0C,$AE,$AC,$08,$AE,$04,$AC,$08,$A9,$04,$A7<br />
dc.b $08,$04,$E3<br />
MusCreditsDDF9: dc.b $80,$0C,$B1,$AE,$06,$06,$AC,$0C,$80,$B0,$AE,$06<br />
dc.b $06,$AC,$0C,$E3<br />
MusCreditsDE09: dc.b $AE,$AC,$06,$06,$AA,$0C,$80,$AC,$0C,$06,$06,$AE<br />
dc.b $AC,$E3<br />
MusCreditsDE17: dc.b $BA,$04,$80,$08,$B8,$18,$B5,$B1,$E3<br />
MusCreditsDE20: dc.b $AE,$06,$80,$AE,$80,$A9,$80,$A9,$80,$E3<br />
MusCreditsDE2A: dc.b $8A,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $E3<br />
MusCred_FM3: dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$18,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $B8,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $BD,$3C,$E9,$E8,$E6,$02,$E1,$03,$EF,$04,$E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$09,$E9,$0C,$E6,$FD,$E0,$40<br />
dc.b $F0,$06,$01,$05,$04<br />
dc.b $E1,$00<br />
- dc.b $9F,$0C,$AB,$06,$80,$A9,$80,$AB,$9F,$80,$9F,$AB<br />
dc.b $80,$A9,$80,$AB,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $9D,$0C,$A9,$06,$80,$A8,$80,$A9,$9C,$80,$9C,$A8<br />
dc.b $80,$A6,$80,$A8,$0C<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0D,$E6,$FB,$E0,$C0,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0F,$E0,$80,$E6,$0B,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$48,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$0C<br />
dc.b $F0,$18,$01,$03,$04<br />
dc.b $E6,$F3,$E0,$C0,$EF,$14,$A2,$14,$A4,$04,$A5,$04<br />
dc.b $80,$08,$A9,$04,$80,$08,$A8,$04,$80,$08,$A9,$04<br />
dc.b $80,$08,$AC,$08,$A9,$10<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$18,$E9,$F4,$E6,$08,$F4,$E0,$40,$80,$60,$80<br />
dc.b $30,$C6,$06,$80,$C2,$0C,$C4,$09,$C2,$03,$BF,$0C<br />
dc.b $80,$60,$80,$3C,$80,$60,$EF,$1B,$E6,$FB,$E0,$C0<br />
dc.b $E8,$06,$C4,$06,$06,$C6,$C9,$C9,$C6,$E8,$00,$CD<br />
dc.b $0C,$E8,$06,$C9,$06,$C6,$C9,$0C,$80,$80,$12,$EF<br />
dc.b $1C,$E8,$00,$BD,$BA,$0C,$E8,$06,$EF,$1B,$CE,$06<br />
dc.b $CE,$80,$CE,$80,$CE,$E8,$00,$CF,$0C,$D0,$80,$E8<br />
dc.b $06,$D0,$06,$06,$D2,$D0,$E8,$00,$CD,$0C,$E8,$06<br />
dc.b $C9,$06,$C6,$C9,$0C,$E8,$00,$EF,$1C,$80,$1E,$C2<br />
dc.b $0C,$C2,$BD,$06,$80,$60,$80,$60,$EF,$00,$E9,$18<br />
dc.b $80,$60,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC,$06<br />
dc.b $AE,$B1,$80,$B4,$B1,$80,$B1,$80,$60,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$60,$EF,$22,$E9,$DC,$E6,$FF,$E0,$80<br />
dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $CD,$30,$CB,$18,$CD,$0C,$CB,$C9,$30,$CE,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$FC,$80,$C4,$80,$C4,$80,$C6,$18,$08,$C4,$04<br />
dc.b $E9,$0C,$E6,$FF,$E0,$C0,$EF,$00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $CB,$12,$CB,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $D0,$12,$D0,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$CB,$12,$80,$06,$CB,$80,$CA,$12,$CB,$CA<br />
dc.b $0C,$C5,$18,$C8,$CB,$D1,$80,$0C,$CD,$80,$CD,$12<br />
dc.b $CC,$CD,$06,$80,$E6,$F8,$EF,$01,$E1,$03,$A2,$6C<br />
dc.b $F2<br />
MusCreditsDFF2: dc.b $80,$60,$BC,$06,$BD,$BC,$B8,$BA,$B6,$0C,$B8,$B3<br />
dc.b $B3,$06,$B6,$0C,$B8,$E3<br />
MusCreditsE004: dc.b $80,$0C,$CD,$04,$80,$10,$CD,$04,$80,$0C,$CD,$0C<br />
dc.b $CE,$08,$CD,$04,$80,$18,$80,$0C,$CB,$04,$80,$10<br />
dc.b $CB,$04,$80,$0C,$CB,$0C,$CD,$08,$CB,$04,$80,$18<br />
- dc.b $80,$0C,$C9,$04,$80,$10,$C9,$04,$80,$0C,$C9,$0C<br />
dc.b $CB,$08,$C9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E3<br />
MusCreditsE040: dc.b $80,$18,$B8,$0B,$80,$0D,$BA,$0C,$0B,$80,$19,$BD<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE051: dc.b $80,$0C,$C4,$80,$C4,$80,$C6,$80,$C6,$E3<br />
MusCreditsE05B: dc.b $CD,$06,$80,$CD,$80,$CA,$80,$CA,$80,$E3<br />
MusCreditsE065: dc.b $EF,$05,$E9,$F4,$C6,$60,$CB,$CD,$E7,$CD,$C6,$60<br />
dc.b $D0,$D0,$24,$D2,$60,$E7,$3C,$E3<br />
MusCred_FM4: dc.b $80,$60,$E9,$FB,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$1D,$E6,$02,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B5,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B8,$3C,$E6,$06,$EF,$05<br />
dc.b $F0,$02,$01,$FE,$04<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E9,$F4,$E6,$F7<br />
dc.b $F0,$0C,$01,$FB,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$25,$C3,$06,$C3,$80,$0C,$C3,$06,$C3,$05,$80<br />
dc.b $0D,$C3,$06,$C5,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$05,$F4,$E1,$02,$E0<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$0C,$80,$60,$EF,$10,$E6,$F7,$E1,$00,$E0<br />
dc.b $40,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $B3,$B7,$06,$AE,$0C,$B1,$B3,$B7,$06,$80,$B7,$AE<br />
dc.b $0C,$B1,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $EF,$15,$E6,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
- dc.b $EF,$14,$80,$4E,$E0,$40,$A1,$12,$A2,$06,$E0,$C0<br />
dc.b $EF,$16,$80,$30,$80,$06,$BA,$08,$B9,$04,$B8,$08<br />
dc.b $B7,$04,$B6,$08,$B5,$04<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E9,$F4,$E6,$02,$E0,$C0<br />
dc.b $F0,$01,$01,$03,$03<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$1E,$E0,$40,$E6,$FE,$E9,$F4,$F4,$E8<br />
dc.b $06,$80,$0C,$C1,$06,$12,$18,$C4,$06,$12,$0C,$EF<br />
dc.b $1C,$E0,$C0,$E6,$FA,$E8,$00,$C6,$E8,$06,$E6,$06<br />
dc.b $EF,$1E,$E0,$40,$C2,$06,$12,$18,$C4,$06,$12,$18<br />
dc.b $C1,$06,$12,$18,$C4,$06,$12,$0C,$EF,$1A,$E0,$C0<br />
dc.b $E9,$0C,$C6,$06,$C6,$80,$C6,$80,$C6,$E8,$00,$C7<br />
dc.b $0C,$C8,$06,$EF,$1E,$E0,$40,$E9,$F4,$E8,$06,$80<br />
dc.b $C4,$06,$12,$0C,$80,$60,$EF,$20,$E9,$18,$E6,$FA<br />
dc.b $E0,$C0,$E8,$00,$B4,$03,$E7,$B6,$5D,$B3,$03,$E7<br />
dc.b $B5,$5D,$B1,$03,$E7,$B3,$5D,$B3,$03,$E7,$B5,$5D<br />
dc.b $80,$60,$EF,$22,$E0,$40,$E9,$E8,$E6,$04,$80,$30<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $C9,$30,$C8,$18,$C9,$0C,$C8,$C6,$30,$C9,$80,$0C<br />
dc.b $C1,$80,$C1,$80,$C2,$80,$C2,$E6,$04,$80,$C1,$80<br />
dc.b $C1,$80,$C2,$80,$C2,$E6,$FC,$80,$C1,$80,$C1,$80<br />
dc.b $C2,$18,$08,$C1,$04,$E9,$0C,$E6,$FF,$E0,$C0,$EF<br />
dc.b $00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $C8,$12,$C8,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $CB,$12,$CB,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E1,$03,$E6,$08,$F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $E6,$F0,$EF,$01<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $A2,$6C,$F2<br />
MusCreditsE22D: dc.b $A2,$14,$A4,$04,$A5,$04,$80,$08,$A9,$04,$80,$08<br />
dc.b $A8,$04,$80,$08,$A9,$04,$80,$08,$AC,$08,$A9,$10<br />
dc.b $E3<br />
MusCreditsE246: dc.b $80,$0C<br />
dc.b $C9,$04,$80,$10<br />
dc.b $C9,$04,$80,$0C<br />
dc.b $C9,$0C<br />
dc.b $CB,$08<br />
dc.b $C9,$04,$80,$18,$80,$0C<br />
dc.b $C8,$04,$80,$10<br />
dc.b $C8,$04,$80,$0C<br />
dc.b $C8,$0C<br />
dc.b $C9,$08<br />
dc.b $C8,$04,$80,$18,$80,$0C<br />
<br />
if 1==1<br />
; this part of the original credits music (CNZ PSG) sounds buggy (dissonant)<br />
dc.b $C6,$04,$80,$10<br />
dc.b $C6,$04,$80,$0C<br />
dc.b $C6,$0C<br />
dc.b $C8,$08<br />
dc.b $C6,$04,$80,$18,$80,$0C<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $C7,$08<br />
else<br />
; replace the above block of notes with this to fix it.<br />
; (I'm not sure why, but the notes $C6 and $C7 are broken here,<br />
; so I've replaced them with pitch-shifted $C8s)<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$10 ; $C6<br />
dc.b $C8,$04,$80,$0C ; $C6<br />
dc.b $C8,$0C ; $C6<br />
dc.b $E1,0<br />
dc.b $C8,$08<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$24 ; $C6<br />
dc.b $E1,0<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $E1,-32<br />
dc.b $C8,$08 ; $C7<br />
dc.b $E1,0<br />
endif<br />
<br />
dc.b $C5,$04,$80,$18<br />
dc.b $E3<br />
MusCreditsE28F: dc.b $EF,$25,$80,$0C,$D0,$D4,$D7,$DB,$0C,$80,$06,$DB<br />
dc.b $0C,$DC,$06,$DB,$0C,$DD,$60,$DE,$0C,$80,$DE,$80<br />
dc.b $80,$06,$DD,$12,$DE,$0C,$E3<br />
MusCreditsE2AE: dc.b $80,$18,$B5,$0B,$80,$0D,$B7,$0C,$0B,$80,$19,$BA<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE2BF: dc.b $C3,$05,$80,$13,$C3,$12,$C3,$05,$E3<br />
MusCreditsE2C8: dc.b $CA,$06,$80,$CA,$80,$C6,$80,$C6,$80,$E3<br />
MusCreditsE2D2: dc.b $AF,$0C,$B3,$06,$B6,$0C,$AF,$B1,$06,$80,$B1,$0C<br />
dc.b $B5,$06,$B8,$0C,$B1,$06,$80,$B6,$0C,$BA,$06,$B1<br />
dc.b $0C,$B5,$B6,$BA,$06,$80,$BA,$AF,$0C,$B3,$B5,$B8<br />
dc.b $06,$B2,$0C,$B3,$B5,$B8,$06,$80,$B8,$B2,$0C,$B5<br />
dc.b $E3<br />
MusCred_FM5: dc.b $E9,$E8,$E6,$F8,$E1,$05,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$18,$E6,$08,$E1,$00,$EF,$02<br />
dc.b $F0,$0C,$01,$FC,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B1,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B5,$3C,$E9,$F4,$E6,$07<br />
dc.b $F0,$30,$01,$04,$04<br />
dc.b $EF,$06<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E6,$F6<br />
dc.b $F0,$0C,$01,$05,$04<br />
dc.b $E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$25,$C6,$06,$C6,$80,$0C,$C6,$06,$C6,$05,$80<br />
dc.b $0D,$C6,$06,$C8,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$E6,$05,$F4,$80,$01,$EF,$0C,$E1<br />
dc.b $FE,$E0,$40,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $23,$80,$0C,$80,$60,$EF,$11,$E9,$F4,$E6,$F4,$E1<br />
dc.b $00,$E0,$C0<br />
dc.b $F0,$06,$01,$06,$05<br />
dc.b $80,$60,$80,$30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60<br />
dc.b $80,$06,$CB,$80,$CB,$C9,$80,$C9,$80,$C7,$80,$C7<br />
dc.b $80,$C6,$03,$80,$C6,$80,$09,$80,$06,$80,$60,$80<br />
dc.b $30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60,$EF,$16,$E9<br />
dc.b $0C,$E6,$04,$F4,$E0,$80,$80,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
dc.b $80,$2F,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$30,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$60,$EF,$19,$E9,$F4,$E0,$C0,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$27,$B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$2A,$80,$60,$EF,$1E,$E9,$F4,$E8,$06<br />
- dc.b $80,$0C,$C4,$06,$12,$18,$C8,$06,$12,$0C,$80,$C6<br />
dc.b $06,$12,$18,$C8,$06,$12,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$20,$E8,$00,$E9,$18,$E6,$FA,$B8,$03<br />
dc.b $E7,$BA,$5D,$B6,$03,$E7,$B8,$5D,$B4,$03,$E7,$B6<br />
dc.b $5D,$B6,$03,$E7,$B8,$5D,$80,$60,$EF,$22,$E9,$F4<br />
dc.b $E6,$05<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$A7,$04,$A9,$08,$AC,$04,$B1,$30,$80,$0C<br />
dc.b $B1,$08,$80,$04,$B3,$08,$B1,$10,$B5,$08,$B5,$04<br />
dc.b $80,$08,$B0,$34,$80,$0C,$B0,$B5,$08,$04,$80,$08<br />
dc.b $B1,$04,$AE,$24,$80,$0C,$AE,$08,$80,$04,$B0,$08<br />
dc.b $AE,$04,$B1,$0C,$AF,$08,$AD,$4C,$80,$0C,$B1,$08<br />
dc.b $80,$04,$B3,$08,$80,$04,$B1,$08,$80,$04,$B5,$08<br />
dc.b $B5,$04,$80,$08,$B0,$1C,$80,$0C,$B5,$18,$B8,$08<br />
dc.b $B5,$04,$BA,$18,$80,$0C,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$04,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$F8,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$AA,$14,$A9,$04,$E6,$0C,$EF,$23,$E1,$03<br />
dc.b $E6,$F7,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E6,$09<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $F2<br />
MusCreditsE4CD: dc.b $80,$1E,$EF,$14,$A4,$12,$A5,$06,$EF,$16,$80,$30<br />
dc.b $80,$06,$BD,$08,$BC,$04,$BB,$08,$BA,$04,$B9,$08<br />
dc.b $B8,$04,$E3<br />
MusCreditsE4E8: dc.b $80,$18,$B1,$0B,$80,$0D,$B3,$0C,$0B,$80,$19,$B6<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE4F9: dc.b $C6,$05,$80,$13,$C6,$12,$C6,$05,$E3<br />
MusCreditsE502: dc.b $80,$60,$AC,$06,$80,$AC,$0C,$AE,$06,$80,$AE,$0C<br />
dc.b $AF,$06,$E3<br />
MusCred_PSG1: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG1)<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$F4,$E6,$FE,$F5,$01,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $AE,$B3,$06,$AC,$0C,$AE,$AE,$B3,$06,$80,$B3,$AB<br />
dc.b $0C,$AE,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $F5,$0B,$80,$04,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$20,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$F5,$00,$E8,$06,$E9,$F4,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$80,$C2,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$04,$80,$C2,$80,$0C,$C2,$80,$60,$F5,$08,$E9<br />
dc.b $04,$EC,$02,$E8,$06<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F0,$EC,$FF,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $E9,$18,$EC,$02,$B5,$30,$B3,$18,$B5,$0C,$B3,$B1<br />
dc.b $30,$B6,$EC,$FE,$80,$0C,$B8,$80,$B8,$80,$BA,$80<br />
dc.b $BA,$EC,$03,$C4,$18,$C1,$BD,$BF,$0C,$80,$EC,$FC<br />
dc.b $80,$B8,$80,$B8,$80,$BA,$18,$08,$B8,$04,$E9,$F4<br />
dc.b $EC,$01,$F5,$05<br />
- dc.b $80,$60<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$C8,$12,$80,$06,$C8,$80,$C6,$12,$C8,$C6<br />
dc.b $0C,$C1,$18,$C5,$C8,$CB,$80,$0C,$CA,$80,$CA,$12<br />
dc.b $C9,$CA,$06,$80,$09,$E9,$30,$EC,$FC,$F6<br />
dc.w z80_ptr(MusCreditsE770)<br />
dc.b $F2<br />
MusCreditsE618: dc.b $80,$0C,$BD,$06,$12,$18,$C4,$06,$12,$0C,$80,$C2<br />
dc.b $06,$12,$18,$C4,$06,$12,$0C,$E3<br />
MusCreditsE62C: dc.b $80,$60,$80,$0C,$C2,$80,$C2,$80,$E3<br />
MusCreditsE635: dc.b $AC,$0C,$AF,$06,$B3,$0C,$AC,$AC,$06,$80,$AC,$0C<br />
dc.b $AF,$06,$B5,$0C,$AC,$06,$80,$06,$B1,$0C,$B6,$06<br />
dc.b $AE,$0C,$B1,$B3,$B6,$06,$80,$B6,$AA,$0C,$AF,$AF<br />
dc.b $B5,$06,$AC,$0C,$AF,$B2,$B5,$06,$80,$B5,$AE,$0C<br />
dc.b $B2,$E3<br />
MusCred_PSG2: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG2)<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$0C,$EC,$FD,$F5,$04,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
dc.b $F0,$03,$02,$01,$05<br />
dc.b $F5,$0A,$E9,$E8,$EC,$02,$80,$30,$80,$80,$BD,$06<br />
dc.b $BF,$C6,$C2,$1E,$80,$60,$80,$06,$C6,$80,$C6,$C4<br />
dc.b $80,$C4,$80,$C3,$80,$C3,$80,$BF,$03,$80,$BF,$80<br />
dc.b $09,$80,$06,$80,$30,$80,$80,$BD,$06,$BF,$C6,$C2<br />
dc.b $1E,$80,$60,$F4<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$00,$EC,$FE,$E8,$06,$80,$60,$80,$0C,$BF,$80<br />
dc.b $BF,$80,$BF,$80,$BF,$80,$60,$80,$0C,$BF,$80,$BF<br />
dc.b $80,$BF,$04,$80,$BF,$80,$0C,$BF,$80,$60,$EC,$02<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F4,$EC,$FF,$E9,$E8,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $E9,$18,$EC,$02,$B1,$30,$B0,$18,$B1,$0C,$B0,$AE<br />
dc.b $30,$B1,$EC,$FE,$80,$0C,$B5,$80,$B5,$80,$B6,$80<br />
dc.b $B6,$EC,$03,$80,$B1,$80,$B1,$80,$B1,$80,$B1,$EC<br />
dc.b $FC,$80,$B1,$80,$B1,$80,$B1,$18,$08,$B1,$04,$EC<br />
dc.b $01,$E9,$18,$F5,$05,$E1,$01,$80,$60,$80,$80,$80<br />
dc.b $80,$80,$80,$0C,$CD,$06,$80,$D4,$CD,$80,$0C,$CD<br />
dc.b $06,$80,$D4,$CD,$80,$18,$80,$54,$E9,$24,$EC,$FD<br />
MusCreditsE770: dc.b $F5,$03,$80,$06<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$FF<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$01<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusCred_PSG3: dc.b $F3,$E7,$80,$60,$F5,$02<br />
- dc.b $C6,$0C,$0C,$0C,$06,$06,$0C,$0C,$06,$06,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$1F<br />
dc.w z80_ptr(-)<br />
dc.b $0C,$F5,$03,$C6,$F5,$02<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $06,$06,$06,$06<br />
dc.b $F7,$01,$04<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$04,$EC,$02<br />
- dc.b $E8,$03,$C6,$06,$06,$E8,$00,$0C<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$02,$EC,$FD<br />
- dc.b $80,$0C,$C6,$06,$80,$07,$C6,$06,$80,$11,$C6,$0C<br />
dc.b $80,$06,$C6,$0C,$80,$06,$C6,$80<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$02<br />
- dc.b $C6,$0C,$08,$04<br />
dc.b $F7,$00,$18<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$0C,$0C,$08,$04<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$04,$EC,$02<br />
- dc.b $C6,$06,$06,$0C<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EC,$FF<br />
- dc.b $F5,$01,$C6,$0C,$F5,$02,$EC,$FF,$08,$F5,$01,$EC<br />
dc.b $01,$04<br />
dc.b $F7,$00,$27<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$FF,$F5,$04<br />
- dc.b $E8,$03,$C6,$0C,$E8,$0C,$0C<br />
dc.b $F7,$00,$1E<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$03,$C6,$06,$E8,$0E,$12,$E8,$03,$0C,$E8,$0F<br />
dc.b $0C,$F2<br />
MusCred_DAC: dc.b $82,$06,$82,$82,$82,$82,$0C,$06,$0C,$06,$0C,$0C<br />
dc.b $0C<br />
- dc.b $81,$18,$82<br />
dc.b $F7,$00,$0E<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C<br />
- dc.b $82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EA,$EA,$F8<br />
dc.w z80_ptr(MusCreditsEA6E)<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$82,$06,$82,$82,$82,$81,$0C,$82,$06,$82<br />
dc.b $81,$81,$82,$82,$82,$82<br />
- dc.b $81,$18,$82,$81,$82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$82,$82,$82,$06,$82,$8C,$8C,$8D,$8D<br />
dc.b $8E,$8E,$F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$18,$82,$0C,$81,$18,$82,$0C,$82,$82,$06,$82<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$0C,$82,$82,$82,$8D,$06,$8D,$8E,$8E,$82,$06<br />
dc.b $82,$8D,$0C,$82,$0C,$82,$06,$82,$80,$82,$82,$0C<br />
MusCreditsE8E5: dc.b $82,$0C,$82,$82,$06,$82,$8D,$8D<br />
- dc.b $81,$0C,$8F,$06,$90,$82,$0C,$90,$06,$91,$81,$0C<br />
dc.b $8F,$06,$91,$82,$0C,$8F,$06,$91<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$8F,$06,$91,$82,$0C,$8F,$06,$91,$8C,$06<br />
dc.b $03,$03,$8D,$06,$8D,$8D,$8E,$8E,$8E,$81,$06,$0C<br />
dc.b $82,$06,$80,$0C,$81,$82,$8E,$82,$06,$82,$82,$82<br />
- dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$12,$8C,$06<br />
dc.b $82,$0C,$83,$06,$81,$80<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$06,$82,$06<br />
dc.b $81,$0C,$06,$82,$0C,$08,$04,$EA,$CD,$82,$30,$82<br />
dc.b $0C,$82,$82,$82,$08,$04,$F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$04,$82,$08,$04<br />
dc.b $08,$04,$04,$04,$04,$08,$04,$EA,$C5<br />
- dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82,$0C,$06<br />
dc.b $06,$81,$0C,$82,$06,$82,$82,$82,$8D,$0C,$82,$0C<br />
dc.b $0C,$0C,$06,$06<br />
- dc.b $81,$0C,$81,$82,$80,$81,$81,$82,$83<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$82,$82,$82,$82,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $81,$06,$81,$82,$82,$81,$82,$81,$81,$82,$02,$82<br />
dc.b $04,$81,$0C,$06,$82,$0C,$06,$06,$81,$18,$82,$0C<br />
dc.b $81,$81,$18,$82,$81,$06,$81,$12,$82,$0C,$81,$81<br />
dc.b $18,$82,$81,$18,$82,$0C,$81,$81,$18,$82,$81,$06<br />
dc.b $81,$12,$82,$0C,$0C,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $82,$02,$04,$81,$0C,$06,$0C,$82,$02,$04,$81,$0C<br />
dc.b $06,$0C,$82,$06,$82,$82,$82,$EA,$C0,$81,$0C,$82<br />
dc.b $81,$82,$81,$82,$81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$0F<br />
dc.w z80_ptr(-)<br />
dc.b $81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$13<br />
dc.w z80_ptr(-)<br />
dc.b $82,$08,$0C,$04,$81,$0C,$82,$81,$82,$81,$0C,$82<br />
dc.b $81,$06,$80,$02,$82,$82,$82,$09,$82,$03<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$06,$80,$02,$82,$82,$82,$09,$82<br />
dc.b $03<br />
dc.b $F7,$01,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$82,$81,$06,$82,$12,$82,$0C,$81<br />
dc.b $F2<br />
MusCreditsEA6E: dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$83,$E3<br />
MusCreditsEA84: dc.b $81,$18,$82,$0C,$81,$18,$0C,$82,$81,$81,$18,$82<br />
dc.b $0C,$81,$12,$81,$82,$18,$81,$82,$0C,$81,$18,$0C<br />
dc.b $82,$81,$E3<br />
MusCreditsEA9F: dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$0C,$82,$04,$81<br />
dc.b $0C,$82,$81,$81,$08,$0C,$04,$82,$0C,$81,$08,$0C<br />
dc.b $82,$04,$81,$0C,$82,$82,$08,$04,$E3,$81,$06,$80<br />
dc.b $03,$81,$81,$06,$82,$81,$06,$80,$03,$81,$81,$06<br />
dc.b $82,$03,$82,$81,$06,$80,$03,$81,$81,$06,$82,$E3<br />
MusCred_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$01,$1F,$1F,$FF,$0F,$17,$27,$28,$80<br />
dc.b $08,$09,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$25,$0E,$30,$84<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$0B,$0D,$19,$0B,$80,$80<br />
dc.b $08,$0A,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$24,$13,$2D,$80<br />
dc.b $3D,$01,$51,$21,$01,$12,$14,$14,$0F,$0A,$05,$05<br />
dc.b $05,$00,$00,$00,$00,$2B,$2B,$2B,$1B,$19,$80,$80,$80<br />
dc.b $04,$57,$70,$02,$50,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$06,$00,$0A,$0A,$00,$00,$0F,$0F,$1A,$10,$80,$80<br />
dc.b $35,$01,$13,$01,$00,$1F,$18,$1D,$19,$00,$06,$09<br />
dc.b $0D,$00,$02,$00,$03,$00,$15,$06,$16,$1E,$83,$80,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1A,$16,$88,$88<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$14,$0F,$37,$80<br />
dc.b $3B,$0F,$01,$06,$02,$DF,$1F,$1F,$DF,$0C,$0A,$00<br />
dc.b $03,$0F,$00,$00,$01,$F3,$55,$05,$5C,$22,$22,$20,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1C,$14,$84,$80<br />
dc.b $3A,$69,$50,$70,$60,$1C,$1A,$18,$18,$10,$02,$0C<br />
dc.b $09,$08,$06,$06,$03,$F9,$06,$56,$06,$28,$14,$15,$00<br />
dc.b $3D,$00,$02,$01,$01,$4C,$50,$0F,$12,$0C,$00,$02<br />
dc.b $05,$01,$00,$00,$00,$28,$2A,$29,$19,$1A,$06,$00,$00<br />
dc.b $2C,$71,$31,$71,$31,$1F,$1F,$16,$16,$00,$00,$0F<br />
dc.b $0F,$00,$00,$0F,$0F,$00,$00,$FA,$FA,$15,$14,$00,$00<br />
dc.b $18,$37,$31,$32,$31,$9E,$1C,$DC,$9C,$0D,$04,$06<br />
dc.b $01,$08,$03,$0A,$05,$B6,$36,$B6,$28,$2C,$14,$22,$00<br />
dc.b $3D,$01,$02,$02,$02,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$24,$18,$18,$18,$1C,$82,$82,$82<br />
dc.b $32,$71,$33,$0D,$01,$5F,$5F,$99,$94,$05,$05,$05<br />
dc.b $07,$02,$02,$02,$02,$11,$11,$11,$72,$23,$26,$2D,$80<br />
dc.b $3A,$32,$52,$01,$31,$1F,$1F,$1F,$18,$01,$00,$1F<br />
dc.b $00,$00,$00,$0F,$00,$5A,$03,$0F,$1A,$3B,$4F,$30,$00<br />
dc.b $3C,$42,$32,$41,$41,$12,$12,$12,$12,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$06,$06,$08,$08,$24,$24,$08,$08<br />
dc.b $31,$34,$30,$35,$31,$DF,$9F,$DF,$9F,$0C,$0C,$07<br />
dc.b $09,$07,$07,$07,$08,$2F,$1F,$1F,$2F,$17,$14,$32,$80<br />
dc.b $3D,$01,$01,$01,$01,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$20,$1A,$1A,$1A,$19,$84,$84,$84<br />
dc.b $24,$70,$30,$74,$38,$12,$1F,$1F,$1F,$05,$05,$03<br />
dc.b $03,$05,$05,$03,$03,$36,$26,$2C,$2C,$0A,$06,$08,$08<br />
dc.b $3A,$01,$01,$01,$02,$8D,$07,$07,$52,$09,$00,$00<br />
dc.b $03,$01,$02,$02,$00,$5F,$0F,$0F,$2F,$18,$18,$22,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$03,$03,$08,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$17,$20,$28,$80<br />
dc.b $20,$7A,$00,$31,$00,$9F,$DC,$D8,$DF,$10,$04,$0A<br />
dc.b $04,$0F,$08,$08,$08,$5F,$BF,$5F,$BF,$14,$17,$2B,$80<br />
dc.b $3A,$61,$51,$08,$02,$5D,$5D,$5D,$50,$04,$1F,$0F<br />
dc.b $1F,$00,$00,$00,$00,$1F,$0F,$5F,$0F,$22,$22,$1E,$80<br />
dc.b $02,$01,$02,$55,$04,$92,$8E,$8D,$54,$0D,$00,$0C<br />
dc.b $03,$00,$00,$00,$00,$FF,$0F,$2F,$5F,$16,$1D,$2A,$80<br />
dc.b $02,$75,$73,$71,$31,$1F,$96,$58,$9F,$01,$03,$1B<br />
dc.b $08,$01,$01,$04,$05,$FF,$3F,$2F,$2F,$24,$30,$29,$80<br />
dc.b $20,$66,$60,$65,$60,$DF,$9F,$DF,$1F,$00,$09,$06<br />
dc.b $0C,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$1C,$16,$3A,$80<br />
dc.b $0D,$32,$06,$08,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$86,$80,$8D<br />
dc.b $38,$3A,$11,$0A,$02,$D4,$50,$14,$0E,$05,$02,$08<br />
dc.b $88,$00,$00,$00,$00,$99,$09,$09,$1A,$2D,$19,$2C,$86<br />
dc.b $0D,$32,$02,$04,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$8B,$86,$93<br />
dc.b $3A,$20,$60,$23,$01,$1E,$1F,$1F,$1F,$0A,$0B,$0A<br />
dc.b $0A,$05,$0A,$07,$08,$A4,$96,$85,$78,$21,$28,$25,$00<br />
dc.b $3A,$32,$32,$56,$42,$8D,$15,$4F,$52,$06,$07,$08<br />
dc.b $04,$02,$00,$00,$00,$18,$28,$18,$28,$19,$2A,$20,$00<br />
dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$19,$13,$37,$80<br />
dc.b $3D,$01,$02,$02,$02,$14,$8C,$0E,$0E,$08,$02,$05<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$1A,$80,$80,$80<br />
; end of Mus_Credits<br />
<br />
; ------------------------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ------------------------------------------------------------------------------------------<br />
; WARNING the sound driver treats certain sounds specially<br />
; going by the ID of the sound.<br />
; SndID_Ring, SndID_RingLeft, SndID_Gloop, SndID_SpindashRev<br />
; are referenced by the sound driver directly.<br />
; If needed you can change this in s2.sounddriver.asm<br />
<br />
<br />
; NOTE: the exact order of this list determines the priority of each sound, since it determines the sound's SndID.<br />
; a sound can get dropped if a higher-priority sound is already playing.<br />
; the rules for sound priority are currently unknown, but you can generally swap pointer lines around to resolve priority conflicts.<br />
; loc_FEE91: SoundPoint:<br />
SoundIndex:<br />
SndPtr_Jump: rom_ptr_z80 Sound20 ; jumping sound<br />
SndPtr_Checkpoint: rom_ptr_z80 Sound21 ; checkpoint ding-dong sound<br />
SndPtr_SpikeSwitch: rom_ptr_z80 Sound22 ; spike switch sound<br />
SndPtr_Hurt: rom_ptr_z80 Sound23 ; hurt sound<br />
SndPtr_Skidding: rom_ptr_z80 Sound24 ; skidding sound<br />
SndPtr_BlockPush: rom_ptr_z80 Sound25 ; block push sound<br />
SndPtr_HurtBySpikes: rom_ptr_z80 Sound26 ; spiky impalement sound<br />
SndPtr_Sparkle: rom_ptr_z80 Sound27 ; sparkling sound<br />
SndPtr_Beep: rom_ptr_z80 Sound28 ; short beep<br />
SndPtr_Bwoop: rom_ptr_z80 Sound29 ; bwoop<br />
SndPtr_Splash: rom_ptr_z80 Sound2A ; splash sound<br />
SndPtr_Swish: rom_ptr_z80 Sound2B ; swish<br />
SndPtr_BossHit: rom_ptr_z80 Sound2C ; boss hit<br />
SndPtr_InhalingBubble: rom_ptr_z80 Sound2D ; inhaling a bubble<br />
SndPtr_ArrowFiring:<br />
SndPtr_LavaBall: rom_ptr_z80 Sound2E ; arrow firing<br />
SndPtr_Shield: rom_ptr_z80 Sound2F ; shield sound<br />
SndPtr_LaserBeam: rom_ptr_z80 Sound30 ; laser beam<br />
SndPtr_Zap: rom_ptr_z80 Sound31 ; zap<br />
SndPtr_Drown: rom_ptr_z80 Sound32 ; drownage<br />
SndPtr_FireBurn: rom_ptr_z80 Sound33 ; fire + burn<br />
SndPtr_Bumper: rom_ptr_z80 Sound34 ; bumper bing<br />
SndPtr_Ring:<br />
SndPtr_RingRight: rom_ptr_z80 Sound35 ; ring sound<br />
SndPtr_SpikesMove: rom_ptr_z80 Sound36<br />
SndPtr_Rumbling: rom_ptr_z80 Sound37 ; rumbling<br />
rom_ptr_z80 Sound38<br />
SndPtr_Smash: rom_ptr_z80 Sound39 ; smash/breaking<br />
rom_ptr_z80 Sound3A ; nondescript ding<br />
SndPtr_DoorSlam: rom_ptr_z80 Sound3B ; door slamming shut<br />
SndPtr_SpindashRelease: rom_ptr_z80 Sound3C ; spindash unleashed<br />
SndPtr_Hammer: rom_ptr_z80 Sound3D ; slide-thunk<br />
SndPtr_Roll: rom_ptr_z80 Sound3E ; rolling sound<br />
SndPtr_ContinueJingle: rom_ptr_z80 Sound3F ; got continue<br />
SndPtr_CasinoBonus: rom_ptr_z80 Sound40 ; short bonus ding<br />
SndPtr_Explosion: rom_ptr_z80 Sound41 ; badnik bust<br />
SndPtr_WaterWarning: rom_ptr_z80 Sound42 ; warning ding-ding<br />
SndPtr_EnterGiantRing: rom_ptr_z80 Sound43 ; special stage ring flash (unused)<br />
SndPtr_BossExplosion: rom_ptr_z80 Sound44 ; thunk<br />
SndPtr_TallyEnd: rom_ptr_z80 Sound45 ; cha-ching<br />
SndPtr_RingSpill: rom_ptr_z80 Sound46 ; losing rings<br />
rom_ptr_z80 Sound47 ; chain pull chink-chink<br />
SndPtr_Flamethrower: rom_ptr_z80 Sound48 ; flamethrower<br />
SndPtr_Bonus: rom_ptr_z80 Sound49 ; bonus pwoieeew (unused)<br />
SndPtr_SpecStageEntry: rom_ptr_z80 Sound4A ; special stage entry<br />
SndPtr_SlowSmash: rom_ptr_z80 Sound4B ; slower smash/crumble<br />
SndPtr_Spring: rom_ptr_z80 Sound4C ; spring boing<br />
SndPtr_Blip: rom_ptr_z80 Sound4D ; selection blip<br />
SndPtr_RingLeft: rom_ptr_z80 Sound4E ; another ring sound (only plays in the left speaker?)<br />
SndPtr_Signpost: rom_ptr_z80 Sound4F ; signpost spin sound<br />
SndPtr_CNZBossZap: rom_ptr_z80 Sound50 ; mosquito zapper<br />
rom_ptr_z80 Sound51<br />
rom_ptr_z80 Sound52<br />
SndPtr_Signpost2P: rom_ptr_z80 Sound53<br />
SndPtr_OOZLidPop: rom_ptr_z80 Sound54 ; OOZ lid pop sound<br />
SndPtr_SlidingSpike: rom_ptr_z80 Sound55<br />
SndPtr_CNZElevator: rom_ptr_z80 Sound56<br />
SndPtr_PlatformKnock: rom_ptr_z80 Sound57<br />
SndPtr_BonusBumper: rom_ptr_z80 Sound58 ; CNZ bonusy bumper sound<br />
SndPtr_LargeBumper: rom_ptr_z80 Sound59 ; CNZ baaang bumper sound<br />
SndPtr_Gloop: rom_ptr_z80 Sound5A ; CNZ gloop / water droplet sound<br />
SndPtr_PreArrowFiring: rom_ptr_z80 Sound5B<br />
SndPtr_Fire: rom_ptr_z80 Sound5C<br />
SndPtr_ArrowStick: rom_ptr_z80 Sound5D ; chain clink<br />
SndPtr_Helicopter:<br />
SndPtr_WingFortress: rom_ptr_z80 Sound5E ; helicopter<br />
SndPtr_SuperTransform: rom_ptr_z80 Sound5F<br />
SndPtr_SpindashRev: rom_ptr_z80 Sound60 ; spindash charge<br />
SndPtr_Rumbling2: rom_ptr_z80 Sound61 ; rumbling<br />
SndPtr_CNZLaunch: rom_ptr_z80 Sound62<br />
SndPtr_Flipper: rom_ptr_z80 Sound63 ; CNZ blooing bumper<br />
SndPtr_HTZLiftClick: rom_ptr_z80 Sound64 ; HTZ track click sound<br />
SndPtr_Leaves: rom_ptr_z80 Sound65 ; kicking up leaves sound<br />
SndPtr_MegaMackDrop: rom_ptr_z80 Sound66 ; leaf splash?<br />
SndPtr_DrawbridgeMove: rom_ptr_z80 Sound67<br />
SndPtr_QuickDoorSlam: rom_ptr_z80 Sound68 ; door slamming quickly (seems unused)<br />
SndPtr_DrawbridgeDown: rom_ptr_z80 Sound69<br />
SndPtr_LaserBurst: rom_ptr_z80 Sound6A ; robotic laser burst<br />
SndPtr_Scatter:<br />
SndPtr_LaserFloor: rom_ptr_z80 Sound6B ; scatter<br />
SndPtr_Teleport: rom_ptr_z80 Sound6C<br />
SndPtr_Error: rom_ptr_z80 Sound6D ; error sound<br />
SndPtr_MechaSonicBuzz: rom_ptr_z80 Sound6E ; silver sonic buzz saw<br />
SndPtr_LargeLaser: rom_ptr_z80 Sound6F<br />
SndPtr_OilSlide: rom_ptr_z80 Sound70<br />
SndPtr__End:<br />
<br />
; There are many non-relative pointers in these sound effects,<br />
; so the sounds shouldn't simply be BINCLUDE'd.<br />
; They could be included as separate .asm files using "include" instead of "binclude",<br />
; but I wanted to minimize the number of included asm files.<br />
<br />
; some comments on what the various script commands do (after the header):<br />
; 0x00-0x7F sets the note duration (of the previous note and following notes)<br />
; 0x81-0xDF plays a note (the valid range may be smaller for PSG or DAC)<br />
; 0x80 plays silence<br />
; 0xE0-0xFF does special things. I won't list them here... search for "Coordination flags" sonic 2.<br />
<br />
; the FM voices (poorly named "ssamp" or "samples" below)<br />
; are 25 bytes each and go directly to YM2612 registers.<br />
; they can be hard to edit (there's an art to it)<br />
; but search for sonic "Voice editing" for more info if you want to try.<br />
<br />
; jumping sound<br />
Sound20: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$F400<br />
+ dc.b $F5,$00,$9E,$05,$F0,$02,$01,$F8,$65,$A3,$15,$F2<br />
<br />
; checkpoint ding-dong sound<br />
Sound21: dc.w z80_ptr(ssamp21),$0101<br />
dc.w $8005,z80_ptr(+),$0001<br />
ssamp21: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
+ dc.b $EF,$00,$BD,$06,$BA,$16,$F2<br />
<br />
; spike switch sound<br />
Sound22: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C0,$04,$CA,$04<br />
- dc.b $C0,$01,$EC<br />
dc.w $01F7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; hurt sound<br />
Sound23: dc.w z80_ptr(ssamp23),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B0,$07,$E7,$AD<br />
- dc.b $01,$E6<br />
dc.w $01F7,$002F,z80_ptr(-)<br />
dc.b $F2<br />
ssamp23: dc.b $30,$30,$30,$30,$30,$9E,$DC,$D8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$14,$14,$3C,$80<br />
<br />
; skidding sound<br />
Sound24: dc.w $0000,$0102 ; sound header... no sample and 2 script entries<br />
dc.w $80A0,z80_ptr(+),$F400 ; entry 1 header<br />
dc.w $80C0,z80_ptr(++),$F400 ; entry 2 header<br />
+ dc.b $F5,$00,$AF,$01,$80,$AF,$80,$03 ; script entry 1<br />
- dc.b $AF,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 1 end<br />
+ dc.b $F5,$00,$80,$01,$AD,$80,$AD,$80,$03 ; script entry 2<br />
- dc.b $AD,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 2 end<br />
<br />
; block push sound<br />
Sound25: dc.w z80_ptr(ssamp25),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$01,$8B,$0A,$80,$02,$F2<br />
ssamp25: dc.b $FA,$21,$10,$30,$32,$2F,$2F,$1F,$2F,$05,$09,$08<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
; spiky impalement sound<br />
Sound26: dc.w z80_ptr(ssamp26),$0101<br />
dc.w $8005,z80_ptr(+),$F200<br />
+ dc.b $EF,$00,$F0,$01,$01,$10,$FF,$CF,$05,$D7,$25,$F2<br />
ssamp26: dc.b $3B,$3C,$30,$39,$31,$DF,$1F,$1F,$DF,$04,$04,$05<br />
dc.b $01,$04,$04,$04,$02,$FF,$1F,$0F,$AF,$29,$0F,$20,$80<br />
<br />
; sparkling sound<br />
Sound27: dc.w z80_ptr(ssamp27),$0101<br />
dc.w $8004,z80_ptr(+),$0C1C<br />
+ dc.b $EF,$00,$C1,$05,$C4,$05,$C9,$2B,$F2<br />
ssamp27: dc.b $07,$73,$33,$33,$73,$0F,$19,$14,$1A,$0A,$0A,$0A<br />
dc.b $0A,$0A,$0A,$0A,$0A,$57,$57,$57,$57,$00,$00,$00,$00<br />
<br />
; short beep<br />
Sound28: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$E803<br />
+ dc.b $F5,$04,$CB,$04,$F2<br />
<br />
; bwoop<br />
Sound29: dc.w $0000,$0101<br />
dc.w $80A0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$E6,$35,$8E,$06,$F2<br />
<br />
; splash sound<br />
Sound2A: dc.w z80_ptr(ssamp2A),$0102<br />
dc.w $80C0,z80_ptr(+),$0000<br />
dc.w $8005,z80_ptr(++),$0003<br />
+ dc.b $F5,$00,$F3,$E7,$C2,$05,$C6,$05,$E7<br />
- dc.b $07,$EC,$01<br />
dc.w $E7F7,$000F,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$A6,$14,$F2<br />
ssamp2A: dc.b $00,$00,$02,$03,$00,$D9,$1F,$DF,$1F,$12,$14,$11<br />
dc.b $0F,$0A,$0A,$00,$0D,$FF,$FF,$FF,$FF,$22,$27,$07,$80<br />
<br />
; swish<br />
Sound2B: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$C6,$03,$80,$03,$C6,$01,$E7<br />
- dc.b $01,$EC,$01<br />
dc.w $E7F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; boss hit<br />
Sound2C: dc.w z80_ptr(smashsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$0C,$01<br />
- dc.b $81,$0A,$E6<br />
dc.w $10F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
smashsamp: dc.b $F9,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
<br />
; inhaling a bubble<br />
Sound2D: dc.w z80_ptr(ssamp2D),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$21,$6E,$A6,$07<br />
dc.b $80,$06,$F0,$01,$01,$44,$1E,$AD,$08,$F2<br />
ssamp2D: dc.b $35,$05,$08,$09,$07,$1E,$0D,$0D,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$1F,$2F,$1F,$15,$12,$12,$80<br />
<br />
; arrow firing<br />
Sound2E: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$C6,$01,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp2E: dc.b $FA,$02,$00,$03,$05,$12,$0F,$11,$13,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$2F,$0E,$1A,$80<br />
<br />
; shield sound<br />
Sound2F: dc.w z80_ptr(ssamp2F),$0101<br />
dc.w $8005,z80_ptr(+),$0C00<br />
+ dc.b $EF,$00,$80,$01,$A3,$05,$E7,$A4,$26,$F2<br />
ssamp2F: dc.b $30,$30,$30,$30,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$04,$14,$2C,$80<br />
<br />
; laser beam<br />
Sound30: dc.w z80_ptr(ssamp30),$0101 ; sound header... a voice and 1 script entry<br />
dc.w $8005,z80_ptr(+),$FB05 ; script entry header<br />
+ dc.b $EF,$00,$DF,$7F ; script start<br />
- dc.b $DF,$02,$E6 ; script continued<br />
dc.w $01F7,$001B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script end<br />
ssamp30: dc.b $83,$1F,$1F,$15,$1F,$1F,$1F,$1F,$1F,$00,$00,$00 ; voice<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$0B,$01,$16,$82 ; (fixed length)<br />
<br />
; zap<br />
Sound31: dc.w z80_ptr(ssamp31),$0101<br />
dc.w $8005,z80_ptr(+),$FB02<br />
+ dc.b $EF,$00,$B3,$05,$80,$01,$B3,$09,$F2<br />
ssamp31: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$05,$34,$10,$87<br />
<br />
; drownage<br />
Sound32: dc.w z80_ptr(ssamp32),$0102<br />
dc.w $8004,z80_ptr(++),$0C04<br />
dc.w $8005,z80_ptr(+),$0E02<br />
+ dc.b $EF,$00,$F0,$01,$01,$83,$0C<br />
- dc.b $8A,$05,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $80,$06,$EF,$00,$F0,$01,$01,$6F,$0E<br />
- dc.b $8D,$04,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp32: dc.b $35,$14,$04,$1A,$09,$0E,$11,$10,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$4F,$2F,$4F,$2F,$12,$12,$80<br />
<br />
; fire + burn<br />
Sound33: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$A7,$25,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; bumper bing<br />
Sound34: dc.w z80_ptr(ssamp34),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $8002,z80_ptr(+++),$0002<br />
+ dc.b $EF,$00,$F6<br />
dc.w z80_ptr(Sound34_3)<br />
+ dc.b $EF,$00,$E1,$07,$80,$01<br />
Sound34_3:<br />
dc.b $BA,$20,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
ssamp34: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$1F,$2B,$80,$80<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; ring sound<br />
Sound35: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$40,$C1,$05,$C4,$05,$C9,$1B,$F2<br />
<br />
<br />
Sound36: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C1,$07<br />
- dc.b $D0,$01,$EC<br />
dc.w $01F7,$000C,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; rumbling<br />
Sound37: dc.w z80_ptr(ssamp37),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$20,$08<br />
- dc.b $8B<br />
dc.w $0AF7,$0008,z80_ptr(-)<br />
- dc.b $8B,$10,$E6<br />
dc.w $03F7,$0009,z80_ptr(-)<br />
dc.b $F2<br />
ssamp37: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
<br />
Sound38: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$B4,$08<br />
- dc.b $B0,$02,$EC<br />
dc.w $01F7,$0003,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; smash/breaking<br />
Sound39: dc.w z80_ptr(smashsamp),$0104<br />
dc.w $8002,z80_ptr(+),$1000<br />
dc.w $8004,z80_ptr(+++),$0000<br />
dc.w $8005,z80_ptr(++),$1000<br />
dc.w $80C0,z80_ptr(s39s4),$0000<br />
+ dc.b $E0,$40,$80,$02,$F6<br />
dc.w z80_ptr(++)<br />
+ dc.b $E0,$80,$80,$01<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
s39s4: dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; nondescript ding<br />
Sound3A: dc.w z80_ptr(ssamp3A),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$AE,$08,$F2<br />
ssamp3A: dc.b $1C,$2E,$0F,$02,$02,$1F,$1F,$1F,$1F,$18,$14,$0F<br />
dc.b $0E,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$20,$1B,$80,$80<br />
<br />
; door slamming shut<br />
Sound3B: dc.w z80_ptr(ssamp3B),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$80,$A0,$06,$F2<br />
ssamp3B: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; spindash unleashed<br />
Sound3C: dc.w z80_ptr(ssamp3C),$0102<br />
dc.w $8005,z80_ptr(+),$9000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$F2<br />
+ dc.b $F5,$07,$80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$4F,$F2<br />
ssamp3C: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
<br />
; slide-thunk<br />
Sound3D: dc.w z80_ptr(ssamp3D),$0102<br />
dc.w $8005,z80_ptr(+),$100A<br />
dc.w $8004,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$60,$01,$A7,$08,$F2<br />
+ dc.b $80,$08,$EF,$01,$84,$22,$F2<br />
ssamp3D: dc.b $FA,$21,$19,$3A,$30,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
dc.b $FA,$31,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$1F,$2F,$2F,$0D,$01,$00,$80<br />
<br />
; rolling sound<br />
Sound3E: dc.w z80_ptr(ssamp3E),$0101<br />
dc.w $8004,z80_ptr(+),$0C05<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$09,$FF,$CA,$25,$F4<br />
- dc.b $E7,$E6,$01,$D0<br />
dc.w $02F7,$002A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3E: dc.b $3C,$00,$02,$44,$02,$1F,$1F,$1F,$15,$00,$00,$1F<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0D,$28,$00,$00<br />
<br />
; got continue<br />
Sound3F: dc.w z80_ptr(ssamp3F),$0103<br />
dc.w $8002,z80_ptr(+),$F406<br />
dc.w $8004,z80_ptr(++),$F406<br />
dc.w $8005,z80_ptr(+++),$F406<br />
+ dc.b $EF,$00,$C9,$07,$CD,$D0,$CB,$CE,$D2,$CD,$D0,$D4,$CE,$D2,$D5<br />
- dc.b $D0,$07,$D4,$D7,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$80,$07,$CD,$15,$CE,$D0,$D2<br />
- dc.b $D4,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$C9,$15,$CB,$CD,$CE<br />
- dc.b $D0,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3F: dc.b $14,$25,$36,$33,$11,$1F,$1F,$1F,$1F,$15,$1C,$18<br />
dc.b $13,$0B,$0D,$08,$09,$0F,$8F,$9F,$0F,$24,$0A,$05,$80<br />
<br />
; short bonus ding<br />
Sound40: dc.w z80_ptr(ssamp3F),$0102<br />
dc.w $8005,z80_ptr(++),$0008<br />
dc.w $8004,z80_ptr(+),$0008<br />
+ dc.b $E1,$03,$80,$02<br />
+ dc.b $EF,$00,$C4,$16,$F2<br />
<br />
; badnik bust<br />
Sound41: dc.w z80_ptr(ssamp41),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0002<br />
+ dc.b $F0,$03,$01,$72,$0B,$EF,$00,$BA,$16,$F2<br />
+ dc.b $F5,$01,$F3,$E7,$B0,$1B,$F2<br />
ssamp41: dc.b $3C,$0F,$03,$01,$01,$1F,$1F,$1F,$1F,$19,$19,$12<br />
dc.b $0E,$05,$00,$12,$0F,$0F,$FF,$7F,$FF,$00,$00,$80,$80<br />
<br />
; warning ding-ding<br />
Sound42: dc.w z80_ptr(ssamp3F),$0101<br />
dc.w $8005,z80_ptr(+),$0C08<br />
+ dc.b $EF,$00,$BA,$08,$BA,$25,$F2<br />
<br />
; special stage ring flash (unused)<br />
Sound43: dc.w z80_ptr(ssamp43),$0102<br />
dc.w $8004,z80_ptr(+),$0C00<br />
dc.w $8005,z80_ptr(++),$0013<br />
+ dc.b $EF,$01,$80,$01,$A2,$08,$EF,$00,$E7,$AD,$26,$F2<br />
+ dc.b $EF,$02,$F0,$06,$01,$03,$FF,$80,$0A<br />
- dc.b $C3<br />
dc.w $06F7,$0005,z80_ptr(-)<br />
dc.b $C3,$17,$F2<br />
ssamp43: dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$1C,$80<br />
dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$2C,$80<br />
dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$13,$13,$81,$88<br />
<br />
; thunk<br />
Sound44: dc.w z80_ptr(ssamp44),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$8A,$22,$F2<br />
ssamp44: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$4F,$2F,$2F,$0D,$04,$07,$80<br />
<br />
; cha-ching<br />
Sound45: dc.w z80_ptr(ssamp45),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$8A,$08,$80,$02,$8A,$08,$F2<br />
+ dc.b $EF,$01,$80,$12,$C6,$55,$F2<br />
+ dc.b $F5,$02,$F3,$E7,$80,$02,$C2,$05,$C4,$04,$C2,$05,$C4,$04,$F2<br />
ssamp45: dc.b $3B,$03,$02,$02,$06,$18,$1A,$1A,$96,$17,$0A,$0E<br />
dc.b $10,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$39,$28,$80<br />
ringsamp: dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$23,$80,$80<br />
<br />
; losing rings (scatter)<br />
Sound46: dc.w z80_ptr(ringsamp),$0102<br />
dc.w $8004,z80_ptr(+),$0005<br />
dc.w $8005,z80_ptr(++),$0008<br />
+ dc.b $EF,$00,$C6,$02,$05,$05,$05,$05,$05,$05,$3A,$F2<br />
+ dc.b $EF,$00,$80,$02,$C4,$02,$05,$15,$02,$05,$32,$F2<br />
<br />
; chain pull chink-chink<br />
Sound47: dc.w z80_ptr(ssamp47),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$BE,$05,$80,$04,$BE,$04,$80,$04,$F2<br />
ssamp47: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; flamethrower<br />
Sound48: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$25,$F2<br />
<br />
; bonus pwoieeew (unused)<br />
Sound49: dc.w z80_ptr(ssamp49),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$33,$18,$B9,$1A,$F2<br />
ssamp49: dc.b $3B,$0A,$05,$31,$02,$5F,$5F,$5F,$5F,$04,$16,$14<br />
dc.b $0C,$00,$00,$04,$00,$1F,$D8,$6F,$FF,$03,$00,$25,$80<br />
<br />
; special stage entry<br />
Sound4A: dc.w z80_ptr(ssamp4A),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$F0,$01,$01,$5B,$02,$CC,$65,$F2<br />
ssamp4A: dc.b $20,$36,$30,$35,$31,$41,$3B,$49,$4B,$09,$09,$06<br />
dc.b $08,$01,$02,$03,$A9,$0F,$0F,$0F,$0F,$29,$23,$27,$80<br />
<br />
; slower smash/crumble<br />
Sound4B: dc.w z80_ptr(smashsamp),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; spring boing<br />
Sound4C: dc.w z80_ptr(ssamp4C),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$5D,$0F,$B0,$0C,$F4<br />
- dc.b $E7,$E6,$02,$BD<br />
dc.w $02F7,$0019,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4C: dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$16,$13,$30,$80<br />
<br />
; selection blip<br />
Sound4D: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $BB,$02,$F2<br />
<br />
; another ring sound (only plays in the left speaker?)<br />
Sound4E: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8004,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$80,$C1,$04,$C4,$05,$C9,$1B,$F2<br />
<br />
; signpost spin sound<br />
Sound4F: dc.w z80_ptr(ssamp4F),$0102<br />
dc.w $8004,z80_ptr(+),$2703<br />
dc.w $8005,z80_ptr(++),$2700<br />
+ dc.b $80,$04<br />
+ dc.b $EF,$00<br />
- dc.b $B4,$05,$E6<br />
dc.w $02F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4F: dc.b $F4,$06,$0F,$04,$0E,$1F,$1F,$1F,$1F,$00,$0B,$00<br />
dc.b $0B,$00,$05,$00,$08,$0F,$FF,$0F,$FF,$0C,$03,$8B,$80<br />
<br />
; mosquito zapper<br />
Sound50: dc.w z80_ptr(ssamp50),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B3,$04,$80,$01<br />
- dc.b $B4,$04,$80<br />
dc.w $01F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
ssamp50: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$06,$34,$10,$87<br />
<br />
<br />
Sound51: dc.w z80_ptr(ssamp51),$0102<br />
dc.w $80C0,z80_ptr(+),$0001<br />
dc.w $8005,z80_ptr(++),$000B<br />
+ dc.b $F5,$02,$F3,$E4,$B0,$04,$85,$02,$F2<br />
+ dc.b $EF,$00,$E8,$04,$A5,$06,$F2<br />
ssamp51: dc.b $3C,$02,$01,$00,$01,$1F,$1F,$1F,$1F,$00,$19,$0E<br />
dc.b $10,$00,$00,$0C,$0F,$0F,$FF,$EF,$FF,$05,$00,$80,$80<br />
<br />
<br />
Sound52: dc.w z80_ptr(ssamp52),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $F0,$01,$01,$2A,$07,$EF,$00<br />
- dc.b $A5,$03<br />
dc.w $E7F7,$0013,z80_ptr(-)<br />
- dc.b $A5,$03,$E7,$E6<br />
dc.w $02F7,$0013,z80_ptr(-)<br />
dc.b $F2<br />
ssamp52: dc.b $28,$21,$21,$21,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$29,$20,$29,$80<br />
<br />
<br />
Sound53: dc.w z80_ptr(ssamp53),$0101<br />
dc.w $8005,z80_ptr(+),$F503<br />
+ dc.b $EF,$00,$F0,$01,$01,$46,$09,$A7,$14,$E7,$14,$E7,$E6,$04<br />
dc.b $14,$E7,$E6,$04,$14,$E7,$E6,$04,$0A,$E7,$E6,$04,$0A,$F2<br />
ssamp53: dc.b $07,$0A,$0C,$0C,$0C,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$2A,$0F,$0F,$80<br />
<br />
; OOZ lid pop sound<br />
Sound54: dc.w z80_ptr(ssamp54),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0006<br />
+ dc.b $EF,$00,$B6,$15,$F2<br />
+ dc.b $F3,$E7,$F5,$04,$C6,$03,$E7,$C5,$E7<br />
dc.b $C4,$E7,$C3,$E7,$C2,$E7,$C1,$E7,$C0,$F2<br />
ssamp54: dc.b $07,$03,$02,$03,$00,$FF,$6F,$6F,$3F,$12,$14,$11<br />
dc.b $0E,$1A,$0A,$03,$0D,$FF,$FF,$FF,$FF,$03,$07,$07,$80<br />
<br />
<br />
Sound55: dc.w z80_ptr(ssamp55),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$AA,$07,$B6,$15,$F2<br />
ssamp55: dc.b $42,$20,$0E,$0F,$0F,$1F,$1F,$1F,$1F,$1F,$1F,$1F<br />
dc.b $1F,$0F,$0E,$0F,$0E,$0F,$0F,$0F,$0F,$2E,$80,$20,$80<br />
<br />
<br />
Sound56: dc.w z80_ptr(ssamp56),$0101<br />
dc.w $8005,z80_ptr(+),$100E<br />
+ dc.b $EF,$00,$F0,$01,$01,$1E,$FF,$8F,$1C,$F4<br />
- dc.b $E7,$9A<br />
dc.w $05F7,$0009,z80_ptr(-)<br />
- dc.b $E7,$9A,$04,$E6,$02,$E7,$9A,$04,$E6<br />
dc.w $02F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp56: dc.b $0D,$06,$00,$00,$E5,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$27,$80,$80,$80<br />
<br />
<br />
Sound57: dc.w z80_ptr(ssamp57),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$CA,$15,$F2<br />
ssamp57: dc.b $04,$09,$70,$00,$30,$1C,$1F,$DF,$1F,$15,$12,$0B<br />
dc.b $0F,$0C,$0D,$00,$0D,$07,$2F,$FA,$FA,$00,$29,$00,$00<br />
<br />
; CNZ bonusy bumper sound<br />
Sound58: dc.w z80_ptr(ssamp58),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$B3,$06,$B3,$15,$F2<br />
ssamp58: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
<br />
; CNZ baaang bumper sound<br />
Sound59: dc.w z80_ptr(ssamp59),$0103<br />
dc.w $8004,z80_ptr(+),$0000<br />
dc.w $8002,z80_ptr(++),$0002<br />
dc.w $8005,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$E1,$0C,$B5,$14,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
+ dc.b $EF,$00,$B6,$14,$F2<br />
ssamp59: dc.b $32,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $0D,$00,$01,$01,$0C,$00,$23,$C3,$F6,$08,$07,$1C,$03<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; CNZ gloop / water droplet sound<br />
Sound5A: dc.w z80_ptr(ssamp5A),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$7F,$F1,$AA,$0A,$F2<br />
ssamp5A: dc.b $47,$03,$02,$02,$04,$5F,$5F,$5F,$5F,$0E,$1A,$11<br />
dc.b $0A,$09,$0A,$0A,$0A,$4F,$3F,$3F,$3F,$7F,$80,$80,$A3<br />
<br />
<br />
Sound5B: dc.w z80_ptr(ssamp5B),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$02,$A5,$01,$E7<br />
- dc.b $01,$E7,$E6<br />
dc.w $02F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5B: dc.b $38,$0F,$0F,$0F,$0F,$1F,$1F,$1F,$0E,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$1F,$00,$00,$00,$80<br />
<br />
<br />
Sound5C: dc.w z80_ptr(ssamp5C),$0102<br />
dc.w $8004,z80_ptr(+),$000E<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$85,$40<br />
- dc.b $E7,$04,$E6<br />
dc.w $04F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$40<br />
- dc.b $E7,$08,$E6<br />
dc.w $01F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5C: dc.b $FA,$12,$01,$01,$01,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$81,$8E,$14,$80<br />
<br />
; chain clink<br />
Sound5D: dc.w z80_ptr(ssamp5D),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$C0,$04,$F2<br />
ssamp5D: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; helicopter<br />
Sound5E: dc.w z80_ptr(ssamp5E),$0101<br />
dc.w $8002,z80_ptr(+),$1405<br />
+ dc.b $EF,$00<br />
- dc.b $95,$02,$95<br />
dc.w $01F7,$0013,z80_ptr(-)<br />
- dc.b $95,$02,$95,$01,$E6<br />
dc.w $01F7,$001B,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5E: dc.b $35,$30,$44,$40,$51,$1F,$1F,$1F,$1F,$10,$00,$13<br />
dc.b $15,$1F,$00,$1F,$1A,$7F,$0F,$7F,$5F,$02,$A8,$80,$80<br />
<br />
<br />
Sound5F: dc.w z80_ptr(ssamp5F),$0103<br />
dc.w $8005,z80_ptr(s5Fs1),$0000<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
s5Fs1 dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$E6,$0A,$80<br />
dc.b $06,$EF,$01,$F0,$01,$01,$11,$FF,$A2,$28<br />
- dc.b $E7,$03,$E6<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs2 dc.b $80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$1D<br />
- dc.b $E7,$07,$EC<br />
dc.w $01F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs3 dc.b $80,$16,$F5,$03<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $FFF7,$0005,z80_ptr(-)<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $01F7,$0007,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5F: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
dc.b $3A,$70,$30,$04,$01,$0F,$14,$19,$16,$08,$0A,$0B<br />
dc.b $05,$03,$03,$03,$05,$1F,$6F,$8F,$5F,$1F,$22,$1F,$80<br />
<br />
; spindash charge<br />
Sound60: dc.w z80_ptr(ssamp60),$0101<br />
dc.w $8005,z80_ptr(+),$FE00<br />
+ dc.b $EF,$00,$F0,$00,$01,$20,$F6,$C4,$16,$E7,$F4,$D0,$18,$E7<br />
- dc.b $04,$E7,$E6<br />
dc.w $03F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp60: dc.b $34,$00,$03,$0C,$09,$9F,$8C,$8F,$95,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$00,$1D,$00,$00<br />
<br />
; rumbling<br />
Sound61: dc.w z80_ptr(ssamp61),$0101<br />
dc.w $8004,z80_ptr(+),$0004<br />
+ dc.b $80,$01,$EF,$00,$F0,$00,$01,$70,$06,$82,$06,$85,$08,$83<br />
dc.b $01,$82,$05,$86,$06,$89,$03,$82,$08,$88,$04,$82,$06,$E6<br />
dc.b $02,$85,$08,$E6,$02,$83,$01,$E6,$02,$82,$05,$E6,$02,$86<br />
dc.b $06,$E6,$02,$89,$03,$E6,$02,$82,$08,$E6,$02,$88,$04,$E6,$02,$F2<br />
ssamp61: dc.b $32,$30,$30,$50,$30,$1F,$0E,$19,$0E,$07,$12,$15<br />
dc.b $09,$0A,$09,$1D,$06,$E8,$03,$0A,$17,$07,$00,$00,$00<br />
<br />
<br />
Sound62: dc.w z80_ptr(ssamp62),$0101<br />
dc.w $8005,z80_ptr(+),$FF00<br />
+ dc.b $EF,$00,$A6,$05,$F0,$01,$01,$E7,$40<br />
- dc.b $C4,$02,$E7,$E6<br />
dc.w $01F7,$0012,z80_ptr(-)<br />
dc.b $F2<br />
ssamp62: dc.b $34,$0C,$10,$73,$0C,$AF,$AC,$FF,$D5,$06,$00,$02<br />
dc.b $01,$02,$0A,$04,$08,$BF,$BF,$BF,$BF,$00,$08,$80,$80<br />
<br />
; CNZ blooing bumper<br />
Sound63: dc.w z80_ptr(ssamp63),$0101<br />
dc.w $8005,z80_ptr(+),$0907<br />
+ dc.b $EF,$00,$F0,$01,$01,$04,$56,$92,$03,$9A,$25,$F2<br />
ssamp63: dc.b $3D,$12,$10,$77,$30,$5F,$5F,$5F,$5F,$0F,$0A,$00<br />
dc.b $01,$0A,$0A,$0D,$0D,$4F,$0F,$0F,$0F,$13,$80,$80,$80<br />
<br />
; HTZ track click sound<br />
Sound64: dc.w z80_ptr(ssamp64),$0101<br />
dc.w $8005,z80_ptr(+),$1100<br />
+ dc.b $EF,$00,$C7,$02,$F2<br />
ssamp64: dc.b $24,$2A,$02,$05,$01,$1A,$1F,$10,$1F,$0F,$1F,$1F<br />
dc.b $1F,$0C,$0D,$11,$11,$0C,$09,$09,$0F,$0E,$04,$80,$80<br />
<br />
; kicking up leaves sound<br />
Sound65: dc.w z80_ptr(ssamp65),$0101<br />
dc.w $80C0,z80_ptr(+),$F800<br />
+ dc.b $F5,$03,$F3,$E7,$CE,$03,$F5,$06,$CE,$04,$EC<br />
dc.b $02,$CE,$02,$F5,$03,$EC,$FE,$CE,$08,$CE,$18,$F2<br />
ssamp65: ; uhm... apparently they forgot to null out the pointer to here.<br />
; luckily, sound 65 doesn't really use its sample<br />
<br />
; leaf splash?<br />
Sound66: dc.w z80_ptr(ssamp66),$0102<br />
dc.w $8005,z80_ptr(++),$EE08<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$F5,$09,$C6,$36,$F2<br />
+ dc.b $EF,$00,$80,$01,$92,$02,$02,$02,$30,$F2<br />
ssamp66: dc.b $32,$33,$17,$34,$13,$0F,$0D,$1B,$17,$00,$04,$02<br />
dc.b $0B,$08,$00,$08,$09,$6F,$5F,$4F,$6F,$05,$00,$00,$80<br />
<br />
<br />
Sound67: dc.w z80_ptr(ssamp67),$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$06,$F3,$E7,$90,$0A,$94,$0A,$98,$0A,$9C<br />
dc.b $0A,$A0,$0A,$A4,$08,$A8,$08,$AC,$08,$B0,$08,$F2<br />
ssamp67: ; another not-really-used sample (like Sound65)<br />
<br />
; door slamming quickly (seems unused)<br />
Sound68: dc.w z80_ptr(ssamp68),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$A5,$06,$F2<br />
ssamp68: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
<br />
Sound69: dc.w z80_ptr(ssamp69),$0102<br />
dc.w $8005,z80_ptr(+),$F400<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$9B,$03,$A8,$06,$9E,$08,$F2<br />
+ dc.b $F5,$04,$F3,$E7,$C6,$03,$C6,$06,$C6,$08,$F2<br />
ssamp69: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; robotic laser burst<br />
Sound6A: dc.w z80_ptr(ssamp6A),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$DF,$14,$E6,$18,$06,$F2<br />
ssamp6A: dc.b $3D,$09,$34,$34,$28,$1F,$16,$16,$16,$00,$00,$00<br />
dc.b $04,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$15,$02,$02,$00<br />
<br />
; scatter<br />
Sound6B: dc.w z80_ptr(ssamp6B),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$81,$04,$80,$0C,$F2<br />
ssamp6B: dc.b $3A,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $07,$00,$01,$01,$03,$00,$23,$C3,$46,$08,$07,$1C,$03<br />
<br />
<br />
Sound6C: dc.w z80_ptr(ssamp6C),$0104<br />
dc.w $8005,z80_ptr(++),$0010<br />
dc.w $8004,z80_ptr(+),$0010<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
+ dc.b $E1,$10<br />
+ dc.b $EF,$01,$F0,$01,$01,$EC,$56,$C0,$24,$F4,$EF,$00,$E6,$F0<br />
- dc.b $BB,$02,$E7,$E6,$02,$E9<br />
dc.w $01F7,$0020,z80_ptr(-)<br />
dc.b $F2<br />
ssamp6C: dc.b $00,$53,$30,$03,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$06,$23,$80<br />
dc.b $3C,$72,$32,$32,$72,$14,$14,$0F,$0F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$02,$02,$08,$08,$35,$14,$00,$00<br />
<br />
; error sound<br />
Sound6D: dc.w z80_ptr(ssamp6D),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$B0,$06,$80,$06,$B0,$18,$F2<br />
ssamp6D: dc.b $38,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$1F,$0C,$17,$00<br />
<br />
; silver sonic buzz saw<br />
Sound6E: dc.w z80_ptr(ssamp6E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$C6,$24,$E7<br />
- dc.b $C6,$04,$E7,$E6<br />
dc.w $04F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F3,$E7,$C7,$44,$F2<br />
ssamp6E: dc.b $33,$00,$10,$00,$31,$1F,$1D,$1E,$0E,$00,$0C,$1D<br />
dc.b $00,$00,$00,$01,$00,$0F,$0F,$0F,$0F,$08,$06,$07,$80<br />
<br />
<br />
Sound6F: dc.w z80_ptr(ssamp6A),$0103<br />
dc.w $8005,z80_ptr(++),$000B<br />
dc.w $8004,z80_ptr(+),$0012<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $E1,$02,$80,$02<br />
+ dc.b $EF,$00,$E6,$0C,$DF,$06,$E7,$E6,$F4,$06,$E7<br />
dc.b $E6,$F4,$12,$E7,$E6,$0C,$06,$E7,$E6,$0C,$06,$F2<br />
+ dc.b $F3,$E7,$C6,$04,$C0,$BA,$B4,$AE,$E6<br />
dc.b $01,$AE,$E6,$01,$AE,$E6,$01,$AE,$F2<br />
<br />
<br />
Sound70: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$C6,$18<br />
- dc.b $E7,$03,$E6<br />
dc.w $01F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to the other bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
; share these symbols externally (WARNING: don't rename, move or remove these labels!)<br />
shared movewZ80CompSize<br />
</asm><br />
<br />
We want to replace it with this optimized code:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
</asm><br />
<br />
===sound playback routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b 4(A0)<br />
bpl.s SkipPlaySound_Special<br />
; End of function PlaySoundLocal<br />
</asm></div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208740
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-24T23:39:51Z
<p>Kram1024: /* Upgrade Music Routine */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==<br />
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><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
move sr,-(sp)<br />
movem.l d0-a6,-(sp)<br />
move #$2700,sr<br />
lea (Z80_Bus_Request).l,a3<br />
lea (Z80_Reset).l,a2<br />
moveq #0,d2<br />
move.w #$100,d1<br />
move.w d1,(a3) ; get Z80 bus<br />
move.w d1,(a2) ; release Z80 reset (was held high by console on startup)<br />
- btst d2,(a3)<br />
bne.s - ; wait until the 68000 has the bus<br />
jsr DecompressSoundDriver(pc)<br />
btst #0,(VDP_control_port+1).l ; check video mode<br />
sne (Z80_RAM+zPalModeByte).l ; set if PAL<br />
move.w d2,(a2) ; hold Z80 reset<br />
move.w d2,(a3) ; release Z80 bus<br />
moveq #$E6,d0<br />
- dbf d0,- ; wait for 2,314 cycles<br />
move.w d1,(a2) ; release Z80 reset<br />
movem.l (sp)+,d0-a6<br />
move (sp)+,sr<br />
rts<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; slightly modified Saxman decompression of the sound driver<br />
; a4 == $A00000 (start of Z80 RAM)<br />
; a5 == current position in Z80 RAM?<br />
; a6 == current position in compressed sound driver?<br />
; d0 == data to decompress? (byte)<br />
; d4 == ???<br />
; d5 == ???<br />
; d6 == ???<br />
; d7 == bytes left to decompress<br />
; loc_EC04A:<br />
DecompressSoundDriver:<br />
lea Snd_Driver(pc),a6<br />
; WARNING: the build script needs editing if you rename this label<br />
movewZ80CompSize: move.w #Snd_Driver_End-Snd_Driver,d7 ; patched (by fixpointer.exe) after compression since the exact size can't be known beforehand<br />
moveq #0,d6<br />
lea (Z80_RAM).l,a5<br />
moveq #0,d5<br />
lea (Z80_RAM).l,a4<br />
<br />
loc_EC062:<br />
lsr.w #1,d6<br />
btst #8,d6<br />
bne.s +<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d6<br />
ori.w #$FF00,d6<br />
+<br />
btst #0,d6<br />
beq.s loc_EC086<br />
jsr sub_EC0DE(pc)<br />
move.b d0,(a5)+<br />
addq.w #1,d5<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC086:<br />
jsr sub_EC0DE(pc)<br />
moveq #0,d4<br />
move.b d0,d4<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d3<br />
andi.w #$F,d3<br />
addq.w #2,d3<br />
andi.w #$F0,d0<br />
lsl.w #4,d0<br />
add.w d0,d4<br />
addi.w #$12,d4<br />
andi.w #$FFF,d4<br />
move.w d5,d0<br />
andi.w #$F000,d0<br />
add.w d0,d4<br />
cmp.w d4,d5<br />
bhs.s loc_EC0CC<br />
subi.w #$1000,d4<br />
bcc.s loc_EC0CC<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b #0,(a5)+<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC0CC:<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b (a4,d4.w),(a5)+<br />
addq.w #1,d4<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; End of function DecompressSoundDriver<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_EC0DE:<br />
move.b (a6)+,d0<br />
subq.w #1,d7<br />
bne.s +<br />
addq.w #4,sp<br />
+<br />
rts<br />
; End of function sub_EC0DE<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; S2 sound driver (Sound driver compression (slightly modified Saxman))<br />
; ---------------------------------------------------------------------------<br />
; loc_EC0E8:<br />
Snd_Driver:<br />
save<br />
include "s2.sounddriver.asm" ; CPU Z80<br />
restore<br />
padding off<br />
!org (Snd_Driver+Size_of_Snd_driver_guess) ; don't worry; I know what I'm doing<br />
<br />
<br />
; loc_ED04C:<br />
Snd_Driver_End:<br />
<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ---------------------------------------------------------------------------<br />
; the DAC data has to line up with the end of the bank.<br />
<br />
; actually it only has to fit within one bank, but we'll line it up to the end anyway<br />
; because the padding gives the sound driver some room to grow<br />
cnop -Size_of_DAC_samples, $8000<br />
<br />
; ---------------------------------------------------------------------------<br />
; DAC samples<br />
; ---------------------------------------------------------------------------<br />
; loc_ED100:<br />
SndDAC_Start:<br />
<br />
SndDAC_Sample1:<br />
BINCLUDE "sound/DAC/Sample 1.bin"<br />
SndDAC_Sample1_End<br />
<br />
SndDAC_Sample2:<br />
BINCLUDE "sound/DAC/Sample 2.bin"<br />
SndDAC_Sample2_End<br />
<br />
SndDAC_Sample5:<br />
BINCLUDE "sound/DAC/Sample 5.bin"<br />
SndDAC_Sample5_End<br />
<br />
SndDAC_Sample6:<br />
BINCLUDE "sound/DAC/Sample 6.bin"<br />
SndDAC_Sample6_End<br />
<br />
SndDAC_Sample3:<br />
BINCLUDE "sound/DAC/Sample 3.bin"<br />
SndDAC_Sample3_End<br />
<br />
SndDAC_Sample4:<br />
BINCLUDE "sound/DAC/Sample 4.bin"<br />
SndDAC_Sample4_End<br />
<br />
SndDAC_Sample7:<br />
BINCLUDE "sound/DAC/Sample 7.bin"<br />
SndDAC_Sample7_End<br />
<br />
SndDAC_End<br />
<br />
if SndDAC_End - SndDAC_Start > $8000<br />
fatal "DAC samples must fit within $8000 bytes, but you have $\{SndDAC_End-SndDAC_Start } bytes of DAC samples."<br />
endif<br />
if SndDAC_End - SndDAC_Start > Size_of_DAC_samples<br />
fatal "Size_of_DAC_samples = $\{Size_of_DAC_samples}, but you have $\{SndDAC_End-SndDAC_Start} bytes of DAC samples."<br />
endif<br />
<br />
; ---------------------------------------------------------------------------<br />
; Music pointers<br />
; ---------------------------------------------------------------------------<br />
align $8000<br />
<br />
; loc_F0000:<br />
MusicPoint1:<br />
MusPtr_Continue: rom_ptr_z80 Mus_Continue-MusicPoint2<br />
<br />
<br />
Mus_Continue: BINCLUDE "sound/music/Continue.bin"<br />
<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ----------------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ----------------------------------------------------------------------------------<br />
; the PCM data has to line up with the end of the bank.<br />
cnop -Size_of_SEGA_sound, $8000<br />
<br />
; -------------------------------------------------------------------------------<br />
; Sega Intro Sound<br />
; 8-bit unsigned raw audio at 16Khz<br />
; -------------------------------------------------------------------------------<br />
; loc_F1E8C:<br />
Snd_Sega: BINCLUDE "sound/PCM/SEGA.bin"<br />
Snd_Sega_End:<br />
<br />
if Snd_Sega_End - Snd_Sega > $8000<br />
fatal "Sega sound must fit within $8000 bytes, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
if Snd_Sega_End - Snd_Sega > Size_of_SEGA_sound<br />
fatal "Size_of_SEGA_sound = $\{Size_of_SEGA_sound}, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
<br />
; ------------------------------------------------------------------------------<br />
; Music pointers<br />
; ------------------------------------------------------------------------------<br />
align $8000<br />
soundBankStart := *<br />
<br />
; loc_F8000:<br />
MusicPoint2:<br />
MusPtr_CNZ_2P: rom_ptr_z80 Mus_CNZ_2P<br />
MusPtr_EHZ: rom_ptr_z80 Mus_EHZ<br />
MusPtr_MTZ: rom_ptr_z80 Mus_MTZ<br />
MusPtr_CNZ: rom_ptr_z80 Mus_CNZ<br />
MusPtr_MCZ: rom_ptr_z80 Mus_MCZ<br />
MusPtr_MCZ_2P: rom_ptr_z80 Mus_MCZ_2P<br />
MusPtr_ARZ: rom_ptr_z80 Mus_ARZ<br />
MusPtr_DEZ: rom_ptr_z80 Mus_DEZ<br />
MusPtr_SpecStage: rom_ptr_z80 Mus_SpecStage<br />
MusPtr_Options: rom_ptr_z80 Mus_Options<br />
MusPtr_Ending: rom_ptr_z80 Mus_Ending<br />
MusPtr_EndBoss: rom_ptr_z80 Mus_EndBoss<br />
MusPtr_CPZ: rom_ptr_z80 Mus_CPZ<br />
MusPtr_Boss: rom_ptr_z80 Mus_Boss<br />
MusPtr_SCZ: rom_ptr_z80 Mus_SCZ<br />
MusPtr_OOZ: rom_ptr_z80 Mus_OOZ<br />
MusPtr_WFZ: rom_ptr_z80 Mus_WFZ<br />
MusPtr_EHZ_2P: rom_ptr_z80 Mus_EHZ_2P<br />
MusPtr_2PResult: rom_ptr_z80 Mus_2PResult<br />
MusPtr_SuperSonic: rom_ptr_z80 Mus_SuperSonic<br />
MusPtr_HTZ: rom_ptr_z80 Mus_HTZ<br />
MusPtr_ExtraLife: rom_ptr_z80 Mus_ExtraLife<br />
MusPtr_Title: rom_ptr_z80 Mus_Title<br />
MusPtr_EndLevel: rom_ptr_z80 Mus_EndLevel<br />
MusPtr_GameOver: rom_ptr_z80 Mus_GameOver<br />
MusPtr_Invincible: rom_ptr_z80 Mus_Invincible<br />
MusPtr_Emerald: rom_ptr_z80 Mus_Emerald<br />
MusPtr_HPZ: rom_ptr_z80 Mus_HPZ<br />
MusPtr_Drowning: rom_ptr_z80 Mus_Drowning<br />
MusPtr_Credits: rom_ptr_z80 Mus_Credits<br />
<br />
; loc_F803C:<br />
Mus_HPZ: BINCLUDE "sound/music/HPZ.bin"<br />
Mus_Drowning: BINCLUDE "sound/music/Drowning.bin"<br />
Mus_Invincible: BINCLUDE "sound/music/Invincible.bin"<br />
Mus_CNZ_2P: BINCLUDE "sound/music/CNZ_2p.bin"<br />
Mus_EHZ: BINCLUDE "sound/music/EHZ.bin"<br />
Mus_MTZ: BINCLUDE "sound/music/MTZ.bin"<br />
Mus_CNZ: BINCLUDE "sound/music/CNZ.bin"<br />
Mus_MCZ: BINCLUDE "sound/music/MCZ.bin"<br />
Mus_MCZ_2P: BINCLUDE "sound/music/MCZ_2p.bin"<br />
Mus_ARZ: BINCLUDE "sound/music/ARZ.bin"<br />
Mus_DEZ: BINCLUDE "sound/music/DEZ.bin"<br />
Mus_SpecStage: BINCLUDE "sound/music/SpecStg.bin"<br />
Mus_Options: BINCLUDE "sound/music/Options.bin"<br />
Mus_Ending: BINCLUDE "sound/music/Ending.bin"<br />
Mus_EndBoss: BINCLUDE "sound/music/End_Boss.bin"<br />
Mus_CPZ: BINCLUDE "sound/music/CPZ.bin"<br />
Mus_Boss: BINCLUDE "sound/music/Boss.bin"<br />
Mus_SCZ: BINCLUDE "sound/music/SCZ.bin"<br />
Mus_OOZ: BINCLUDE "sound/music/OOZ.bin"<br />
Mus_WFZ: BINCLUDE "sound/music/WFZ.bin"<br />
Mus_EHZ_2P: BINCLUDE "sound/music/EHZ_2p.bin"<br />
Mus_2PResult: BINCLUDE "sound/music/2player results screen.bin"<br />
Mus_SuperSonic: BINCLUDE "sound/music/Supersonic.bin"<br />
Mus_HTZ: BINCLUDE "sound/music/HTZ.bin"<br />
Mus_Title: BINCLUDE "sound/music/Title screen.bin"<br />
Mus_EndLevel: BINCLUDE "sound/music/End of level.bin"<br />
<br />
; The following act mostly like sound effects<br />
; despite being listed with the music.<br />
; This means they're uncompressed format with absolute pointers<br />
; instead of compressed with relative pointers.<br />
; Because they have absolute pointers,<br />
; they have to be assembled rather than BINCLUDE'd.<br />
; See below (right before Sound20) for other notes<br />
; about the sound format that apply to these too.<br />
<br />
;Mus_ExtraLife: BINCLUDE "sound/music/Extra life.bin"<br />
Mus_ExtraLife: dc.w z80_ptr(Mus_EL_Voices),$0603,$02CD<br />
dc.w z80_ptr(Mus_EL_DAC),$0000<br />
dc.w z80_ptr(Mus_EL_FM1),$E810<br />
dc.w z80_ptr(Mus_EL_FM2),$E810<br />
dc.w z80_ptr(Mus_EL_FM3),$E810<br />
dc.w z80_ptr(Mus_EL_FM4),$E810<br />
dc.w z80_ptr(Mus_EL_FM5),$E810<br />
dc.w z80_ptr(Mus_EL_PSG1),$D008,$0005<br />
dc.w z80_ptr(Mus_EL_PSG2),$DC08,$0005<br />
dc.w z80_ptr(Mus_EL_PSG3),$DC00,$0004<br />
Mus_EL_FM4: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM1: dc.b $E0,$80<br />
+ dc.b $EF,$00,$E8,$06,$D9,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$DB,$09,$D7,$D6,$06,$D9,$18,$F2<br />
Mus_EL_FM2: dc.b $EF,$01,$E8,$06,$E2,$01,$D6,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$D7,$09,$D4,$D2,$06,$D6,$18,$E2,$01,$F2<br />
Mus_EL_FM5: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM3: dc.b $E0,$80<br />
+ dc.b $EF,$02,$BA,$0C,$80,$06,$BA,$B8,$80,$03<br />
dc.b $B8,$06,$80,$03,$B8,$06,$BA,$18,$F2<br />
Mus_EL_PSG1: dc.b $E8,$06,$D6,$06,$03,$03,$06,$06,$E8,$00,$D7,$09<br />
dc.b $D4,$D2,$06,$D6,$18<br />
Mus_EL_PSG2:<br />
Mus_EL_PSG3: dc.b $F2<br />
Mus_EL_DAC: dc.b $88,$12,$06,$8B,$09,$09,$06,$88,$06,$8A,$88,$8A<br />
dc.b $88,$0C,$E4<br />
Mus_EL_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
<br />
<br />
;Mus_GameOver: BINCLUDE "sound/music/Game over.bin"<br />
Mus_GameOver: dc.w z80_ptr(MusGO_Voices),$0603,$02F2<br />
dc.w z80_ptr(MusGOver_DAC),$0000<br />
dc.w z80_ptr(MusGOver_FM1),$E80A<br />
dc.w z80_ptr(MusGOver_FM2),$F40F<br />
dc.w z80_ptr(MusGOver_FM3),$F40F<br />
dc.w z80_ptr(MusGOver_FM4),$F40D<br />
dc.w z80_ptr(MusGOver_FM5),$DC16<br />
dc.w z80_ptr(MusGOver_PSG),$D003,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC06,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC00,$0004<br />
MusGOver_FM1: dc.b $EF,$00<br />
dc.b $F0,$20,$01,$04,$05<br />
dc.b $80,$0C,$CA,$12,$80,$06,$CA,$80,$CB,$12,$C8,$1E<br />
dc.b $CA,$06,$80,$CA,$80,$CA,$80,$C6,$80,$C4,$12,$C8<br />
dc.b $0C,$80,$12,$C9,$04,$80,$C9,$C8,$06,$80,$C7,$80<br />
dc.b $C6,$80<br />
dc.b $F0,$28,$01,$18,$05<br />
dc.b $C5,$60,$F2<br />
MusGOver_FM2: dc.b $EF,$01,$80,$01,$D9,$06,$80,$D9,$80,$D6,$80,$D6<br />
dc.b $80,$D7,$15,$D7,$1B,$D9,$06,$80,$D9,$80,$D6,$80<br />
dc.b $D6,$80,$DC,$15,$DC,$1B,$F2<br />
MusGOver_FM3: dc.b $EF,$01,$D6,$0C,$D6,$D2,$D2,$D4,$15,$D4,$1B,$D6<br />
dc.b $0C,$D6,$D2,$D2,$D7,$15,$D7,$1B,$F2<br />
MusGOver_FM4: dc.b $EF,$02,$E2,$01,$AE,$06,$80,$AE,$80,$A9,$80,$A9<br />
dc.b $80,$AC,$15,$AB,$0C,$AC,$03,$AB,$0C,$AE,$06,$80<br />
dc.b $AE,$80,$A9,$80,$A9,$80,$B3,$15,$B2,$0C,$B3,$03<br />
dc.b $B2,$0C,$AE,$04,$80,$AE,$AD,$06,$80,$AC,$80,$AB<br />
dc.b $80,$AB,$60,$E2,$01,$F2<br />
MusGOver_FM5: dc.b $EF,$03,$80,$30,$D7,$12,$80,$03,$D7,$1B,$80,$30<br />
dc.b $DC,$12,$80,$03,$DC,$1B<br />
MusGOver_PSG: dc.b $F2<br />
MusGOver_DAC: dc.b $80,$18,$81<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(MusGOver_DAC)<br />
dc.b $F2<br />
MusGO_Voices: dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $3C,$33,$73,$30,$70,$94,$96,$9F,$9F,$12,$14,$00<br />
dc.b $0F,$04,$04,$0A,$0D,$2F,$4F,$0F,$2F,$33,$1A,$80,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$1C,$27,$28,$80<br />
dc.b $1F,$66,$53,$31,$22,$1C,$1F,$98,$1F,$12,$0F,$0F<br />
dc.b $0F,$00,$00,$00,$00,$FF,$0F,$0F,$0F,$8C,$8A,$8D,$8B<br />
<br />
;Mus_Emerald: BINCLUDE "sound/music/Got an emerald.bin"<br />
Mus_Emerald: dc.w z80_ptr(MusEmrldVoices),$0703,$01D5<br />
dc.w z80_ptr(MusEmeraldDAC),$0000<br />
dc.w z80_ptr(MusEmeraldFM1),$F408<br />
dc.w z80_ptr(MusEmeraldFM2),$F408<br />
dc.w z80_ptr(MusEmeraldFM3),$F407<br />
dc.w z80_ptr(MusEmeraldFM4),$F416<br />
dc.w z80_ptr(MusEmeraldFM5),$F416<br />
dc.w z80_ptr(MusEmeraldFM6),$F416<br />
dc.w z80_ptr(MusEmeraldPSG1),$F402,$0004<br />
dc.w z80_ptr(MusEmeraldPSG2),$F402,$0005<br />
dc.w z80_ptr(MusEmeraldPSG3),$F400,$0004<br />
MusEmeraldFM3: dc.b $E1,$02<br />
MusEmeraldFM1: dc.b $EF,$00,$C1,$06,$C4,$C9,$CD,$0C,$C9,$D0,$2A,$F2<br />
MusEmeraldFM2: dc.b $EF,$00,$BD,$06,$C1,$C4,$C9,$0C,$C6,$CB,$2A,$F2<br />
MusEmeraldFM4: dc.b $EF,$01,$C1,$0C,$C1,$06,$C4,$06,$80,$C4,$80,$C9<br />
dc.b $2A,$F2<br />
MusEmeraldFM5: dc.b $EF,$01,$C9,$0C,$C9,$06,$CD,$06,$80,$CD,$80,$D0<br />
dc.b $2A,$F2<br />
MusEmeraldFM6: dc.b $EF,$01,$C4,$0C,$C4,$06,$C9,$06,$80,$C9,$80,$CD<br />
dc.b $2A,$F2<br />
MusEmeraldPSG2: dc.b $80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusEmeraldPSG1: dc.b $E2,$01,$80,$02,$80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
MusEmeraldPSG3:<br />
MusEmeraldDAC: dc.b $E2,$01,$F2<br />
MusEmrldVoices: dc.b $04,$35,$54,$72,$46,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$1D,$14,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$07,$07,$1A,$16,$80,$80<br />
<br />
;Mus_Credits: BINCLUDE "sound/music/Credits.bin"<br />
Mus_Credits: dc.w z80_ptr(MusCred_Voices),$0603,$01F0<br />
dc.w z80_ptr(MusCred_DAC),$0000<br />
dc.w z80_ptr(MusCred_FM1),$000E<br />
dc.w z80_ptr(MusCred_FM2),$180A<br />
dc.w z80_ptr(MusCred_FM3),$0014<br />
dc.w z80_ptr(MusCred_FM4),$0016<br />
dc.w z80_ptr(MusCred_FM5),$0C16<br />
dc.w z80_ptr(MusCred_PSG1),$E806,$000B<br />
dc.w z80_ptr(MusCred_PSG2),$DC07,$000B<br />
dc.w z80_ptr(MusCred_PSG3),$0002,$0003<br />
MusCred_FM1: dc.b $E9,$F4,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$0C,$E6,$02<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$03,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $AE,$06,$A2,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $E6,$FD<br />
- dc.b $EF,$00,$B7,$06,$BA,$F8<br />
dc.w z80_ptr(MusCreditsDA13)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$06,$80,$80,$30,$80,$EF,$0B,$E9,$18,$E6,$02<br />
- dc.b $94,$0C,$8F,$92,$8F,$06,$94,$05,$94,$07,$06,$8F<br />
dc.b $0C,$92,$8F<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$30,$80,$EF,$0E,$E6,$FF,$E9,$E8,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$91,$94,$06,$80,$18,$96,$12,$9A,$06,$80<br />
dc.b $80,$12,$8F,$93,$08,$80,$16,$96,$06,$91,$92,$94<br />
dc.b $96,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$9D,$9A,$08,$80,$16,$96,$12,$9D,$08,$80<br />
dc.b $04,$EF,$12<br />
dc.b $F0,$18,$01,$0A,$04<br />
dc.b $80,$30,$80,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$24,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$EF,$01,$E9,$F4,$E6,$FA,$F4<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $80,$03,$80,$60,$E6,$04,$E1,$01,$EF,$1B,$E6,$06<br />
dc.b $C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80,$EF<br />
dc.b $1C,$E6,$FA,$E8,$00,$BC,$0C,$12,$06,$EF,$1B,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$80,$E8,$06,$C4,$06,$06,$C6,$C4,$E8<br />
dc.b $00,$C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80<br />
dc.b $E8,$00,$EF,$1C,$E6,$FA,$C1,$C4,$C1,$EF,$1A,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$06,$80,$80,$24,$80,$30,$80,$EF,$1F<br />
dc.b $E9,$18,$E6,$F7,$E1,$00,$80,$06,$AC,$AE,$80,$B1<br />
dc.b $80,$B3,$80,$B4,$80,$B3,$80,$B1,$B3,$80,$B1,$E9<br />
dc.b $F4,$EF,$00,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC<br />
dc.b $06,$AE,$B1,$80,$B4,$B1,$80,$B1,$E9,$0C,$EF,$1F<br />
dc.b $80,$06,$B8,$12,$B4,$06,$80,$B3,$80,$B4,$80,$B3<br />
dc.b $80,$B1,$AE,$80,$B1,$E9,$F4,$EF,$00,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$30,$80,$EF,$21,$E9,$0C,$80,$30,$80<br />
dc.b $08,$A0,$04,$9E,$0C,$9D,$9B,$99,$08,$04,$91,$0C<br />
dc.b $92,$93,$94,$98,$99,$9B,$9D,$98,$95,$93,$91,$98<br />
dc.b $9D,$91,$96,$98,$99,$98,$96,$99,$9D,$96,$95,$97<br />
dc.b $99,$97,$95,$96,$97,$98,$99,$98,$99,$9B,$9D,$08<br />
dc.b $04,$98,$0C,$91,$95,$96,$98,$99,$9D,$9E,$08,$96<br />
dc.b $10,$97,$0C,$98,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$08,$99,$04,$EF,$23,$E9,$E8,$E6,$07,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $80,$60,$E6,$FB,$80,$0C,$CD,$06,$80,$D4,$CD,$06<br />
dc.b $80,$0C,$CD,$06,$80,$D4,$CD,$06,$80,$18,$E6,$05<br />
dc.b $80,$0C,$AE,$80,$AE,$80,$24,$E1,$02,$E6,$08,$A2<br />
dc.b $6C,$F2<br />
MusCreditsD9D1: dc.b $A5,$0C,$B1,$06,$80,$B1,$0C,$AC,$B3,$12,$B1,$0C<br />
dc.b $AC,$06,$AE,$B1,$A7,$0C,$B3,$06,$80,$B3,$0C,$AE<br />
dc.b $B5,$12,$B3,$06,$80,$AE,$B0,$B3,$A3,$0C,$AF,$06<br />
dc.b $80,$AF,$0C,$AA,$B1,$12,$AF,$0C,$AA,$06,$AC,$AF<br />
dc.b $A2,$0C,$AE,$06,$A2,$A4,$0C,$B0,$06,$A4,$A5,$0C<br />
dc.b $B1,$06,$A5,$A2,$0C,$E3<br />
MusCreditsDA13: dc.b $BE,$0C,$BC,$06,$BA,$BC,$BA,$04,$E7,$08,$BA,$04<br />
dc.b $80,$0E,$EF,$07,$B7,$06,$B2,$B5,$B7,$EF,$00,$B7<br />
dc.b $BA,$BE,$0C,$BC,$06,$BA,$BC,$BA,$0C,$BC,$04,$80<br />
dc.b $08,$BA,$04,$80,$08,$BC,$04,$80,$08,$BE,$12,$BA<br />
dc.b $06,$B7,$80,$B7,$80,$24,$EF,$07,$B7,$06,$B2,$B5<br />
dc.b $B7,$80,$0C,$80,$30,$BE,$06,$BE,$BA,$04,$80,$08<br />
dc.b $BC,$06,$BE,$E3<br />
MusCreditsDA5F: dc.b $C3,$01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$02,$C3<br />
dc.b $01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01<br />
dc.b $E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$FC,$C3,$01,$E7<br />
dc.b $C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01,$E7,$C4<br />
dc.b $E7,$C5,$E7,$C6,$2D,$E7,$30,$E7,$30,$E3<br />
MusCreditsDA99: dc.b $A7,$0C,$B3,$06,$80,$B1,$80,$B3,$0C,$A7,$03,$80<br />
dc.b $06,$A7,$03,$B3,$0C,$B1,$B3,$09,$AE,$03,$AC,$06<br />
dc.b $80,$AC,$0C,$AE,$06,$80,$AE,$0C,$AF,$06,$80,$27<br />
dc.b $E3<br />
MusCreditsDABE: dc.b $80,$0C,$CA,$15,$80,$03,$CA,$06,$80,$CB,$0F,$80<br />
dc.b $03,$C8,$18,$80,$06,$CA,$80,$CA,$80,$CA,$80,$C6<br />
dc.b $80,$C4,$0F,$80,$03,$C8,$18,$80,$06<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E3<br />
MusCreditsDAE5: dc.b $80,$12,$94,$97,$06,$80,$18,$99,$12,$94,$06,$80<br />
dc.b $80,$12,$92,$96,$06,$80,$18,$97,$12,$92,$06,$80<br />
dc.b $E3<br />
MusCreditsDAFE: dc.b $80,$99,$80,$99,$80,$9E,$80,$E3<br />
MusCreditsDB06: dc.b $EF,$07,$80,$54,$C7,$04,$C8,$C9,$CA,$24,$CD,$D2<br />
dc.b $18,$D0,$24,$CF,$CB,$18,$CB,$0C,$CA,$80,$CD,$60<br />
dc.b $E7,$3C,$CA,$24,$CD,$D2,$18,$D4,$24,$D0,$D4,$18<br />
dc.b $D4,$24,$D6,$60,$E7,$3C,$E3<br />
MusCred_FM2: dc.b $80,$60,$EF,$01,$E8,$06,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $85,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8A,$87,$88,$89,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $88<br />
dc.b $F7,$00,$0B<br />
dc.w z80_ptr(-)<br />
- dc.b $8A<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$E6,$FC,$8A,$8B,$8C,$E6,$04,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$8D,$8A,$8B,$8C,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8D,$06,$99,$E8,$00,$8A,$0C,$8B,$8C,$E9,$E8,$E6<br />
dc.b $0C,$EF,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E6,$F9,$EF,$08<br />
MusCreditsDB93: dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $06,$9C,$12,$9D,$0C,$9E,$F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9D,$04,$80,$08,$9D,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $9C,$04,$80,$08,$9C,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(MusCreditsDB93)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$13,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$60,$EF,$0F,$E6,$F3<br />
dc.b $F0,$04,$02,$03,$02<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$30,$E7,$18,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$EF,$13,$E6,$F5,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$0C,$A9,$08,$A1,$10,$F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$08,$A9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E1,$02,$E9,$F4,$E6,$0A,$F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$EF,$1B,$E1,$00<br />
dc.b $E8,$06,$80,$3C,$B8,$06,$06,$BA,$BD,$BD,$BA,$EF<br />
dc.b $1D,$E6,$FA,$E8,$00,$F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $EF,$1C,$BD,$EF,$1D,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $80,$30,$80,$EF,$01,$E9,$18,$E6,$F9<br />
- dc.b $99,$0C,$A5,$06,$80,$96,$0C,$A2,$06,$80,$97,$0C<br />
dc.b $A3,$06,$80,$98,$0C,$A8,$06,$A7,$99,$06,$99,$12<br />
dc.b $96,$0C,$A2,$06,$80,$97,$0C,$A3,$06,$80,$98,$0C<br />
dc.b $A4,$06,$80<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$22,$E9,$E8,$E6,$03<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$AC,$04,$AE,$08,$B1,$04,$B5,$30,$80,$0C<br />
dc.b $B5,$08,$80,$04,$B6,$08,$B5,$10,$B9,$08,$04,$80<br />
dc.b $08,$B5,$34,$80,$0C,$B5,$BA,$08,$04,$80,$08,$B5<br />
dc.b $04,$B1,$24,$80,$0C,$B1,$08,$80,$04,$B3,$08,$B1<br />
dc.b $04,$B4,$0C,$B3,$08,$B1,$4C,$80,$0C,$B5,$08,$80<br />
dc.b $04,$B6,$08,$80,$04,$B5,$08,$80,$04,$B9,$08,$04<br />
dc.b $80,$08,$B5,$1C,$80,$0C,$BA,$18,$BC,$08,$BA,$04<br />
dc.b $BD,$18,$80,$0C,$BA,$04,$80,$08,$B8,$18,$B5,$B1<br />
dc.b $B3,$0C,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$0C,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$14,$B1,$04,$E6,$FF,$EF,$24,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $AC,$12,$AB,$0C,$AC,$06,$AB,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $B3,$12,$B2,$0C,$B3,$06,$B2,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $AC,$06,$80,$A9,$80,$AA,$80,$AB,$80,$AC,$AC,$A9<br />
dc.b $80,$AA,$80,$AC,$80,$A9,$80,$A9,$80,$AD,$80,$AD<br />
dc.b $80,$B0,$80,$B0,$80,$B3,$80,$B3,$80,$80,$0C,$A2<br />
dc.b $12,$80,$06,$A2,$12,$AD,$AE,$06,$80,$E6,$FD,$A2<br />
dc.b $6C,$F2<br />
MusCreditsDD59: dc.b $80,$0C,$C4,$06,$80,$C6,$80,$C4,$80,$C9,$80,$C9<br />
dc.b $80,$CB,$CD,$80,$0C,$80,$CB,$18,$C6,$06,$80,$C9<br />
dc.b $C9,$80,$CB,$0C,$80,$12,$80,$1E,$C7,$06,$C9,$C7<br />
dc.b $CB,$80,$C9,$80,$C7,$C9,$80,$C6,$E7,$C6,$30,$E7<br />
dc.b $18,$80,$18,$E3<br />
MusCreditsDD8D: dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
dc.b $06,$AB,$9F,$0C,$E3<br />
MusCreditsDD9D: dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$B6,$80,$18<br />
dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$30,$E7,$E3<br />
MusCreditsDDB5: dc.b $BF,$06,$BD,$BF,$12,$C2,$BF,$0C,$C1,$80,$06,$12<br />
dc.b $C4,$0C,$C2,$06,$80,$C9,$C6,$3C,$80,$06,$0C,$C7<br />
dc.b $12,$C6,$C4,$06,$C2,$C1,$18,$E3<br />
MusCreditsDDD5: dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$E3<br />
MusCreditsDDEA: dc.b $A2,$0C,$AE,$AC,$08,$AE,$04,$AC,$08,$A9,$04,$A7<br />
dc.b $08,$04,$E3<br />
MusCreditsDDF9: dc.b $80,$0C,$B1,$AE,$06,$06,$AC,$0C,$80,$B0,$AE,$06<br />
dc.b $06,$AC,$0C,$E3<br />
MusCreditsDE09: dc.b $AE,$AC,$06,$06,$AA,$0C,$80,$AC,$0C,$06,$06,$AE<br />
dc.b $AC,$E3<br />
MusCreditsDE17: dc.b $BA,$04,$80,$08,$B8,$18,$B5,$B1,$E3<br />
MusCreditsDE20: dc.b $AE,$06,$80,$AE,$80,$A9,$80,$A9,$80,$E3<br />
MusCreditsDE2A: dc.b $8A,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $E3<br />
MusCred_FM3: dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$18,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $B8,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $BD,$3C,$E9,$E8,$E6,$02,$E1,$03,$EF,$04,$E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$09,$E9,$0C,$E6,$FD,$E0,$40<br />
dc.b $F0,$06,$01,$05,$04<br />
dc.b $E1,$00<br />
- dc.b $9F,$0C,$AB,$06,$80,$A9,$80,$AB,$9F,$80,$9F,$AB<br />
dc.b $80,$A9,$80,$AB,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $9D,$0C,$A9,$06,$80,$A8,$80,$A9,$9C,$80,$9C,$A8<br />
dc.b $80,$A6,$80,$A8,$0C<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0D,$E6,$FB,$E0,$C0,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0F,$E0,$80,$E6,$0B,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$48,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$0C<br />
dc.b $F0,$18,$01,$03,$04<br />
dc.b $E6,$F3,$E0,$C0,$EF,$14,$A2,$14,$A4,$04,$A5,$04<br />
dc.b $80,$08,$A9,$04,$80,$08,$A8,$04,$80,$08,$A9,$04<br />
dc.b $80,$08,$AC,$08,$A9,$10<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$18,$E9,$F4,$E6,$08,$F4,$E0,$40,$80,$60,$80<br />
dc.b $30,$C6,$06,$80,$C2,$0C,$C4,$09,$C2,$03,$BF,$0C<br />
dc.b $80,$60,$80,$3C,$80,$60,$EF,$1B,$E6,$FB,$E0,$C0<br />
dc.b $E8,$06,$C4,$06,$06,$C6,$C9,$C9,$C6,$E8,$00,$CD<br />
dc.b $0C,$E8,$06,$C9,$06,$C6,$C9,$0C,$80,$80,$12,$EF<br />
dc.b $1C,$E8,$00,$BD,$BA,$0C,$E8,$06,$EF,$1B,$CE,$06<br />
dc.b $CE,$80,$CE,$80,$CE,$E8,$00,$CF,$0C,$D0,$80,$E8<br />
dc.b $06,$D0,$06,$06,$D2,$D0,$E8,$00,$CD,$0C,$E8,$06<br />
dc.b $C9,$06,$C6,$C9,$0C,$E8,$00,$EF,$1C,$80,$1E,$C2<br />
dc.b $0C,$C2,$BD,$06,$80,$60,$80,$60,$EF,$00,$E9,$18<br />
dc.b $80,$60,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC,$06<br />
dc.b $AE,$B1,$80,$B4,$B1,$80,$B1,$80,$60,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$60,$EF,$22,$E9,$DC,$E6,$FF,$E0,$80<br />
dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $CD,$30,$CB,$18,$CD,$0C,$CB,$C9,$30,$CE,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$FC,$80,$C4,$80,$C4,$80,$C6,$18,$08,$C4,$04<br />
dc.b $E9,$0C,$E6,$FF,$E0,$C0,$EF,$00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $CB,$12,$CB,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $D0,$12,$D0,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$CB,$12,$80,$06,$CB,$80,$CA,$12,$CB,$CA<br />
dc.b $0C,$C5,$18,$C8,$CB,$D1,$80,$0C,$CD,$80,$CD,$12<br />
dc.b $CC,$CD,$06,$80,$E6,$F8,$EF,$01,$E1,$03,$A2,$6C<br />
dc.b $F2<br />
MusCreditsDFF2: dc.b $80,$60,$BC,$06,$BD,$BC,$B8,$BA,$B6,$0C,$B8,$B3<br />
dc.b $B3,$06,$B6,$0C,$B8,$E3<br />
MusCreditsE004: dc.b $80,$0C,$CD,$04,$80,$10,$CD,$04,$80,$0C,$CD,$0C<br />
dc.b $CE,$08,$CD,$04,$80,$18,$80,$0C,$CB,$04,$80,$10<br />
dc.b $CB,$04,$80,$0C,$CB,$0C,$CD,$08,$CB,$04,$80,$18<br />
- dc.b $80,$0C,$C9,$04,$80,$10,$C9,$04,$80,$0C,$C9,$0C<br />
dc.b $CB,$08,$C9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E3<br />
MusCreditsE040: dc.b $80,$18,$B8,$0B,$80,$0D,$BA,$0C,$0B,$80,$19,$BD<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE051: dc.b $80,$0C,$C4,$80,$C4,$80,$C6,$80,$C6,$E3<br />
MusCreditsE05B: dc.b $CD,$06,$80,$CD,$80,$CA,$80,$CA,$80,$E3<br />
MusCreditsE065: dc.b $EF,$05,$E9,$F4,$C6,$60,$CB,$CD,$E7,$CD,$C6,$60<br />
dc.b $D0,$D0,$24,$D2,$60,$E7,$3C,$E3<br />
MusCred_FM4: dc.b $80,$60,$E9,$FB,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$1D,$E6,$02,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B5,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B8,$3C,$E6,$06,$EF,$05<br />
dc.b $F0,$02,$01,$FE,$04<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E9,$F4,$E6,$F7<br />
dc.b $F0,$0C,$01,$FB,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$25,$C3,$06,$C3,$80,$0C,$C3,$06,$C3,$05,$80<br />
dc.b $0D,$C3,$06,$C5,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$05,$F4,$E1,$02,$E0<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$0C,$80,$60,$EF,$10,$E6,$F7,$E1,$00,$E0<br />
dc.b $40,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $B3,$B7,$06,$AE,$0C,$B1,$B3,$B7,$06,$80,$B7,$AE<br />
dc.b $0C,$B1,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $EF,$15,$E6,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
- dc.b $EF,$14,$80,$4E,$E0,$40,$A1,$12,$A2,$06,$E0,$C0<br />
dc.b $EF,$16,$80,$30,$80,$06,$BA,$08,$B9,$04,$B8,$08<br />
dc.b $B7,$04,$B6,$08,$B5,$04<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E9,$F4,$E6,$02,$E0,$C0<br />
dc.b $F0,$01,$01,$03,$03<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$1E,$E0,$40,$E6,$FE,$E9,$F4,$F4,$E8<br />
dc.b $06,$80,$0C,$C1,$06,$12,$18,$C4,$06,$12,$0C,$EF<br />
dc.b $1C,$E0,$C0,$E6,$FA,$E8,$00,$C6,$E8,$06,$E6,$06<br />
dc.b $EF,$1E,$E0,$40,$C2,$06,$12,$18,$C4,$06,$12,$18<br />
dc.b $C1,$06,$12,$18,$C4,$06,$12,$0C,$EF,$1A,$E0,$C0<br />
dc.b $E9,$0C,$C6,$06,$C6,$80,$C6,$80,$C6,$E8,$00,$C7<br />
dc.b $0C,$C8,$06,$EF,$1E,$E0,$40,$E9,$F4,$E8,$06,$80<br />
dc.b $C4,$06,$12,$0C,$80,$60,$EF,$20,$E9,$18,$E6,$FA<br />
dc.b $E0,$C0,$E8,$00,$B4,$03,$E7,$B6,$5D,$B3,$03,$E7<br />
dc.b $B5,$5D,$B1,$03,$E7,$B3,$5D,$B3,$03,$E7,$B5,$5D<br />
dc.b $80,$60,$EF,$22,$E0,$40,$E9,$E8,$E6,$04,$80,$30<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $C9,$30,$C8,$18,$C9,$0C,$C8,$C6,$30,$C9,$80,$0C<br />
dc.b $C1,$80,$C1,$80,$C2,$80,$C2,$E6,$04,$80,$C1,$80<br />
dc.b $C1,$80,$C2,$80,$C2,$E6,$FC,$80,$C1,$80,$C1,$80<br />
dc.b $C2,$18,$08,$C1,$04,$E9,$0C,$E6,$FF,$E0,$C0,$EF<br />
dc.b $00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $C8,$12,$C8,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $CB,$12,$CB,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E1,$03,$E6,$08,$F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $E6,$F0,$EF,$01<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $A2,$6C,$F2<br />
MusCreditsE22D: dc.b $A2,$14,$A4,$04,$A5,$04,$80,$08,$A9,$04,$80,$08<br />
dc.b $A8,$04,$80,$08,$A9,$04,$80,$08,$AC,$08,$A9,$10<br />
dc.b $E3<br />
MusCreditsE246: dc.b $80,$0C<br />
dc.b $C9,$04,$80,$10<br />
dc.b $C9,$04,$80,$0C<br />
dc.b $C9,$0C<br />
dc.b $CB,$08<br />
dc.b $C9,$04,$80,$18,$80,$0C<br />
dc.b $C8,$04,$80,$10<br />
dc.b $C8,$04,$80,$0C<br />
dc.b $C8,$0C<br />
dc.b $C9,$08<br />
dc.b $C8,$04,$80,$18,$80,$0C<br />
<br />
if 1==1<br />
; this part of the original credits music (CNZ PSG) sounds buggy (dissonant)<br />
dc.b $C6,$04,$80,$10<br />
dc.b $C6,$04,$80,$0C<br />
dc.b $C6,$0C<br />
dc.b $C8,$08<br />
dc.b $C6,$04,$80,$18,$80,$0C<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $C7,$08<br />
else<br />
; replace the above block of notes with this to fix it.<br />
; (I'm not sure why, but the notes $C6 and $C7 are broken here,<br />
; so I've replaced them with pitch-shifted $C8s)<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$10 ; $C6<br />
dc.b $C8,$04,$80,$0C ; $C6<br />
dc.b $C8,$0C ; $C6<br />
dc.b $E1,0<br />
dc.b $C8,$08<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$24 ; $C6<br />
dc.b $E1,0<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $E1,-32<br />
dc.b $C8,$08 ; $C7<br />
dc.b $E1,0<br />
endif<br />
<br />
dc.b $C5,$04,$80,$18<br />
dc.b $E3<br />
MusCreditsE28F: dc.b $EF,$25,$80,$0C,$D0,$D4,$D7,$DB,$0C,$80,$06,$DB<br />
dc.b $0C,$DC,$06,$DB,$0C,$DD,$60,$DE,$0C,$80,$DE,$80<br />
dc.b $80,$06,$DD,$12,$DE,$0C,$E3<br />
MusCreditsE2AE: dc.b $80,$18,$B5,$0B,$80,$0D,$B7,$0C,$0B,$80,$19,$BA<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE2BF: dc.b $C3,$05,$80,$13,$C3,$12,$C3,$05,$E3<br />
MusCreditsE2C8: dc.b $CA,$06,$80,$CA,$80,$C6,$80,$C6,$80,$E3<br />
MusCreditsE2D2: dc.b $AF,$0C,$B3,$06,$B6,$0C,$AF,$B1,$06,$80,$B1,$0C<br />
dc.b $B5,$06,$B8,$0C,$B1,$06,$80,$B6,$0C,$BA,$06,$B1<br />
dc.b $0C,$B5,$B6,$BA,$06,$80,$BA,$AF,$0C,$B3,$B5,$B8<br />
dc.b $06,$B2,$0C,$B3,$B5,$B8,$06,$80,$B8,$B2,$0C,$B5<br />
dc.b $E3<br />
MusCred_FM5: dc.b $E9,$E8,$E6,$F8,$E1,$05,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$18,$E6,$08,$E1,$00,$EF,$02<br />
dc.b $F0,$0C,$01,$FC,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B1,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B5,$3C,$E9,$F4,$E6,$07<br />
dc.b $F0,$30,$01,$04,$04<br />
dc.b $EF,$06<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E6,$F6<br />
dc.b $F0,$0C,$01,$05,$04<br />
dc.b $E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$25,$C6,$06,$C6,$80,$0C,$C6,$06,$C6,$05,$80<br />
dc.b $0D,$C6,$06,$C8,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$E6,$05,$F4,$80,$01,$EF,$0C,$E1<br />
dc.b $FE,$E0,$40,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $23,$80,$0C,$80,$60,$EF,$11,$E9,$F4,$E6,$F4,$E1<br />
dc.b $00,$E0,$C0<br />
dc.b $F0,$06,$01,$06,$05<br />
dc.b $80,$60,$80,$30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60<br />
dc.b $80,$06,$CB,$80,$CB,$C9,$80,$C9,$80,$C7,$80,$C7<br />
dc.b $80,$C6,$03,$80,$C6,$80,$09,$80,$06,$80,$60,$80<br />
dc.b $30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60,$EF,$16,$E9<br />
dc.b $0C,$E6,$04,$F4,$E0,$80,$80,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
dc.b $80,$2F,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$30,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$60,$EF,$19,$E9,$F4,$E0,$C0,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$27,$B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$2A,$80,$60,$EF,$1E,$E9,$F4,$E8,$06<br />
- dc.b $80,$0C,$C4,$06,$12,$18,$C8,$06,$12,$0C,$80,$C6<br />
dc.b $06,$12,$18,$C8,$06,$12,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$20,$E8,$00,$E9,$18,$E6,$FA,$B8,$03<br />
dc.b $E7,$BA,$5D,$B6,$03,$E7,$B8,$5D,$B4,$03,$E7,$B6<br />
dc.b $5D,$B6,$03,$E7,$B8,$5D,$80,$60,$EF,$22,$E9,$F4<br />
dc.b $E6,$05<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$A7,$04,$A9,$08,$AC,$04,$B1,$30,$80,$0C<br />
dc.b $B1,$08,$80,$04,$B3,$08,$B1,$10,$B5,$08,$B5,$04<br />
dc.b $80,$08,$B0,$34,$80,$0C,$B0,$B5,$08,$04,$80,$08<br />
dc.b $B1,$04,$AE,$24,$80,$0C,$AE,$08,$80,$04,$B0,$08<br />
dc.b $AE,$04,$B1,$0C,$AF,$08,$AD,$4C,$80,$0C,$B1,$08<br />
dc.b $80,$04,$B3,$08,$80,$04,$B1,$08,$80,$04,$B5,$08<br />
dc.b $B5,$04,$80,$08,$B0,$1C,$80,$0C,$B5,$18,$B8,$08<br />
dc.b $B5,$04,$BA,$18,$80,$0C,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$04,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$F8,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$AA,$14,$A9,$04,$E6,$0C,$EF,$23,$E1,$03<br />
dc.b $E6,$F7,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E6,$09<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $F2<br />
MusCreditsE4CD: dc.b $80,$1E,$EF,$14,$A4,$12,$A5,$06,$EF,$16,$80,$30<br />
dc.b $80,$06,$BD,$08,$BC,$04,$BB,$08,$BA,$04,$B9,$08<br />
dc.b $B8,$04,$E3<br />
MusCreditsE4E8: dc.b $80,$18,$B1,$0B,$80,$0D,$B3,$0C,$0B,$80,$19,$B6<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE4F9: dc.b $C6,$05,$80,$13,$C6,$12,$C6,$05,$E3<br />
MusCreditsE502: dc.b $80,$60,$AC,$06,$80,$AC,$0C,$AE,$06,$80,$AE,$0C<br />
dc.b $AF,$06,$E3<br />
MusCred_PSG1: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG1)<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$F4,$E6,$FE,$F5,$01,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $AE,$B3,$06,$AC,$0C,$AE,$AE,$B3,$06,$80,$B3,$AB<br />
dc.b $0C,$AE,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $F5,$0B,$80,$04,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$20,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$F5,$00,$E8,$06,$E9,$F4,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$80,$C2,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$04,$80,$C2,$80,$0C,$C2,$80,$60,$F5,$08,$E9<br />
dc.b $04,$EC,$02,$E8,$06<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F0,$EC,$FF,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $E9,$18,$EC,$02,$B5,$30,$B3,$18,$B5,$0C,$B3,$B1<br />
dc.b $30,$B6,$EC,$FE,$80,$0C,$B8,$80,$B8,$80,$BA,$80<br />
dc.b $BA,$EC,$03,$C4,$18,$C1,$BD,$BF,$0C,$80,$EC,$FC<br />
dc.b $80,$B8,$80,$B8,$80,$BA,$18,$08,$B8,$04,$E9,$F4<br />
dc.b $EC,$01,$F5,$05<br />
- dc.b $80,$60<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$C8,$12,$80,$06,$C8,$80,$C6,$12,$C8,$C6<br />
dc.b $0C,$C1,$18,$C5,$C8,$CB,$80,$0C,$CA,$80,$CA,$12<br />
dc.b $C9,$CA,$06,$80,$09,$E9,$30,$EC,$FC,$F6<br />
dc.w z80_ptr(MusCreditsE770)<br />
dc.b $F2<br />
MusCreditsE618: dc.b $80,$0C,$BD,$06,$12,$18,$C4,$06,$12,$0C,$80,$C2<br />
dc.b $06,$12,$18,$C4,$06,$12,$0C,$E3<br />
MusCreditsE62C: dc.b $80,$60,$80,$0C,$C2,$80,$C2,$80,$E3<br />
MusCreditsE635: dc.b $AC,$0C,$AF,$06,$B3,$0C,$AC,$AC,$06,$80,$AC,$0C<br />
dc.b $AF,$06,$B5,$0C,$AC,$06,$80,$06,$B1,$0C,$B6,$06<br />
dc.b $AE,$0C,$B1,$B3,$B6,$06,$80,$B6,$AA,$0C,$AF,$AF<br />
dc.b $B5,$06,$AC,$0C,$AF,$B2,$B5,$06,$80,$B5,$AE,$0C<br />
dc.b $B2,$E3<br />
MusCred_PSG2: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG2)<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$0C,$EC,$FD,$F5,$04,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
dc.b $F0,$03,$02,$01,$05<br />
dc.b $F5,$0A,$E9,$E8,$EC,$02,$80,$30,$80,$80,$BD,$06<br />
dc.b $BF,$C6,$C2,$1E,$80,$60,$80,$06,$C6,$80,$C6,$C4<br />
dc.b $80,$C4,$80,$C3,$80,$C3,$80,$BF,$03,$80,$BF,$80<br />
dc.b $09,$80,$06,$80,$30,$80,$80,$BD,$06,$BF,$C6,$C2<br />
dc.b $1E,$80,$60,$F4<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$00,$EC,$FE,$E8,$06,$80,$60,$80,$0C,$BF,$80<br />
dc.b $BF,$80,$BF,$80,$BF,$80,$60,$80,$0C,$BF,$80,$BF<br />
dc.b $80,$BF,$04,$80,$BF,$80,$0C,$BF,$80,$60,$EC,$02<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F4,$EC,$FF,$E9,$E8,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $E9,$18,$EC,$02,$B1,$30,$B0,$18,$B1,$0C,$B0,$AE<br />
dc.b $30,$B1,$EC,$FE,$80,$0C,$B5,$80,$B5,$80,$B6,$80<br />
dc.b $B6,$EC,$03,$80,$B1,$80,$B1,$80,$B1,$80,$B1,$EC<br />
dc.b $FC,$80,$B1,$80,$B1,$80,$B1,$18,$08,$B1,$04,$EC<br />
dc.b $01,$E9,$18,$F5,$05,$E1,$01,$80,$60,$80,$80,$80<br />
dc.b $80,$80,$80,$0C,$CD,$06,$80,$D4,$CD,$80,$0C,$CD<br />
dc.b $06,$80,$D4,$CD,$80,$18,$80,$54,$E9,$24,$EC,$FD<br />
MusCreditsE770: dc.b $F5,$03,$80,$06<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$FF<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$01<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusCred_PSG3: dc.b $F3,$E7,$80,$60,$F5,$02<br />
- dc.b $C6,$0C,$0C,$0C,$06,$06,$0C,$0C,$06,$06,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$1F<br />
dc.w z80_ptr(-)<br />
dc.b $0C,$F5,$03,$C6,$F5,$02<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $06,$06,$06,$06<br />
dc.b $F7,$01,$04<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$04,$EC,$02<br />
- dc.b $E8,$03,$C6,$06,$06,$E8,$00,$0C<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$02,$EC,$FD<br />
- dc.b $80,$0C,$C6,$06,$80,$07,$C6,$06,$80,$11,$C6,$0C<br />
dc.b $80,$06,$C6,$0C,$80,$06,$C6,$80<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$02<br />
- dc.b $C6,$0C,$08,$04<br />
dc.b $F7,$00,$18<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$0C,$0C,$08,$04<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$04,$EC,$02<br />
- dc.b $C6,$06,$06,$0C<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EC,$FF<br />
- dc.b $F5,$01,$C6,$0C,$F5,$02,$EC,$FF,$08,$F5,$01,$EC<br />
dc.b $01,$04<br />
dc.b $F7,$00,$27<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$FF,$F5,$04<br />
- dc.b $E8,$03,$C6,$0C,$E8,$0C,$0C<br />
dc.b $F7,$00,$1E<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$03,$C6,$06,$E8,$0E,$12,$E8,$03,$0C,$E8,$0F<br />
dc.b $0C,$F2<br />
MusCred_DAC: dc.b $82,$06,$82,$82,$82,$82,$0C,$06,$0C,$06,$0C,$0C<br />
dc.b $0C<br />
- dc.b $81,$18,$82<br />
dc.b $F7,$00,$0E<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C<br />
- dc.b $82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EA,$EA,$F8<br />
dc.w z80_ptr(MusCreditsEA6E)<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$82,$06,$82,$82,$82,$81,$0C,$82,$06,$82<br />
dc.b $81,$81,$82,$82,$82,$82<br />
- dc.b $81,$18,$82,$81,$82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$82,$82,$82,$06,$82,$8C,$8C,$8D,$8D<br />
dc.b $8E,$8E,$F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$18,$82,$0C,$81,$18,$82,$0C,$82,$82,$06,$82<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$0C,$82,$82,$82,$8D,$06,$8D,$8E,$8E,$82,$06<br />
dc.b $82,$8D,$0C,$82,$0C,$82,$06,$82,$80,$82,$82,$0C<br />
MusCreditsE8E5: dc.b $82,$0C,$82,$82,$06,$82,$8D,$8D<br />
- dc.b $81,$0C,$8F,$06,$90,$82,$0C,$90,$06,$91,$81,$0C<br />
dc.b $8F,$06,$91,$82,$0C,$8F,$06,$91<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$8F,$06,$91,$82,$0C,$8F,$06,$91,$8C,$06<br />
dc.b $03,$03,$8D,$06,$8D,$8D,$8E,$8E,$8E,$81,$06,$0C<br />
dc.b $82,$06,$80,$0C,$81,$82,$8E,$82,$06,$82,$82,$82<br />
- dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$12,$8C,$06<br />
dc.b $82,$0C,$83,$06,$81,$80<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$06,$82,$06<br />
dc.b $81,$0C,$06,$82,$0C,$08,$04,$EA,$CD,$82,$30,$82<br />
dc.b $0C,$82,$82,$82,$08,$04,$F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$04,$82,$08,$04<br />
dc.b $08,$04,$04,$04,$04,$08,$04,$EA,$C5<br />
- dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82,$0C,$06<br />
dc.b $06,$81,$0C,$82,$06,$82,$82,$82,$8D,$0C,$82,$0C<br />
dc.b $0C,$0C,$06,$06<br />
- dc.b $81,$0C,$81,$82,$80,$81,$81,$82,$83<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$82,$82,$82,$82,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $81,$06,$81,$82,$82,$81,$82,$81,$81,$82,$02,$82<br />
dc.b $04,$81,$0C,$06,$82,$0C,$06,$06,$81,$18,$82,$0C<br />
dc.b $81,$81,$18,$82,$81,$06,$81,$12,$82,$0C,$81,$81<br />
dc.b $18,$82,$81,$18,$82,$0C,$81,$81,$18,$82,$81,$06<br />
dc.b $81,$12,$82,$0C,$0C,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $82,$02,$04,$81,$0C,$06,$0C,$82,$02,$04,$81,$0C<br />
dc.b $06,$0C,$82,$06,$82,$82,$82,$EA,$C0,$81,$0C,$82<br />
dc.b $81,$82,$81,$82,$81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$0F<br />
dc.w z80_ptr(-)<br />
dc.b $81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$13<br />
dc.w z80_ptr(-)<br />
dc.b $82,$08,$0C,$04,$81,$0C,$82,$81,$82,$81,$0C,$82<br />
dc.b $81,$06,$80,$02,$82,$82,$82,$09,$82,$03<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$06,$80,$02,$82,$82,$82,$09,$82<br />
dc.b $03<br />
dc.b $F7,$01,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$82,$81,$06,$82,$12,$82,$0C,$81<br />
dc.b $F2<br />
MusCreditsEA6E: dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$83,$E3<br />
MusCreditsEA84: dc.b $81,$18,$82,$0C,$81,$18,$0C,$82,$81,$81,$18,$82<br />
dc.b $0C,$81,$12,$81,$82,$18,$81,$82,$0C,$81,$18,$0C<br />
dc.b $82,$81,$E3<br />
MusCreditsEA9F: dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$0C,$82,$04,$81<br />
dc.b $0C,$82,$81,$81,$08,$0C,$04,$82,$0C,$81,$08,$0C<br />
dc.b $82,$04,$81,$0C,$82,$82,$08,$04,$E3,$81,$06,$80<br />
dc.b $03,$81,$81,$06,$82,$81,$06,$80,$03,$81,$81,$06<br />
dc.b $82,$03,$82,$81,$06,$80,$03,$81,$81,$06,$82,$E3<br />
MusCred_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$01,$1F,$1F,$FF,$0F,$17,$27,$28,$80<br />
dc.b $08,$09,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$25,$0E,$30,$84<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$0B,$0D,$19,$0B,$80,$80<br />
dc.b $08,$0A,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$24,$13,$2D,$80<br />
dc.b $3D,$01,$51,$21,$01,$12,$14,$14,$0F,$0A,$05,$05<br />
dc.b $05,$00,$00,$00,$00,$2B,$2B,$2B,$1B,$19,$80,$80,$80<br />
dc.b $04,$57,$70,$02,$50,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$06,$00,$0A,$0A,$00,$00,$0F,$0F,$1A,$10,$80,$80<br />
dc.b $35,$01,$13,$01,$00,$1F,$18,$1D,$19,$00,$06,$09<br />
dc.b $0D,$00,$02,$00,$03,$00,$15,$06,$16,$1E,$83,$80,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1A,$16,$88,$88<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$14,$0F,$37,$80<br />
dc.b $3B,$0F,$01,$06,$02,$DF,$1F,$1F,$DF,$0C,$0A,$00<br />
dc.b $03,$0F,$00,$00,$01,$F3,$55,$05,$5C,$22,$22,$20,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1C,$14,$84,$80<br />
dc.b $3A,$69,$50,$70,$60,$1C,$1A,$18,$18,$10,$02,$0C<br />
dc.b $09,$08,$06,$06,$03,$F9,$06,$56,$06,$28,$14,$15,$00<br />
dc.b $3D,$00,$02,$01,$01,$4C,$50,$0F,$12,$0C,$00,$02<br />
dc.b $05,$01,$00,$00,$00,$28,$2A,$29,$19,$1A,$06,$00,$00<br />
dc.b $2C,$71,$31,$71,$31,$1F,$1F,$16,$16,$00,$00,$0F<br />
dc.b $0F,$00,$00,$0F,$0F,$00,$00,$FA,$FA,$15,$14,$00,$00<br />
dc.b $18,$37,$31,$32,$31,$9E,$1C,$DC,$9C,$0D,$04,$06<br />
dc.b $01,$08,$03,$0A,$05,$B6,$36,$B6,$28,$2C,$14,$22,$00<br />
dc.b $3D,$01,$02,$02,$02,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$24,$18,$18,$18,$1C,$82,$82,$82<br />
dc.b $32,$71,$33,$0D,$01,$5F,$5F,$99,$94,$05,$05,$05<br />
dc.b $07,$02,$02,$02,$02,$11,$11,$11,$72,$23,$26,$2D,$80<br />
dc.b $3A,$32,$52,$01,$31,$1F,$1F,$1F,$18,$01,$00,$1F<br />
dc.b $00,$00,$00,$0F,$00,$5A,$03,$0F,$1A,$3B,$4F,$30,$00<br />
dc.b $3C,$42,$32,$41,$41,$12,$12,$12,$12,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$06,$06,$08,$08,$24,$24,$08,$08<br />
dc.b $31,$34,$30,$35,$31,$DF,$9F,$DF,$9F,$0C,$0C,$07<br />
dc.b $09,$07,$07,$07,$08,$2F,$1F,$1F,$2F,$17,$14,$32,$80<br />
dc.b $3D,$01,$01,$01,$01,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$20,$1A,$1A,$1A,$19,$84,$84,$84<br />
dc.b $24,$70,$30,$74,$38,$12,$1F,$1F,$1F,$05,$05,$03<br />
dc.b $03,$05,$05,$03,$03,$36,$26,$2C,$2C,$0A,$06,$08,$08<br />
dc.b $3A,$01,$01,$01,$02,$8D,$07,$07,$52,$09,$00,$00<br />
dc.b $03,$01,$02,$02,$00,$5F,$0F,$0F,$2F,$18,$18,$22,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$03,$03,$08,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$17,$20,$28,$80<br />
dc.b $20,$7A,$00,$31,$00,$9F,$DC,$D8,$DF,$10,$04,$0A<br />
dc.b $04,$0F,$08,$08,$08,$5F,$BF,$5F,$BF,$14,$17,$2B,$80<br />
dc.b $3A,$61,$51,$08,$02,$5D,$5D,$5D,$50,$04,$1F,$0F<br />
dc.b $1F,$00,$00,$00,$00,$1F,$0F,$5F,$0F,$22,$22,$1E,$80<br />
dc.b $02,$01,$02,$55,$04,$92,$8E,$8D,$54,$0D,$00,$0C<br />
dc.b $03,$00,$00,$00,$00,$FF,$0F,$2F,$5F,$16,$1D,$2A,$80<br />
dc.b $02,$75,$73,$71,$31,$1F,$96,$58,$9F,$01,$03,$1B<br />
dc.b $08,$01,$01,$04,$05,$FF,$3F,$2F,$2F,$24,$30,$29,$80<br />
dc.b $20,$66,$60,$65,$60,$DF,$9F,$DF,$1F,$00,$09,$06<br />
dc.b $0C,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$1C,$16,$3A,$80<br />
dc.b $0D,$32,$06,$08,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$86,$80,$8D<br />
dc.b $38,$3A,$11,$0A,$02,$D4,$50,$14,$0E,$05,$02,$08<br />
dc.b $88,$00,$00,$00,$00,$99,$09,$09,$1A,$2D,$19,$2C,$86<br />
dc.b $0D,$32,$02,$04,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$8B,$86,$93<br />
dc.b $3A,$20,$60,$23,$01,$1E,$1F,$1F,$1F,$0A,$0B,$0A<br />
dc.b $0A,$05,$0A,$07,$08,$A4,$96,$85,$78,$21,$28,$25,$00<br />
dc.b $3A,$32,$32,$56,$42,$8D,$15,$4F,$52,$06,$07,$08<br />
dc.b $04,$02,$00,$00,$00,$18,$28,$18,$28,$19,$2A,$20,$00<br />
dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$19,$13,$37,$80<br />
dc.b $3D,$01,$02,$02,$02,$14,$8C,$0E,$0E,$08,$02,$05<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$1A,$80,$80,$80<br />
; end of Mus_Credits<br />
<br />
; ------------------------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ------------------------------------------------------------------------------------------<br />
; WARNING the sound driver treats certain sounds specially<br />
; going by the ID of the sound.<br />
; SndID_Ring, SndID_RingLeft, SndID_Gloop, SndID_SpindashRev<br />
; are referenced by the sound driver directly.<br />
; If needed you can change this in s2.sounddriver.asm<br />
<br />
<br />
; NOTE: the exact order of this list determines the priority of each sound, since it determines the sound's SndID.<br />
; a sound can get dropped if a higher-priority sound is already playing.<br />
; the rules for sound priority are currently unknown, but you can generally swap pointer lines around to resolve priority conflicts.<br />
; loc_FEE91: SoundPoint:<br />
SoundIndex:<br />
SndPtr_Jump: rom_ptr_z80 Sound20 ; jumping sound<br />
SndPtr_Checkpoint: rom_ptr_z80 Sound21 ; checkpoint ding-dong sound<br />
SndPtr_SpikeSwitch: rom_ptr_z80 Sound22 ; spike switch sound<br />
SndPtr_Hurt: rom_ptr_z80 Sound23 ; hurt sound<br />
SndPtr_Skidding: rom_ptr_z80 Sound24 ; skidding sound<br />
SndPtr_BlockPush: rom_ptr_z80 Sound25 ; block push sound<br />
SndPtr_HurtBySpikes: rom_ptr_z80 Sound26 ; spiky impalement sound<br />
SndPtr_Sparkle: rom_ptr_z80 Sound27 ; sparkling sound<br />
SndPtr_Beep: rom_ptr_z80 Sound28 ; short beep<br />
SndPtr_Bwoop: rom_ptr_z80 Sound29 ; bwoop<br />
SndPtr_Splash: rom_ptr_z80 Sound2A ; splash sound<br />
SndPtr_Swish: rom_ptr_z80 Sound2B ; swish<br />
SndPtr_BossHit: rom_ptr_z80 Sound2C ; boss hit<br />
SndPtr_InhalingBubble: rom_ptr_z80 Sound2D ; inhaling a bubble<br />
SndPtr_ArrowFiring:<br />
SndPtr_LavaBall: rom_ptr_z80 Sound2E ; arrow firing<br />
SndPtr_Shield: rom_ptr_z80 Sound2F ; shield sound<br />
SndPtr_LaserBeam: rom_ptr_z80 Sound30 ; laser beam<br />
SndPtr_Zap: rom_ptr_z80 Sound31 ; zap<br />
SndPtr_Drown: rom_ptr_z80 Sound32 ; drownage<br />
SndPtr_FireBurn: rom_ptr_z80 Sound33 ; fire + burn<br />
SndPtr_Bumper: rom_ptr_z80 Sound34 ; bumper bing<br />
SndPtr_Ring:<br />
SndPtr_RingRight: rom_ptr_z80 Sound35 ; ring sound<br />
SndPtr_SpikesMove: rom_ptr_z80 Sound36<br />
SndPtr_Rumbling: rom_ptr_z80 Sound37 ; rumbling<br />
rom_ptr_z80 Sound38<br />
SndPtr_Smash: rom_ptr_z80 Sound39 ; smash/breaking<br />
rom_ptr_z80 Sound3A ; nondescript ding<br />
SndPtr_DoorSlam: rom_ptr_z80 Sound3B ; door slamming shut<br />
SndPtr_SpindashRelease: rom_ptr_z80 Sound3C ; spindash unleashed<br />
SndPtr_Hammer: rom_ptr_z80 Sound3D ; slide-thunk<br />
SndPtr_Roll: rom_ptr_z80 Sound3E ; rolling sound<br />
SndPtr_ContinueJingle: rom_ptr_z80 Sound3F ; got continue<br />
SndPtr_CasinoBonus: rom_ptr_z80 Sound40 ; short bonus ding<br />
SndPtr_Explosion: rom_ptr_z80 Sound41 ; badnik bust<br />
SndPtr_WaterWarning: rom_ptr_z80 Sound42 ; warning ding-ding<br />
SndPtr_EnterGiantRing: rom_ptr_z80 Sound43 ; special stage ring flash (unused)<br />
SndPtr_BossExplosion: rom_ptr_z80 Sound44 ; thunk<br />
SndPtr_TallyEnd: rom_ptr_z80 Sound45 ; cha-ching<br />
SndPtr_RingSpill: rom_ptr_z80 Sound46 ; losing rings<br />
rom_ptr_z80 Sound47 ; chain pull chink-chink<br />
SndPtr_Flamethrower: rom_ptr_z80 Sound48 ; flamethrower<br />
SndPtr_Bonus: rom_ptr_z80 Sound49 ; bonus pwoieeew (unused)<br />
SndPtr_SpecStageEntry: rom_ptr_z80 Sound4A ; special stage entry<br />
SndPtr_SlowSmash: rom_ptr_z80 Sound4B ; slower smash/crumble<br />
SndPtr_Spring: rom_ptr_z80 Sound4C ; spring boing<br />
SndPtr_Blip: rom_ptr_z80 Sound4D ; selection blip<br />
SndPtr_RingLeft: rom_ptr_z80 Sound4E ; another ring sound (only plays in the left speaker?)<br />
SndPtr_Signpost: rom_ptr_z80 Sound4F ; signpost spin sound<br />
SndPtr_CNZBossZap: rom_ptr_z80 Sound50 ; mosquito zapper<br />
rom_ptr_z80 Sound51<br />
rom_ptr_z80 Sound52<br />
SndPtr_Signpost2P: rom_ptr_z80 Sound53<br />
SndPtr_OOZLidPop: rom_ptr_z80 Sound54 ; OOZ lid pop sound<br />
SndPtr_SlidingSpike: rom_ptr_z80 Sound55<br />
SndPtr_CNZElevator: rom_ptr_z80 Sound56<br />
SndPtr_PlatformKnock: rom_ptr_z80 Sound57<br />
SndPtr_BonusBumper: rom_ptr_z80 Sound58 ; CNZ bonusy bumper sound<br />
SndPtr_LargeBumper: rom_ptr_z80 Sound59 ; CNZ baaang bumper sound<br />
SndPtr_Gloop: rom_ptr_z80 Sound5A ; CNZ gloop / water droplet sound<br />
SndPtr_PreArrowFiring: rom_ptr_z80 Sound5B<br />
SndPtr_Fire: rom_ptr_z80 Sound5C<br />
SndPtr_ArrowStick: rom_ptr_z80 Sound5D ; chain clink<br />
SndPtr_Helicopter:<br />
SndPtr_WingFortress: rom_ptr_z80 Sound5E ; helicopter<br />
SndPtr_SuperTransform: rom_ptr_z80 Sound5F<br />
SndPtr_SpindashRev: rom_ptr_z80 Sound60 ; spindash charge<br />
SndPtr_Rumbling2: rom_ptr_z80 Sound61 ; rumbling<br />
SndPtr_CNZLaunch: rom_ptr_z80 Sound62<br />
SndPtr_Flipper: rom_ptr_z80 Sound63 ; CNZ blooing bumper<br />
SndPtr_HTZLiftClick: rom_ptr_z80 Sound64 ; HTZ track click sound<br />
SndPtr_Leaves: rom_ptr_z80 Sound65 ; kicking up leaves sound<br />
SndPtr_MegaMackDrop: rom_ptr_z80 Sound66 ; leaf splash?<br />
SndPtr_DrawbridgeMove: rom_ptr_z80 Sound67<br />
SndPtr_QuickDoorSlam: rom_ptr_z80 Sound68 ; door slamming quickly (seems unused)<br />
SndPtr_DrawbridgeDown: rom_ptr_z80 Sound69<br />
SndPtr_LaserBurst: rom_ptr_z80 Sound6A ; robotic laser burst<br />
SndPtr_Scatter:<br />
SndPtr_LaserFloor: rom_ptr_z80 Sound6B ; scatter<br />
SndPtr_Teleport: rom_ptr_z80 Sound6C<br />
SndPtr_Error: rom_ptr_z80 Sound6D ; error sound<br />
SndPtr_MechaSonicBuzz: rom_ptr_z80 Sound6E ; silver sonic buzz saw<br />
SndPtr_LargeLaser: rom_ptr_z80 Sound6F<br />
SndPtr_OilSlide: rom_ptr_z80 Sound70<br />
SndPtr__End:<br />
<br />
; There are many non-relative pointers in these sound effects,<br />
; so the sounds shouldn't simply be BINCLUDE'd.<br />
; They could be included as separate .asm files using "include" instead of "binclude",<br />
; but I wanted to minimize the number of included asm files.<br />
<br />
; some comments on what the various script commands do (after the header):<br />
; 0x00-0x7F sets the note duration (of the previous note and following notes)<br />
; 0x81-0xDF plays a note (the valid range may be smaller for PSG or DAC)<br />
; 0x80 plays silence<br />
; 0xE0-0xFF does special things. I won't list them here... search for "Coordination flags" sonic 2.<br />
<br />
; the FM voices (poorly named "ssamp" or "samples" below)<br />
; are 25 bytes each and go directly to YM2612 registers.<br />
; they can be hard to edit (there's an art to it)<br />
; but search for sonic "Voice editing" for more info if you want to try.<br />
<br />
; jumping sound<br />
Sound20: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$F400<br />
+ dc.b $F5,$00,$9E,$05,$F0,$02,$01,$F8,$65,$A3,$15,$F2<br />
<br />
; checkpoint ding-dong sound<br />
Sound21: dc.w z80_ptr(ssamp21),$0101<br />
dc.w $8005,z80_ptr(+),$0001<br />
ssamp21: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
+ dc.b $EF,$00,$BD,$06,$BA,$16,$F2<br />
<br />
; spike switch sound<br />
Sound22: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C0,$04,$CA,$04<br />
- dc.b $C0,$01,$EC<br />
dc.w $01F7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; hurt sound<br />
Sound23: dc.w z80_ptr(ssamp23),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B0,$07,$E7,$AD<br />
- dc.b $01,$E6<br />
dc.w $01F7,$002F,z80_ptr(-)<br />
dc.b $F2<br />
ssamp23: dc.b $30,$30,$30,$30,$30,$9E,$DC,$D8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$14,$14,$3C,$80<br />
<br />
; skidding sound<br />
Sound24: dc.w $0000,$0102 ; sound header... no sample and 2 script entries<br />
dc.w $80A0,z80_ptr(+),$F400 ; entry 1 header<br />
dc.w $80C0,z80_ptr(++),$F400 ; entry 2 header<br />
+ dc.b $F5,$00,$AF,$01,$80,$AF,$80,$03 ; script entry 1<br />
- dc.b $AF,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 1 end<br />
+ dc.b $F5,$00,$80,$01,$AD,$80,$AD,$80,$03 ; script entry 2<br />
- dc.b $AD,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 2 end<br />
<br />
; block push sound<br />
Sound25: dc.w z80_ptr(ssamp25),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$01,$8B,$0A,$80,$02,$F2<br />
ssamp25: dc.b $FA,$21,$10,$30,$32,$2F,$2F,$1F,$2F,$05,$09,$08<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
; spiky impalement sound<br />
Sound26: dc.w z80_ptr(ssamp26),$0101<br />
dc.w $8005,z80_ptr(+),$F200<br />
+ dc.b $EF,$00,$F0,$01,$01,$10,$FF,$CF,$05,$D7,$25,$F2<br />
ssamp26: dc.b $3B,$3C,$30,$39,$31,$DF,$1F,$1F,$DF,$04,$04,$05<br />
dc.b $01,$04,$04,$04,$02,$FF,$1F,$0F,$AF,$29,$0F,$20,$80<br />
<br />
; sparkling sound<br />
Sound27: dc.w z80_ptr(ssamp27),$0101<br />
dc.w $8004,z80_ptr(+),$0C1C<br />
+ dc.b $EF,$00,$C1,$05,$C4,$05,$C9,$2B,$F2<br />
ssamp27: dc.b $07,$73,$33,$33,$73,$0F,$19,$14,$1A,$0A,$0A,$0A<br />
dc.b $0A,$0A,$0A,$0A,$0A,$57,$57,$57,$57,$00,$00,$00,$00<br />
<br />
; short beep<br />
Sound28: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$E803<br />
+ dc.b $F5,$04,$CB,$04,$F2<br />
<br />
; bwoop<br />
Sound29: dc.w $0000,$0101<br />
dc.w $80A0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$E6,$35,$8E,$06,$F2<br />
<br />
; splash sound<br />
Sound2A: dc.w z80_ptr(ssamp2A),$0102<br />
dc.w $80C0,z80_ptr(+),$0000<br />
dc.w $8005,z80_ptr(++),$0003<br />
+ dc.b $F5,$00,$F3,$E7,$C2,$05,$C6,$05,$E7<br />
- dc.b $07,$EC,$01<br />
dc.w $E7F7,$000F,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$A6,$14,$F2<br />
ssamp2A: dc.b $00,$00,$02,$03,$00,$D9,$1F,$DF,$1F,$12,$14,$11<br />
dc.b $0F,$0A,$0A,$00,$0D,$FF,$FF,$FF,$FF,$22,$27,$07,$80<br />
<br />
; swish<br />
Sound2B: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$C6,$03,$80,$03,$C6,$01,$E7<br />
- dc.b $01,$EC,$01<br />
dc.w $E7F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; boss hit<br />
Sound2C: dc.w z80_ptr(smashsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$0C,$01<br />
- dc.b $81,$0A,$E6<br />
dc.w $10F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
smashsamp: dc.b $F9,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
<br />
; inhaling a bubble<br />
Sound2D: dc.w z80_ptr(ssamp2D),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$21,$6E,$A6,$07<br />
dc.b $80,$06,$F0,$01,$01,$44,$1E,$AD,$08,$F2<br />
ssamp2D: dc.b $35,$05,$08,$09,$07,$1E,$0D,$0D,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$1F,$2F,$1F,$15,$12,$12,$80<br />
<br />
; arrow firing<br />
Sound2E: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$C6,$01,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp2E: dc.b $FA,$02,$00,$03,$05,$12,$0F,$11,$13,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$2F,$0E,$1A,$80<br />
<br />
; shield sound<br />
Sound2F: dc.w z80_ptr(ssamp2F),$0101<br />
dc.w $8005,z80_ptr(+),$0C00<br />
+ dc.b $EF,$00,$80,$01,$A3,$05,$E7,$A4,$26,$F2<br />
ssamp2F: dc.b $30,$30,$30,$30,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$04,$14,$2C,$80<br />
<br />
; laser beam<br />
Sound30: dc.w z80_ptr(ssamp30),$0101 ; sound header... a voice and 1 script entry<br />
dc.w $8005,z80_ptr(+),$FB05 ; script entry header<br />
+ dc.b $EF,$00,$DF,$7F ; script start<br />
- dc.b $DF,$02,$E6 ; script continued<br />
dc.w $01F7,$001B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script end<br />
ssamp30: dc.b $83,$1F,$1F,$15,$1F,$1F,$1F,$1F,$1F,$00,$00,$00 ; voice<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$0B,$01,$16,$82 ; (fixed length)<br />
<br />
; zap<br />
Sound31: dc.w z80_ptr(ssamp31),$0101<br />
dc.w $8005,z80_ptr(+),$FB02<br />
+ dc.b $EF,$00,$B3,$05,$80,$01,$B3,$09,$F2<br />
ssamp31: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$05,$34,$10,$87<br />
<br />
; drownage<br />
Sound32: dc.w z80_ptr(ssamp32),$0102<br />
dc.w $8004,z80_ptr(++),$0C04<br />
dc.w $8005,z80_ptr(+),$0E02<br />
+ dc.b $EF,$00,$F0,$01,$01,$83,$0C<br />
- dc.b $8A,$05,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $80,$06,$EF,$00,$F0,$01,$01,$6F,$0E<br />
- dc.b $8D,$04,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp32: dc.b $35,$14,$04,$1A,$09,$0E,$11,$10,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$4F,$2F,$4F,$2F,$12,$12,$80<br />
<br />
; fire + burn<br />
Sound33: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$A7,$25,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; bumper bing<br />
Sound34: dc.w z80_ptr(ssamp34),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $8002,z80_ptr(+++),$0002<br />
+ dc.b $EF,$00,$F6<br />
dc.w z80_ptr(Sound34_3)<br />
+ dc.b $EF,$00,$E1,$07,$80,$01<br />
Sound34_3:<br />
dc.b $BA,$20,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
ssamp34: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$1F,$2B,$80,$80<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; ring sound<br />
Sound35: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$40,$C1,$05,$C4,$05,$C9,$1B,$F2<br />
<br />
<br />
Sound36: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C1,$07<br />
- dc.b $D0,$01,$EC<br />
dc.w $01F7,$000C,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; rumbling<br />
Sound37: dc.w z80_ptr(ssamp37),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$20,$08<br />
- dc.b $8B<br />
dc.w $0AF7,$0008,z80_ptr(-)<br />
- dc.b $8B,$10,$E6<br />
dc.w $03F7,$0009,z80_ptr(-)<br />
dc.b $F2<br />
ssamp37: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
<br />
Sound38: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$B4,$08<br />
- dc.b $B0,$02,$EC<br />
dc.w $01F7,$0003,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; smash/breaking<br />
Sound39: dc.w z80_ptr(smashsamp),$0104<br />
dc.w $8002,z80_ptr(+),$1000<br />
dc.w $8004,z80_ptr(+++),$0000<br />
dc.w $8005,z80_ptr(++),$1000<br />
dc.w $80C0,z80_ptr(s39s4),$0000<br />
+ dc.b $E0,$40,$80,$02,$F6<br />
dc.w z80_ptr(++)<br />
+ dc.b $E0,$80,$80,$01<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
s39s4: dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; nondescript ding<br />
Sound3A: dc.w z80_ptr(ssamp3A),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$AE,$08,$F2<br />
ssamp3A: dc.b $1C,$2E,$0F,$02,$02,$1F,$1F,$1F,$1F,$18,$14,$0F<br />
dc.b $0E,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$20,$1B,$80,$80<br />
<br />
; door slamming shut<br />
Sound3B: dc.w z80_ptr(ssamp3B),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$80,$A0,$06,$F2<br />
ssamp3B: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; spindash unleashed<br />
Sound3C: dc.w z80_ptr(ssamp3C),$0102<br />
dc.w $8005,z80_ptr(+),$9000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$F2<br />
+ dc.b $F5,$07,$80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$4F,$F2<br />
ssamp3C: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
<br />
; slide-thunk<br />
Sound3D: dc.w z80_ptr(ssamp3D),$0102<br />
dc.w $8005,z80_ptr(+),$100A<br />
dc.w $8004,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$60,$01,$A7,$08,$F2<br />
+ dc.b $80,$08,$EF,$01,$84,$22,$F2<br />
ssamp3D: dc.b $FA,$21,$19,$3A,$30,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
dc.b $FA,$31,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$1F,$2F,$2F,$0D,$01,$00,$80<br />
<br />
; rolling sound<br />
Sound3E: dc.w z80_ptr(ssamp3E),$0101<br />
dc.w $8004,z80_ptr(+),$0C05<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$09,$FF,$CA,$25,$F4<br />
- dc.b $E7,$E6,$01,$D0<br />
dc.w $02F7,$002A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3E: dc.b $3C,$00,$02,$44,$02,$1F,$1F,$1F,$15,$00,$00,$1F<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0D,$28,$00,$00<br />
<br />
; got continue<br />
Sound3F: dc.w z80_ptr(ssamp3F),$0103<br />
dc.w $8002,z80_ptr(+),$F406<br />
dc.w $8004,z80_ptr(++),$F406<br />
dc.w $8005,z80_ptr(+++),$F406<br />
+ dc.b $EF,$00,$C9,$07,$CD,$D0,$CB,$CE,$D2,$CD,$D0,$D4,$CE,$D2,$D5<br />
- dc.b $D0,$07,$D4,$D7,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$80,$07,$CD,$15,$CE,$D0,$D2<br />
- dc.b $D4,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$C9,$15,$CB,$CD,$CE<br />
- dc.b $D0,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3F: dc.b $14,$25,$36,$33,$11,$1F,$1F,$1F,$1F,$15,$1C,$18<br />
dc.b $13,$0B,$0D,$08,$09,$0F,$8F,$9F,$0F,$24,$0A,$05,$80<br />
<br />
; short bonus ding<br />
Sound40: dc.w z80_ptr(ssamp3F),$0102<br />
dc.w $8005,z80_ptr(++),$0008<br />
dc.w $8004,z80_ptr(+),$0008<br />
+ dc.b $E1,$03,$80,$02<br />
+ dc.b $EF,$00,$C4,$16,$F2<br />
<br />
; badnik bust<br />
Sound41: dc.w z80_ptr(ssamp41),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0002<br />
+ dc.b $F0,$03,$01,$72,$0B,$EF,$00,$BA,$16,$F2<br />
+ dc.b $F5,$01,$F3,$E7,$B0,$1B,$F2<br />
ssamp41: dc.b $3C,$0F,$03,$01,$01,$1F,$1F,$1F,$1F,$19,$19,$12<br />
dc.b $0E,$05,$00,$12,$0F,$0F,$FF,$7F,$FF,$00,$00,$80,$80<br />
<br />
; warning ding-ding<br />
Sound42: dc.w z80_ptr(ssamp3F),$0101<br />
dc.w $8005,z80_ptr(+),$0C08<br />
+ dc.b $EF,$00,$BA,$08,$BA,$25,$F2<br />
<br />
; special stage ring flash (unused)<br />
Sound43: dc.w z80_ptr(ssamp43),$0102<br />
dc.w $8004,z80_ptr(+),$0C00<br />
dc.w $8005,z80_ptr(++),$0013<br />
+ dc.b $EF,$01,$80,$01,$A2,$08,$EF,$00,$E7,$AD,$26,$F2<br />
+ dc.b $EF,$02,$F0,$06,$01,$03,$FF,$80,$0A<br />
- dc.b $C3<br />
dc.w $06F7,$0005,z80_ptr(-)<br />
dc.b $C3,$17,$F2<br />
ssamp43: dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$1C,$80<br />
dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$2C,$80<br />
dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$13,$13,$81,$88<br />
<br />
; thunk<br />
Sound44: dc.w z80_ptr(ssamp44),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$8A,$22,$F2<br />
ssamp44: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$4F,$2F,$2F,$0D,$04,$07,$80<br />
<br />
; cha-ching<br />
Sound45: dc.w z80_ptr(ssamp45),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$8A,$08,$80,$02,$8A,$08,$F2<br />
+ dc.b $EF,$01,$80,$12,$C6,$55,$F2<br />
+ dc.b $F5,$02,$F3,$E7,$80,$02,$C2,$05,$C4,$04,$C2,$05,$C4,$04,$F2<br />
ssamp45: dc.b $3B,$03,$02,$02,$06,$18,$1A,$1A,$96,$17,$0A,$0E<br />
dc.b $10,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$39,$28,$80<br />
ringsamp: dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$23,$80,$80<br />
<br />
; losing rings (scatter)<br />
Sound46: dc.w z80_ptr(ringsamp),$0102<br />
dc.w $8004,z80_ptr(+),$0005<br />
dc.w $8005,z80_ptr(++),$0008<br />
+ dc.b $EF,$00,$C6,$02,$05,$05,$05,$05,$05,$05,$3A,$F2<br />
+ dc.b $EF,$00,$80,$02,$C4,$02,$05,$15,$02,$05,$32,$F2<br />
<br />
; chain pull chink-chink<br />
Sound47: dc.w z80_ptr(ssamp47),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$BE,$05,$80,$04,$BE,$04,$80,$04,$F2<br />
ssamp47: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; flamethrower<br />
Sound48: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$25,$F2<br />
<br />
; bonus pwoieeew (unused)<br />
Sound49: dc.w z80_ptr(ssamp49),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$33,$18,$B9,$1A,$F2<br />
ssamp49: dc.b $3B,$0A,$05,$31,$02,$5F,$5F,$5F,$5F,$04,$16,$14<br />
dc.b $0C,$00,$00,$04,$00,$1F,$D8,$6F,$FF,$03,$00,$25,$80<br />
<br />
; special stage entry<br />
Sound4A: dc.w z80_ptr(ssamp4A),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$F0,$01,$01,$5B,$02,$CC,$65,$F2<br />
ssamp4A: dc.b $20,$36,$30,$35,$31,$41,$3B,$49,$4B,$09,$09,$06<br />
dc.b $08,$01,$02,$03,$A9,$0F,$0F,$0F,$0F,$29,$23,$27,$80<br />
<br />
; slower smash/crumble<br />
Sound4B: dc.w z80_ptr(smashsamp),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; spring boing<br />
Sound4C: dc.w z80_ptr(ssamp4C),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$5D,$0F,$B0,$0C,$F4<br />
- dc.b $E7,$E6,$02,$BD<br />
dc.w $02F7,$0019,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4C: dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$16,$13,$30,$80<br />
<br />
; selection blip<br />
Sound4D: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $BB,$02,$F2<br />
<br />
; another ring sound (only plays in the left speaker?)<br />
Sound4E: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8004,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$80,$C1,$04,$C4,$05,$C9,$1B,$F2<br />
<br />
; signpost spin sound<br />
Sound4F: dc.w z80_ptr(ssamp4F),$0102<br />
dc.w $8004,z80_ptr(+),$2703<br />
dc.w $8005,z80_ptr(++),$2700<br />
+ dc.b $80,$04<br />
+ dc.b $EF,$00<br />
- dc.b $B4,$05,$E6<br />
dc.w $02F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4F: dc.b $F4,$06,$0F,$04,$0E,$1F,$1F,$1F,$1F,$00,$0B,$00<br />
dc.b $0B,$00,$05,$00,$08,$0F,$FF,$0F,$FF,$0C,$03,$8B,$80<br />
<br />
; mosquito zapper<br />
Sound50: dc.w z80_ptr(ssamp50),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B3,$04,$80,$01<br />
- dc.b $B4,$04,$80<br />
dc.w $01F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
ssamp50: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$06,$34,$10,$87<br />
<br />
<br />
Sound51: dc.w z80_ptr(ssamp51),$0102<br />
dc.w $80C0,z80_ptr(+),$0001<br />
dc.w $8005,z80_ptr(++),$000B<br />
+ dc.b $F5,$02,$F3,$E4,$B0,$04,$85,$02,$F2<br />
+ dc.b $EF,$00,$E8,$04,$A5,$06,$F2<br />
ssamp51: dc.b $3C,$02,$01,$00,$01,$1F,$1F,$1F,$1F,$00,$19,$0E<br />
dc.b $10,$00,$00,$0C,$0F,$0F,$FF,$EF,$FF,$05,$00,$80,$80<br />
<br />
<br />
Sound52: dc.w z80_ptr(ssamp52),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $F0,$01,$01,$2A,$07,$EF,$00<br />
- dc.b $A5,$03<br />
dc.w $E7F7,$0013,z80_ptr(-)<br />
- dc.b $A5,$03,$E7,$E6<br />
dc.w $02F7,$0013,z80_ptr(-)<br />
dc.b $F2<br />
ssamp52: dc.b $28,$21,$21,$21,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$29,$20,$29,$80<br />
<br />
<br />
Sound53: dc.w z80_ptr(ssamp53),$0101<br />
dc.w $8005,z80_ptr(+),$F503<br />
+ dc.b $EF,$00,$F0,$01,$01,$46,$09,$A7,$14,$E7,$14,$E7,$E6,$04<br />
dc.b $14,$E7,$E6,$04,$14,$E7,$E6,$04,$0A,$E7,$E6,$04,$0A,$F2<br />
ssamp53: dc.b $07,$0A,$0C,$0C,$0C,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$2A,$0F,$0F,$80<br />
<br />
; OOZ lid pop sound<br />
Sound54: dc.w z80_ptr(ssamp54),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0006<br />
+ dc.b $EF,$00,$B6,$15,$F2<br />
+ dc.b $F3,$E7,$F5,$04,$C6,$03,$E7,$C5,$E7<br />
dc.b $C4,$E7,$C3,$E7,$C2,$E7,$C1,$E7,$C0,$F2<br />
ssamp54: dc.b $07,$03,$02,$03,$00,$FF,$6F,$6F,$3F,$12,$14,$11<br />
dc.b $0E,$1A,$0A,$03,$0D,$FF,$FF,$FF,$FF,$03,$07,$07,$80<br />
<br />
<br />
Sound55: dc.w z80_ptr(ssamp55),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$AA,$07,$B6,$15,$F2<br />
ssamp55: dc.b $42,$20,$0E,$0F,$0F,$1F,$1F,$1F,$1F,$1F,$1F,$1F<br />
dc.b $1F,$0F,$0E,$0F,$0E,$0F,$0F,$0F,$0F,$2E,$80,$20,$80<br />
<br />
<br />
Sound56: dc.w z80_ptr(ssamp56),$0101<br />
dc.w $8005,z80_ptr(+),$100E<br />
+ dc.b $EF,$00,$F0,$01,$01,$1E,$FF,$8F,$1C,$F4<br />
- dc.b $E7,$9A<br />
dc.w $05F7,$0009,z80_ptr(-)<br />
- dc.b $E7,$9A,$04,$E6,$02,$E7,$9A,$04,$E6<br />
dc.w $02F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp56: dc.b $0D,$06,$00,$00,$E5,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$27,$80,$80,$80<br />
<br />
<br />
Sound57: dc.w z80_ptr(ssamp57),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$CA,$15,$F2<br />
ssamp57: dc.b $04,$09,$70,$00,$30,$1C,$1F,$DF,$1F,$15,$12,$0B<br />
dc.b $0F,$0C,$0D,$00,$0D,$07,$2F,$FA,$FA,$00,$29,$00,$00<br />
<br />
; CNZ bonusy bumper sound<br />
Sound58: dc.w z80_ptr(ssamp58),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$B3,$06,$B3,$15,$F2<br />
ssamp58: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
<br />
; CNZ baaang bumper sound<br />
Sound59: dc.w z80_ptr(ssamp59),$0103<br />
dc.w $8004,z80_ptr(+),$0000<br />
dc.w $8002,z80_ptr(++),$0002<br />
dc.w $8005,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$E1,$0C,$B5,$14,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
+ dc.b $EF,$00,$B6,$14,$F2<br />
ssamp59: dc.b $32,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $0D,$00,$01,$01,$0C,$00,$23,$C3,$F6,$08,$07,$1C,$03<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; CNZ gloop / water droplet sound<br />
Sound5A: dc.w z80_ptr(ssamp5A),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$7F,$F1,$AA,$0A,$F2<br />
ssamp5A: dc.b $47,$03,$02,$02,$04,$5F,$5F,$5F,$5F,$0E,$1A,$11<br />
dc.b $0A,$09,$0A,$0A,$0A,$4F,$3F,$3F,$3F,$7F,$80,$80,$A3<br />
<br />
<br />
Sound5B: dc.w z80_ptr(ssamp5B),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$02,$A5,$01,$E7<br />
- dc.b $01,$E7,$E6<br />
dc.w $02F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5B: dc.b $38,$0F,$0F,$0F,$0F,$1F,$1F,$1F,$0E,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$1F,$00,$00,$00,$80<br />
<br />
<br />
Sound5C: dc.w z80_ptr(ssamp5C),$0102<br />
dc.w $8004,z80_ptr(+),$000E<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$85,$40<br />
- dc.b $E7,$04,$E6<br />
dc.w $04F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$40<br />
- dc.b $E7,$08,$E6<br />
dc.w $01F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5C: dc.b $FA,$12,$01,$01,$01,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$81,$8E,$14,$80<br />
<br />
; chain clink<br />
Sound5D: dc.w z80_ptr(ssamp5D),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$C0,$04,$F2<br />
ssamp5D: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; helicopter<br />
Sound5E: dc.w z80_ptr(ssamp5E),$0101<br />
dc.w $8002,z80_ptr(+),$1405<br />
+ dc.b $EF,$00<br />
- dc.b $95,$02,$95<br />
dc.w $01F7,$0013,z80_ptr(-)<br />
- dc.b $95,$02,$95,$01,$E6<br />
dc.w $01F7,$001B,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5E: dc.b $35,$30,$44,$40,$51,$1F,$1F,$1F,$1F,$10,$00,$13<br />
dc.b $15,$1F,$00,$1F,$1A,$7F,$0F,$7F,$5F,$02,$A8,$80,$80<br />
<br />
<br />
Sound5F: dc.w z80_ptr(ssamp5F),$0103<br />
dc.w $8005,z80_ptr(s5Fs1),$0000<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
s5Fs1 dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$E6,$0A,$80<br />
dc.b $06,$EF,$01,$F0,$01,$01,$11,$FF,$A2,$28<br />
- dc.b $E7,$03,$E6<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs2 dc.b $80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$1D<br />
- dc.b $E7,$07,$EC<br />
dc.w $01F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs3 dc.b $80,$16,$F5,$03<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $FFF7,$0005,z80_ptr(-)<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $01F7,$0007,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5F: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
dc.b $3A,$70,$30,$04,$01,$0F,$14,$19,$16,$08,$0A,$0B<br />
dc.b $05,$03,$03,$03,$05,$1F,$6F,$8F,$5F,$1F,$22,$1F,$80<br />
<br />
; spindash charge<br />
Sound60: dc.w z80_ptr(ssamp60),$0101<br />
dc.w $8005,z80_ptr(+),$FE00<br />
+ dc.b $EF,$00,$F0,$00,$01,$20,$F6,$C4,$16,$E7,$F4,$D0,$18,$E7<br />
- dc.b $04,$E7,$E6<br />
dc.w $03F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp60: dc.b $34,$00,$03,$0C,$09,$9F,$8C,$8F,$95,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$00,$1D,$00,$00<br />
<br />
; rumbling<br />
Sound61: dc.w z80_ptr(ssamp61),$0101<br />
dc.w $8004,z80_ptr(+),$0004<br />
+ dc.b $80,$01,$EF,$00,$F0,$00,$01,$70,$06,$82,$06,$85,$08,$83<br />
dc.b $01,$82,$05,$86,$06,$89,$03,$82,$08,$88,$04,$82,$06,$E6<br />
dc.b $02,$85,$08,$E6,$02,$83,$01,$E6,$02,$82,$05,$E6,$02,$86<br />
dc.b $06,$E6,$02,$89,$03,$E6,$02,$82,$08,$E6,$02,$88,$04,$E6,$02,$F2<br />
ssamp61: dc.b $32,$30,$30,$50,$30,$1F,$0E,$19,$0E,$07,$12,$15<br />
dc.b $09,$0A,$09,$1D,$06,$E8,$03,$0A,$17,$07,$00,$00,$00<br />
<br />
<br />
Sound62: dc.w z80_ptr(ssamp62),$0101<br />
dc.w $8005,z80_ptr(+),$FF00<br />
+ dc.b $EF,$00,$A6,$05,$F0,$01,$01,$E7,$40<br />
- dc.b $C4,$02,$E7,$E6<br />
dc.w $01F7,$0012,z80_ptr(-)<br />
dc.b $F2<br />
ssamp62: dc.b $34,$0C,$10,$73,$0C,$AF,$AC,$FF,$D5,$06,$00,$02<br />
dc.b $01,$02,$0A,$04,$08,$BF,$BF,$BF,$BF,$00,$08,$80,$80<br />
<br />
; CNZ blooing bumper<br />
Sound63: dc.w z80_ptr(ssamp63),$0101<br />
dc.w $8005,z80_ptr(+),$0907<br />
+ dc.b $EF,$00,$F0,$01,$01,$04,$56,$92,$03,$9A,$25,$F2<br />
ssamp63: dc.b $3D,$12,$10,$77,$30,$5F,$5F,$5F,$5F,$0F,$0A,$00<br />
dc.b $01,$0A,$0A,$0D,$0D,$4F,$0F,$0F,$0F,$13,$80,$80,$80<br />
<br />
; HTZ track click sound<br />
Sound64: dc.w z80_ptr(ssamp64),$0101<br />
dc.w $8005,z80_ptr(+),$1100<br />
+ dc.b $EF,$00,$C7,$02,$F2<br />
ssamp64: dc.b $24,$2A,$02,$05,$01,$1A,$1F,$10,$1F,$0F,$1F,$1F<br />
dc.b $1F,$0C,$0D,$11,$11,$0C,$09,$09,$0F,$0E,$04,$80,$80<br />
<br />
; kicking up leaves sound<br />
Sound65: dc.w z80_ptr(ssamp65),$0101<br />
dc.w $80C0,z80_ptr(+),$F800<br />
+ dc.b $F5,$03,$F3,$E7,$CE,$03,$F5,$06,$CE,$04,$EC<br />
dc.b $02,$CE,$02,$F5,$03,$EC,$FE,$CE,$08,$CE,$18,$F2<br />
ssamp65: ; uhm... apparently they forgot to null out the pointer to here.<br />
; luckily, sound 65 doesn't really use its sample<br />
<br />
; leaf splash?<br />
Sound66: dc.w z80_ptr(ssamp66),$0102<br />
dc.w $8005,z80_ptr(++),$EE08<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$F5,$09,$C6,$36,$F2<br />
+ dc.b $EF,$00,$80,$01,$92,$02,$02,$02,$30,$F2<br />
ssamp66: dc.b $32,$33,$17,$34,$13,$0F,$0D,$1B,$17,$00,$04,$02<br />
dc.b $0B,$08,$00,$08,$09,$6F,$5F,$4F,$6F,$05,$00,$00,$80<br />
<br />
<br />
Sound67: dc.w z80_ptr(ssamp67),$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$06,$F3,$E7,$90,$0A,$94,$0A,$98,$0A,$9C<br />
dc.b $0A,$A0,$0A,$A4,$08,$A8,$08,$AC,$08,$B0,$08,$F2<br />
ssamp67: ; another not-really-used sample (like Sound65)<br />
<br />
; door slamming quickly (seems unused)<br />
Sound68: dc.w z80_ptr(ssamp68),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$A5,$06,$F2<br />
ssamp68: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
<br />
Sound69: dc.w z80_ptr(ssamp69),$0102<br />
dc.w $8005,z80_ptr(+),$F400<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$9B,$03,$A8,$06,$9E,$08,$F2<br />
+ dc.b $F5,$04,$F3,$E7,$C6,$03,$C6,$06,$C6,$08,$F2<br />
ssamp69: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; robotic laser burst<br />
Sound6A: dc.w z80_ptr(ssamp6A),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$DF,$14,$E6,$18,$06,$F2<br />
ssamp6A: dc.b $3D,$09,$34,$34,$28,$1F,$16,$16,$16,$00,$00,$00<br />
dc.b $04,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$15,$02,$02,$00<br />
<br />
; scatter<br />
Sound6B: dc.w z80_ptr(ssamp6B),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$81,$04,$80,$0C,$F2<br />
ssamp6B: dc.b $3A,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $07,$00,$01,$01,$03,$00,$23,$C3,$46,$08,$07,$1C,$03<br />
<br />
<br />
Sound6C: dc.w z80_ptr(ssamp6C),$0104<br />
dc.w $8005,z80_ptr(++),$0010<br />
dc.w $8004,z80_ptr(+),$0010<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
+ dc.b $E1,$10<br />
+ dc.b $EF,$01,$F0,$01,$01,$EC,$56,$C0,$24,$F4,$EF,$00,$E6,$F0<br />
- dc.b $BB,$02,$E7,$E6,$02,$E9<br />
dc.w $01F7,$0020,z80_ptr(-)<br />
dc.b $F2<br />
ssamp6C: dc.b $00,$53,$30,$03,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$06,$23,$80<br />
dc.b $3C,$72,$32,$32,$72,$14,$14,$0F,$0F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$02,$02,$08,$08,$35,$14,$00,$00<br />
<br />
; error sound<br />
Sound6D: dc.w z80_ptr(ssamp6D),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$B0,$06,$80,$06,$B0,$18,$F2<br />
ssamp6D: dc.b $38,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$1F,$0C,$17,$00<br />
<br />
; silver sonic buzz saw<br />
Sound6E: dc.w z80_ptr(ssamp6E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$C6,$24,$E7<br />
- dc.b $C6,$04,$E7,$E6<br />
dc.w $04F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F3,$E7,$C7,$44,$F2<br />
ssamp6E: dc.b $33,$00,$10,$00,$31,$1F,$1D,$1E,$0E,$00,$0C,$1D<br />
dc.b $00,$00,$00,$01,$00,$0F,$0F,$0F,$0F,$08,$06,$07,$80<br />
<br />
<br />
Sound6F: dc.w z80_ptr(ssamp6A),$0103<br />
dc.w $8005,z80_ptr(++),$000B<br />
dc.w $8004,z80_ptr(+),$0012<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $E1,$02,$80,$02<br />
+ dc.b $EF,$00,$E6,$0C,$DF,$06,$E7,$E6,$F4,$06,$E7<br />
dc.b $E6,$F4,$12,$E7,$E6,$0C,$06,$E7,$E6,$0C,$06,$F2<br />
+ dc.b $F3,$E7,$C6,$04,$C0,$BA,$B4,$AE,$E6<br />
dc.b $01,$AE,$E6,$01,$AE,$E6,$01,$AE,$F2<br />
<br />
<br />
Sound70: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$C6,$18<br />
- dc.b $E7,$03,$E6<br />
dc.w $01F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to the other bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
; share these symbols externally (WARNING: don't rename, move or remove these labels!)<br />
shared movewZ80CompSize<br />
</asm><br />
<br />
We want to replace it with this optimized code:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
<asm><br />
<br />
===sound playback routines===<br />
now find:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b render_flags(a0)<br />
bpl.s + ; rts<br />
move.b d0,(SFX_to_play).w<br />
+<br />
rts<br />
; End of function PlaySoundLocal<br />
</asm><br />
and replace it with:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; play a sound if the source is onscreen<br />
; sub_137C:<br />
PlaySoundLocal:<br />
tst.b 4(A0)<br />
bpl.s SkipPlaySound_Special<br />
; End of function PlaySoundLocal<br />
</asm></div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208739
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-24T23:29:29Z
<p>Kram1024: /* Upgrading the Playback Routines */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==<br />
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><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
move sr,-(sp)<br />
movem.l d0-a6,-(sp)<br />
move #$2700,sr<br />
lea (Z80_Bus_Request).l,a3<br />
lea (Z80_Reset).l,a2<br />
moveq #0,d2<br />
move.w #$100,d1<br />
move.w d1,(a3) ; get Z80 bus<br />
move.w d1,(a2) ; release Z80 reset (was held high by console on startup)<br />
- btst d2,(a3)<br />
bne.s - ; wait until the 68000 has the bus<br />
jsr DecompressSoundDriver(pc)<br />
btst #0,(VDP_control_port+1).l ; check video mode<br />
sne (Z80_RAM+zPalModeByte).l ; set if PAL<br />
move.w d2,(a2) ; hold Z80 reset<br />
move.w d2,(a3) ; release Z80 bus<br />
moveq #$E6,d0<br />
- dbf d0,- ; wait for 2,314 cycles<br />
move.w d1,(a2) ; release Z80 reset<br />
movem.l (sp)+,d0-a6<br />
move (sp)+,sr<br />
rts<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; slightly modified Saxman decompression of the sound driver<br />
; a4 == $A00000 (start of Z80 RAM)<br />
; a5 == current position in Z80 RAM?<br />
; a6 == current position in compressed sound driver?<br />
; d0 == data to decompress? (byte)<br />
; d4 == ???<br />
; d5 == ???<br />
; d6 == ???<br />
; d7 == bytes left to decompress<br />
; loc_EC04A:<br />
DecompressSoundDriver:<br />
lea Snd_Driver(pc),a6<br />
; WARNING: the build script needs editing if you rename this label<br />
movewZ80CompSize: move.w #Snd_Driver_End-Snd_Driver,d7 ; patched (by fixpointer.exe) after compression since the exact size can't be known beforehand<br />
moveq #0,d6<br />
lea (Z80_RAM).l,a5<br />
moveq #0,d5<br />
lea (Z80_RAM).l,a4<br />
<br />
loc_EC062:<br />
lsr.w #1,d6<br />
btst #8,d6<br />
bne.s +<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d6<br />
ori.w #$FF00,d6<br />
+<br />
btst #0,d6<br />
beq.s loc_EC086<br />
jsr sub_EC0DE(pc)<br />
move.b d0,(a5)+<br />
addq.w #1,d5<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC086:<br />
jsr sub_EC0DE(pc)<br />
moveq #0,d4<br />
move.b d0,d4<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d3<br />
andi.w #$F,d3<br />
addq.w #2,d3<br />
andi.w #$F0,d0<br />
lsl.w #4,d0<br />
add.w d0,d4<br />
addi.w #$12,d4<br />
andi.w #$FFF,d4<br />
move.w d5,d0<br />
andi.w #$F000,d0<br />
add.w d0,d4<br />
cmp.w d4,d5<br />
bhs.s loc_EC0CC<br />
subi.w #$1000,d4<br />
bcc.s loc_EC0CC<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b #0,(a5)+<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC0CC:<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b (a4,d4.w),(a5)+<br />
addq.w #1,d4<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; End of function DecompressSoundDriver<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_EC0DE:<br />
move.b (a6)+,d0<br />
subq.w #1,d7<br />
bne.s +<br />
addq.w #4,sp<br />
+<br />
rts<br />
; End of function sub_EC0DE<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; S2 sound driver (Sound driver compression (slightly modified Saxman))<br />
; ---------------------------------------------------------------------------<br />
; loc_EC0E8:<br />
Snd_Driver:<br />
save<br />
include "s2.sounddriver.asm" ; CPU Z80<br />
restore<br />
padding off<br />
!org (Snd_Driver+Size_of_Snd_driver_guess) ; don't worry; I know what I'm doing<br />
<br />
<br />
; loc_ED04C:<br />
Snd_Driver_End:<br />
<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ---------------------------------------------------------------------------<br />
; the DAC data has to line up with the end of the bank.<br />
<br />
; actually it only has to fit within one bank, but we'll line it up to the end anyway<br />
; because the padding gives the sound driver some room to grow<br />
cnop -Size_of_DAC_samples, $8000<br />
<br />
; ---------------------------------------------------------------------------<br />
; DAC samples<br />
; ---------------------------------------------------------------------------<br />
; loc_ED100:<br />
SndDAC_Start:<br />
<br />
SndDAC_Sample1:<br />
BINCLUDE "sound/DAC/Sample 1.bin"<br />
SndDAC_Sample1_End<br />
<br />
SndDAC_Sample2:<br />
BINCLUDE "sound/DAC/Sample 2.bin"<br />
SndDAC_Sample2_End<br />
<br />
SndDAC_Sample5:<br />
BINCLUDE "sound/DAC/Sample 5.bin"<br />
SndDAC_Sample5_End<br />
<br />
SndDAC_Sample6:<br />
BINCLUDE "sound/DAC/Sample 6.bin"<br />
SndDAC_Sample6_End<br />
<br />
SndDAC_Sample3:<br />
BINCLUDE "sound/DAC/Sample 3.bin"<br />
SndDAC_Sample3_End<br />
<br />
SndDAC_Sample4:<br />
BINCLUDE "sound/DAC/Sample 4.bin"<br />
SndDAC_Sample4_End<br />
<br />
SndDAC_Sample7:<br />
BINCLUDE "sound/DAC/Sample 7.bin"<br />
SndDAC_Sample7_End<br />
<br />
SndDAC_End<br />
<br />
if SndDAC_End - SndDAC_Start > $8000<br />
fatal "DAC samples must fit within $8000 bytes, but you have $\{SndDAC_End-SndDAC_Start } bytes of DAC samples."<br />
endif<br />
if SndDAC_End - SndDAC_Start > Size_of_DAC_samples<br />
fatal "Size_of_DAC_samples = $\{Size_of_DAC_samples}, but you have $\{SndDAC_End-SndDAC_Start} bytes of DAC samples."<br />
endif<br />
<br />
; ---------------------------------------------------------------------------<br />
; Music pointers<br />
; ---------------------------------------------------------------------------<br />
align $8000<br />
<br />
; loc_F0000:<br />
MusicPoint1:<br />
MusPtr_Continue: rom_ptr_z80 Mus_Continue-MusicPoint2<br />
<br />
<br />
Mus_Continue: BINCLUDE "sound/music/Continue.bin"<br />
<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ----------------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ----------------------------------------------------------------------------------<br />
; the PCM data has to line up with the end of the bank.<br />
cnop -Size_of_SEGA_sound, $8000<br />
<br />
; -------------------------------------------------------------------------------<br />
; Sega Intro Sound<br />
; 8-bit unsigned raw audio at 16Khz<br />
; -------------------------------------------------------------------------------<br />
; loc_F1E8C:<br />
Snd_Sega: BINCLUDE "sound/PCM/SEGA.bin"<br />
Snd_Sega_End:<br />
<br />
if Snd_Sega_End - Snd_Sega > $8000<br />
fatal "Sega sound must fit within $8000 bytes, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
if Snd_Sega_End - Snd_Sega > Size_of_SEGA_sound<br />
fatal "Size_of_SEGA_sound = $\{Size_of_SEGA_sound}, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
<br />
; ------------------------------------------------------------------------------<br />
; Music pointers<br />
; ------------------------------------------------------------------------------<br />
align $8000<br />
soundBankStart := *<br />
<br />
; loc_F8000:<br />
MusicPoint2:<br />
MusPtr_CNZ_2P: rom_ptr_z80 Mus_CNZ_2P<br />
MusPtr_EHZ: rom_ptr_z80 Mus_EHZ<br />
MusPtr_MTZ: rom_ptr_z80 Mus_MTZ<br />
MusPtr_CNZ: rom_ptr_z80 Mus_CNZ<br />
MusPtr_MCZ: rom_ptr_z80 Mus_MCZ<br />
MusPtr_MCZ_2P: rom_ptr_z80 Mus_MCZ_2P<br />
MusPtr_ARZ: rom_ptr_z80 Mus_ARZ<br />
MusPtr_DEZ: rom_ptr_z80 Mus_DEZ<br />
MusPtr_SpecStage: rom_ptr_z80 Mus_SpecStage<br />
MusPtr_Options: rom_ptr_z80 Mus_Options<br />
MusPtr_Ending: rom_ptr_z80 Mus_Ending<br />
MusPtr_EndBoss: rom_ptr_z80 Mus_EndBoss<br />
MusPtr_CPZ: rom_ptr_z80 Mus_CPZ<br />
MusPtr_Boss: rom_ptr_z80 Mus_Boss<br />
MusPtr_SCZ: rom_ptr_z80 Mus_SCZ<br />
MusPtr_OOZ: rom_ptr_z80 Mus_OOZ<br />
MusPtr_WFZ: rom_ptr_z80 Mus_WFZ<br />
MusPtr_EHZ_2P: rom_ptr_z80 Mus_EHZ_2P<br />
MusPtr_2PResult: rom_ptr_z80 Mus_2PResult<br />
MusPtr_SuperSonic: rom_ptr_z80 Mus_SuperSonic<br />
MusPtr_HTZ: rom_ptr_z80 Mus_HTZ<br />
MusPtr_ExtraLife: rom_ptr_z80 Mus_ExtraLife<br />
MusPtr_Title: rom_ptr_z80 Mus_Title<br />
MusPtr_EndLevel: rom_ptr_z80 Mus_EndLevel<br />
MusPtr_GameOver: rom_ptr_z80 Mus_GameOver<br />
MusPtr_Invincible: rom_ptr_z80 Mus_Invincible<br />
MusPtr_Emerald: rom_ptr_z80 Mus_Emerald<br />
MusPtr_HPZ: rom_ptr_z80 Mus_HPZ<br />
MusPtr_Drowning: rom_ptr_z80 Mus_Drowning<br />
MusPtr_Credits: rom_ptr_z80 Mus_Credits<br />
<br />
; loc_F803C:<br />
Mus_HPZ: BINCLUDE "sound/music/HPZ.bin"<br />
Mus_Drowning: BINCLUDE "sound/music/Drowning.bin"<br />
Mus_Invincible: BINCLUDE "sound/music/Invincible.bin"<br />
Mus_CNZ_2P: BINCLUDE "sound/music/CNZ_2p.bin"<br />
Mus_EHZ: BINCLUDE "sound/music/EHZ.bin"<br />
Mus_MTZ: BINCLUDE "sound/music/MTZ.bin"<br />
Mus_CNZ: BINCLUDE "sound/music/CNZ.bin"<br />
Mus_MCZ: BINCLUDE "sound/music/MCZ.bin"<br />
Mus_MCZ_2P: BINCLUDE "sound/music/MCZ_2p.bin"<br />
Mus_ARZ: BINCLUDE "sound/music/ARZ.bin"<br />
Mus_DEZ: BINCLUDE "sound/music/DEZ.bin"<br />
Mus_SpecStage: BINCLUDE "sound/music/SpecStg.bin"<br />
Mus_Options: BINCLUDE "sound/music/Options.bin"<br />
Mus_Ending: BINCLUDE "sound/music/Ending.bin"<br />
Mus_EndBoss: BINCLUDE "sound/music/End_Boss.bin"<br />
Mus_CPZ: BINCLUDE "sound/music/CPZ.bin"<br />
Mus_Boss: BINCLUDE "sound/music/Boss.bin"<br />
Mus_SCZ: BINCLUDE "sound/music/SCZ.bin"<br />
Mus_OOZ: BINCLUDE "sound/music/OOZ.bin"<br />
Mus_WFZ: BINCLUDE "sound/music/WFZ.bin"<br />
Mus_EHZ_2P: BINCLUDE "sound/music/EHZ_2p.bin"<br />
Mus_2PResult: BINCLUDE "sound/music/2player results screen.bin"<br />
Mus_SuperSonic: BINCLUDE "sound/music/Supersonic.bin"<br />
Mus_HTZ: BINCLUDE "sound/music/HTZ.bin"<br />
Mus_Title: BINCLUDE "sound/music/Title screen.bin"<br />
Mus_EndLevel: BINCLUDE "sound/music/End of level.bin"<br />
<br />
; The following act mostly like sound effects<br />
; despite being listed with the music.<br />
; This means they're uncompressed format with absolute pointers<br />
; instead of compressed with relative pointers.<br />
; Because they have absolute pointers,<br />
; they have to be assembled rather than BINCLUDE'd.<br />
; See below (right before Sound20) for other notes<br />
; about the sound format that apply to these too.<br />
<br />
;Mus_ExtraLife: BINCLUDE "sound/music/Extra life.bin"<br />
Mus_ExtraLife: dc.w z80_ptr(Mus_EL_Voices),$0603,$02CD<br />
dc.w z80_ptr(Mus_EL_DAC),$0000<br />
dc.w z80_ptr(Mus_EL_FM1),$E810<br />
dc.w z80_ptr(Mus_EL_FM2),$E810<br />
dc.w z80_ptr(Mus_EL_FM3),$E810<br />
dc.w z80_ptr(Mus_EL_FM4),$E810<br />
dc.w z80_ptr(Mus_EL_FM5),$E810<br />
dc.w z80_ptr(Mus_EL_PSG1),$D008,$0005<br />
dc.w z80_ptr(Mus_EL_PSG2),$DC08,$0005<br />
dc.w z80_ptr(Mus_EL_PSG3),$DC00,$0004<br />
Mus_EL_FM4: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM1: dc.b $E0,$80<br />
+ dc.b $EF,$00,$E8,$06,$D9,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$DB,$09,$D7,$D6,$06,$D9,$18,$F2<br />
Mus_EL_FM2: dc.b $EF,$01,$E8,$06,$E2,$01,$D6,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$D7,$09,$D4,$D2,$06,$D6,$18,$E2,$01,$F2<br />
Mus_EL_FM5: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM3: dc.b $E0,$80<br />
+ dc.b $EF,$02,$BA,$0C,$80,$06,$BA,$B8,$80,$03<br />
dc.b $B8,$06,$80,$03,$B8,$06,$BA,$18,$F2<br />
Mus_EL_PSG1: dc.b $E8,$06,$D6,$06,$03,$03,$06,$06,$E8,$00,$D7,$09<br />
dc.b $D4,$D2,$06,$D6,$18<br />
Mus_EL_PSG2:<br />
Mus_EL_PSG3: dc.b $F2<br />
Mus_EL_DAC: dc.b $88,$12,$06,$8B,$09,$09,$06,$88,$06,$8A,$88,$8A<br />
dc.b $88,$0C,$E4<br />
Mus_EL_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
<br />
<br />
;Mus_GameOver: BINCLUDE "sound/music/Game over.bin"<br />
Mus_GameOver: dc.w z80_ptr(MusGO_Voices),$0603,$02F2<br />
dc.w z80_ptr(MusGOver_DAC),$0000<br />
dc.w z80_ptr(MusGOver_FM1),$E80A<br />
dc.w z80_ptr(MusGOver_FM2),$F40F<br />
dc.w z80_ptr(MusGOver_FM3),$F40F<br />
dc.w z80_ptr(MusGOver_FM4),$F40D<br />
dc.w z80_ptr(MusGOver_FM5),$DC16<br />
dc.w z80_ptr(MusGOver_PSG),$D003,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC06,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC00,$0004<br />
MusGOver_FM1: dc.b $EF,$00<br />
dc.b $F0,$20,$01,$04,$05<br />
dc.b $80,$0C,$CA,$12,$80,$06,$CA,$80,$CB,$12,$C8,$1E<br />
dc.b $CA,$06,$80,$CA,$80,$CA,$80,$C6,$80,$C4,$12,$C8<br />
dc.b $0C,$80,$12,$C9,$04,$80,$C9,$C8,$06,$80,$C7,$80<br />
dc.b $C6,$80<br />
dc.b $F0,$28,$01,$18,$05<br />
dc.b $C5,$60,$F2<br />
MusGOver_FM2: dc.b $EF,$01,$80,$01,$D9,$06,$80,$D9,$80,$D6,$80,$D6<br />
dc.b $80,$D7,$15,$D7,$1B,$D9,$06,$80,$D9,$80,$D6,$80<br />
dc.b $D6,$80,$DC,$15,$DC,$1B,$F2<br />
MusGOver_FM3: dc.b $EF,$01,$D6,$0C,$D6,$D2,$D2,$D4,$15,$D4,$1B,$D6<br />
dc.b $0C,$D6,$D2,$D2,$D7,$15,$D7,$1B,$F2<br />
MusGOver_FM4: dc.b $EF,$02,$E2,$01,$AE,$06,$80,$AE,$80,$A9,$80,$A9<br />
dc.b $80,$AC,$15,$AB,$0C,$AC,$03,$AB,$0C,$AE,$06,$80<br />
dc.b $AE,$80,$A9,$80,$A9,$80,$B3,$15,$B2,$0C,$B3,$03<br />
dc.b $B2,$0C,$AE,$04,$80,$AE,$AD,$06,$80,$AC,$80,$AB<br />
dc.b $80,$AB,$60,$E2,$01,$F2<br />
MusGOver_FM5: dc.b $EF,$03,$80,$30,$D7,$12,$80,$03,$D7,$1B,$80,$30<br />
dc.b $DC,$12,$80,$03,$DC,$1B<br />
MusGOver_PSG: dc.b $F2<br />
MusGOver_DAC: dc.b $80,$18,$81<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(MusGOver_DAC)<br />
dc.b $F2<br />
MusGO_Voices: dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $3C,$33,$73,$30,$70,$94,$96,$9F,$9F,$12,$14,$00<br />
dc.b $0F,$04,$04,$0A,$0D,$2F,$4F,$0F,$2F,$33,$1A,$80,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$1C,$27,$28,$80<br />
dc.b $1F,$66,$53,$31,$22,$1C,$1F,$98,$1F,$12,$0F,$0F<br />
dc.b $0F,$00,$00,$00,$00,$FF,$0F,$0F,$0F,$8C,$8A,$8D,$8B<br />
<br />
;Mus_Emerald: BINCLUDE "sound/music/Got an emerald.bin"<br />
Mus_Emerald: dc.w z80_ptr(MusEmrldVoices),$0703,$01D5<br />
dc.w z80_ptr(MusEmeraldDAC),$0000<br />
dc.w z80_ptr(MusEmeraldFM1),$F408<br />
dc.w z80_ptr(MusEmeraldFM2),$F408<br />
dc.w z80_ptr(MusEmeraldFM3),$F407<br />
dc.w z80_ptr(MusEmeraldFM4),$F416<br />
dc.w z80_ptr(MusEmeraldFM5),$F416<br />
dc.w z80_ptr(MusEmeraldFM6),$F416<br />
dc.w z80_ptr(MusEmeraldPSG1),$F402,$0004<br />
dc.w z80_ptr(MusEmeraldPSG2),$F402,$0005<br />
dc.w z80_ptr(MusEmeraldPSG3),$F400,$0004<br />
MusEmeraldFM3: dc.b $E1,$02<br />
MusEmeraldFM1: dc.b $EF,$00,$C1,$06,$C4,$C9,$CD,$0C,$C9,$D0,$2A,$F2<br />
MusEmeraldFM2: dc.b $EF,$00,$BD,$06,$C1,$C4,$C9,$0C,$C6,$CB,$2A,$F2<br />
MusEmeraldFM4: dc.b $EF,$01,$C1,$0C,$C1,$06,$C4,$06,$80,$C4,$80,$C9<br />
dc.b $2A,$F2<br />
MusEmeraldFM5: dc.b $EF,$01,$C9,$0C,$C9,$06,$CD,$06,$80,$CD,$80,$D0<br />
dc.b $2A,$F2<br />
MusEmeraldFM6: dc.b $EF,$01,$C4,$0C,$C4,$06,$C9,$06,$80,$C9,$80,$CD<br />
dc.b $2A,$F2<br />
MusEmeraldPSG2: dc.b $80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusEmeraldPSG1: dc.b $E2,$01,$80,$02,$80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
MusEmeraldPSG3:<br />
MusEmeraldDAC: dc.b $E2,$01,$F2<br />
MusEmrldVoices: dc.b $04,$35,$54,$72,$46,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$1D,$14,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$07,$07,$1A,$16,$80,$80<br />
<br />
;Mus_Credits: BINCLUDE "sound/music/Credits.bin"<br />
Mus_Credits: dc.w z80_ptr(MusCred_Voices),$0603,$01F0<br />
dc.w z80_ptr(MusCred_DAC),$0000<br />
dc.w z80_ptr(MusCred_FM1),$000E<br />
dc.w z80_ptr(MusCred_FM2),$180A<br />
dc.w z80_ptr(MusCred_FM3),$0014<br />
dc.w z80_ptr(MusCred_FM4),$0016<br />
dc.w z80_ptr(MusCred_FM5),$0C16<br />
dc.w z80_ptr(MusCred_PSG1),$E806,$000B<br />
dc.w z80_ptr(MusCred_PSG2),$DC07,$000B<br />
dc.w z80_ptr(MusCred_PSG3),$0002,$0003<br />
MusCred_FM1: dc.b $E9,$F4,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$0C,$E6,$02<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$03,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $AE,$06,$A2,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $E6,$FD<br />
- dc.b $EF,$00,$B7,$06,$BA,$F8<br />
dc.w z80_ptr(MusCreditsDA13)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$06,$80,$80,$30,$80,$EF,$0B,$E9,$18,$E6,$02<br />
- dc.b $94,$0C,$8F,$92,$8F,$06,$94,$05,$94,$07,$06,$8F<br />
dc.b $0C,$92,$8F<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$30,$80,$EF,$0E,$E6,$FF,$E9,$E8,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$91,$94,$06,$80,$18,$96,$12,$9A,$06,$80<br />
dc.b $80,$12,$8F,$93,$08,$80,$16,$96,$06,$91,$92,$94<br />
dc.b $96,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$9D,$9A,$08,$80,$16,$96,$12,$9D,$08,$80<br />
dc.b $04,$EF,$12<br />
dc.b $F0,$18,$01,$0A,$04<br />
dc.b $80,$30,$80,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$24,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$EF,$01,$E9,$F4,$E6,$FA,$F4<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $80,$03,$80,$60,$E6,$04,$E1,$01,$EF,$1B,$E6,$06<br />
dc.b $C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80,$EF<br />
dc.b $1C,$E6,$FA,$E8,$00,$BC,$0C,$12,$06,$EF,$1B,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$80,$E8,$06,$C4,$06,$06,$C6,$C4,$E8<br />
dc.b $00,$C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80<br />
dc.b $E8,$00,$EF,$1C,$E6,$FA,$C1,$C4,$C1,$EF,$1A,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$06,$80,$80,$24,$80,$30,$80,$EF,$1F<br />
dc.b $E9,$18,$E6,$F7,$E1,$00,$80,$06,$AC,$AE,$80,$B1<br />
dc.b $80,$B3,$80,$B4,$80,$B3,$80,$B1,$B3,$80,$B1,$E9<br />
dc.b $F4,$EF,$00,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC<br />
dc.b $06,$AE,$B1,$80,$B4,$B1,$80,$B1,$E9,$0C,$EF,$1F<br />
dc.b $80,$06,$B8,$12,$B4,$06,$80,$B3,$80,$B4,$80,$B3<br />
dc.b $80,$B1,$AE,$80,$B1,$E9,$F4,$EF,$00,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$30,$80,$EF,$21,$E9,$0C,$80,$30,$80<br />
dc.b $08,$A0,$04,$9E,$0C,$9D,$9B,$99,$08,$04,$91,$0C<br />
dc.b $92,$93,$94,$98,$99,$9B,$9D,$98,$95,$93,$91,$98<br />
dc.b $9D,$91,$96,$98,$99,$98,$96,$99,$9D,$96,$95,$97<br />
dc.b $99,$97,$95,$96,$97,$98,$99,$98,$99,$9B,$9D,$08<br />
dc.b $04,$98,$0C,$91,$95,$96,$98,$99,$9D,$9E,$08,$96<br />
dc.b $10,$97,$0C,$98,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$08,$99,$04,$EF,$23,$E9,$E8,$E6,$07,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $80,$60,$E6,$FB,$80,$0C,$CD,$06,$80,$D4,$CD,$06<br />
dc.b $80,$0C,$CD,$06,$80,$D4,$CD,$06,$80,$18,$E6,$05<br />
dc.b $80,$0C,$AE,$80,$AE,$80,$24,$E1,$02,$E6,$08,$A2<br />
dc.b $6C,$F2<br />
MusCreditsD9D1: dc.b $A5,$0C,$B1,$06,$80,$B1,$0C,$AC,$B3,$12,$B1,$0C<br />
dc.b $AC,$06,$AE,$B1,$A7,$0C,$B3,$06,$80,$B3,$0C,$AE<br />
dc.b $B5,$12,$B3,$06,$80,$AE,$B0,$B3,$A3,$0C,$AF,$06<br />
dc.b $80,$AF,$0C,$AA,$B1,$12,$AF,$0C,$AA,$06,$AC,$AF<br />
dc.b $A2,$0C,$AE,$06,$A2,$A4,$0C,$B0,$06,$A4,$A5,$0C<br />
dc.b $B1,$06,$A5,$A2,$0C,$E3<br />
MusCreditsDA13: dc.b $BE,$0C,$BC,$06,$BA,$BC,$BA,$04,$E7,$08,$BA,$04<br />
dc.b $80,$0E,$EF,$07,$B7,$06,$B2,$B5,$B7,$EF,$00,$B7<br />
dc.b $BA,$BE,$0C,$BC,$06,$BA,$BC,$BA,$0C,$BC,$04,$80<br />
dc.b $08,$BA,$04,$80,$08,$BC,$04,$80,$08,$BE,$12,$BA<br />
dc.b $06,$B7,$80,$B7,$80,$24,$EF,$07,$B7,$06,$B2,$B5<br />
dc.b $B7,$80,$0C,$80,$30,$BE,$06,$BE,$BA,$04,$80,$08<br />
dc.b $BC,$06,$BE,$E3<br />
MusCreditsDA5F: dc.b $C3,$01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$02,$C3<br />
dc.b $01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01<br />
dc.b $E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$FC,$C3,$01,$E7<br />
dc.b $C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01,$E7,$C4<br />
dc.b $E7,$C5,$E7,$C6,$2D,$E7,$30,$E7,$30,$E3<br />
MusCreditsDA99: dc.b $A7,$0C,$B3,$06,$80,$B1,$80,$B3,$0C,$A7,$03,$80<br />
dc.b $06,$A7,$03,$B3,$0C,$B1,$B3,$09,$AE,$03,$AC,$06<br />
dc.b $80,$AC,$0C,$AE,$06,$80,$AE,$0C,$AF,$06,$80,$27<br />
dc.b $E3<br />
MusCreditsDABE: dc.b $80,$0C,$CA,$15,$80,$03,$CA,$06,$80,$CB,$0F,$80<br />
dc.b $03,$C8,$18,$80,$06,$CA,$80,$CA,$80,$CA,$80,$C6<br />
dc.b $80,$C4,$0F,$80,$03,$C8,$18,$80,$06<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E3<br />
MusCreditsDAE5: dc.b $80,$12,$94,$97,$06,$80,$18,$99,$12,$94,$06,$80<br />
dc.b $80,$12,$92,$96,$06,$80,$18,$97,$12,$92,$06,$80<br />
dc.b $E3<br />
MusCreditsDAFE: dc.b $80,$99,$80,$99,$80,$9E,$80,$E3<br />
MusCreditsDB06: dc.b $EF,$07,$80,$54,$C7,$04,$C8,$C9,$CA,$24,$CD,$D2<br />
dc.b $18,$D0,$24,$CF,$CB,$18,$CB,$0C,$CA,$80,$CD,$60<br />
dc.b $E7,$3C,$CA,$24,$CD,$D2,$18,$D4,$24,$D0,$D4,$18<br />
dc.b $D4,$24,$D6,$60,$E7,$3C,$E3<br />
MusCred_FM2: dc.b $80,$60,$EF,$01,$E8,$06,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $85,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8A,$87,$88,$89,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $88<br />
dc.b $F7,$00,$0B<br />
dc.w z80_ptr(-)<br />
- dc.b $8A<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$E6,$FC,$8A,$8B,$8C,$E6,$04,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$8D,$8A,$8B,$8C,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8D,$06,$99,$E8,$00,$8A,$0C,$8B,$8C,$E9,$E8,$E6<br />
dc.b $0C,$EF,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E6,$F9,$EF,$08<br />
MusCreditsDB93: dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $06,$9C,$12,$9D,$0C,$9E,$F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9D,$04,$80,$08,$9D,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $9C,$04,$80,$08,$9C,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(MusCreditsDB93)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$13,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$60,$EF,$0F,$E6,$F3<br />
dc.b $F0,$04,$02,$03,$02<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$30,$E7,$18,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$EF,$13,$E6,$F5,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$0C,$A9,$08,$A1,$10,$F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$08,$A9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E1,$02,$E9,$F4,$E6,$0A,$F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$EF,$1B,$E1,$00<br />
dc.b $E8,$06,$80,$3C,$B8,$06,$06,$BA,$BD,$BD,$BA,$EF<br />
dc.b $1D,$E6,$FA,$E8,$00,$F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $EF,$1C,$BD,$EF,$1D,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $80,$30,$80,$EF,$01,$E9,$18,$E6,$F9<br />
- dc.b $99,$0C,$A5,$06,$80,$96,$0C,$A2,$06,$80,$97,$0C<br />
dc.b $A3,$06,$80,$98,$0C,$A8,$06,$A7,$99,$06,$99,$12<br />
dc.b $96,$0C,$A2,$06,$80,$97,$0C,$A3,$06,$80,$98,$0C<br />
dc.b $A4,$06,$80<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$22,$E9,$E8,$E6,$03<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$AC,$04,$AE,$08,$B1,$04,$B5,$30,$80,$0C<br />
dc.b $B5,$08,$80,$04,$B6,$08,$B5,$10,$B9,$08,$04,$80<br />
dc.b $08,$B5,$34,$80,$0C,$B5,$BA,$08,$04,$80,$08,$B5<br />
dc.b $04,$B1,$24,$80,$0C,$B1,$08,$80,$04,$B3,$08,$B1<br />
dc.b $04,$B4,$0C,$B3,$08,$B1,$4C,$80,$0C,$B5,$08,$80<br />
dc.b $04,$B6,$08,$80,$04,$B5,$08,$80,$04,$B9,$08,$04<br />
dc.b $80,$08,$B5,$1C,$80,$0C,$BA,$18,$BC,$08,$BA,$04<br />
dc.b $BD,$18,$80,$0C,$BA,$04,$80,$08,$B8,$18,$B5,$B1<br />
dc.b $B3,$0C,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$0C,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$14,$B1,$04,$E6,$FF,$EF,$24,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $AC,$12,$AB,$0C,$AC,$06,$AB,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $B3,$12,$B2,$0C,$B3,$06,$B2,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $AC,$06,$80,$A9,$80,$AA,$80,$AB,$80,$AC,$AC,$A9<br />
dc.b $80,$AA,$80,$AC,$80,$A9,$80,$A9,$80,$AD,$80,$AD<br />
dc.b $80,$B0,$80,$B0,$80,$B3,$80,$B3,$80,$80,$0C,$A2<br />
dc.b $12,$80,$06,$A2,$12,$AD,$AE,$06,$80,$E6,$FD,$A2<br />
dc.b $6C,$F2<br />
MusCreditsDD59: dc.b $80,$0C,$C4,$06,$80,$C6,$80,$C4,$80,$C9,$80,$C9<br />
dc.b $80,$CB,$CD,$80,$0C,$80,$CB,$18,$C6,$06,$80,$C9<br />
dc.b $C9,$80,$CB,$0C,$80,$12,$80,$1E,$C7,$06,$C9,$C7<br />
dc.b $CB,$80,$C9,$80,$C7,$C9,$80,$C6,$E7,$C6,$30,$E7<br />
dc.b $18,$80,$18,$E3<br />
MusCreditsDD8D: dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
dc.b $06,$AB,$9F,$0C,$E3<br />
MusCreditsDD9D: dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$B6,$80,$18<br />
dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$30,$E7,$E3<br />
MusCreditsDDB5: dc.b $BF,$06,$BD,$BF,$12,$C2,$BF,$0C,$C1,$80,$06,$12<br />
dc.b $C4,$0C,$C2,$06,$80,$C9,$C6,$3C,$80,$06,$0C,$C7<br />
dc.b $12,$C6,$C4,$06,$C2,$C1,$18,$E3<br />
MusCreditsDDD5: dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$E3<br />
MusCreditsDDEA: dc.b $A2,$0C,$AE,$AC,$08,$AE,$04,$AC,$08,$A9,$04,$A7<br />
dc.b $08,$04,$E3<br />
MusCreditsDDF9: dc.b $80,$0C,$B1,$AE,$06,$06,$AC,$0C,$80,$B0,$AE,$06<br />
dc.b $06,$AC,$0C,$E3<br />
MusCreditsDE09: dc.b $AE,$AC,$06,$06,$AA,$0C,$80,$AC,$0C,$06,$06,$AE<br />
dc.b $AC,$E3<br />
MusCreditsDE17: dc.b $BA,$04,$80,$08,$B8,$18,$B5,$B1,$E3<br />
MusCreditsDE20: dc.b $AE,$06,$80,$AE,$80,$A9,$80,$A9,$80,$E3<br />
MusCreditsDE2A: dc.b $8A,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $E3<br />
MusCred_FM3: dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$18,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $B8,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $BD,$3C,$E9,$E8,$E6,$02,$E1,$03,$EF,$04,$E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$09,$E9,$0C,$E6,$FD,$E0,$40<br />
dc.b $F0,$06,$01,$05,$04<br />
dc.b $E1,$00<br />
- dc.b $9F,$0C,$AB,$06,$80,$A9,$80,$AB,$9F,$80,$9F,$AB<br />
dc.b $80,$A9,$80,$AB,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $9D,$0C,$A9,$06,$80,$A8,$80,$A9,$9C,$80,$9C,$A8<br />
dc.b $80,$A6,$80,$A8,$0C<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0D,$E6,$FB,$E0,$C0,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0F,$E0,$80,$E6,$0B,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$48,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$0C<br />
dc.b $F0,$18,$01,$03,$04<br />
dc.b $E6,$F3,$E0,$C0,$EF,$14,$A2,$14,$A4,$04,$A5,$04<br />
dc.b $80,$08,$A9,$04,$80,$08,$A8,$04,$80,$08,$A9,$04<br />
dc.b $80,$08,$AC,$08,$A9,$10<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$18,$E9,$F4,$E6,$08,$F4,$E0,$40,$80,$60,$80<br />
dc.b $30,$C6,$06,$80,$C2,$0C,$C4,$09,$C2,$03,$BF,$0C<br />
dc.b $80,$60,$80,$3C,$80,$60,$EF,$1B,$E6,$FB,$E0,$C0<br />
dc.b $E8,$06,$C4,$06,$06,$C6,$C9,$C9,$C6,$E8,$00,$CD<br />
dc.b $0C,$E8,$06,$C9,$06,$C6,$C9,$0C,$80,$80,$12,$EF<br />
dc.b $1C,$E8,$00,$BD,$BA,$0C,$E8,$06,$EF,$1B,$CE,$06<br />
dc.b $CE,$80,$CE,$80,$CE,$E8,$00,$CF,$0C,$D0,$80,$E8<br />
dc.b $06,$D0,$06,$06,$D2,$D0,$E8,$00,$CD,$0C,$E8,$06<br />
dc.b $C9,$06,$C6,$C9,$0C,$E8,$00,$EF,$1C,$80,$1E,$C2<br />
dc.b $0C,$C2,$BD,$06,$80,$60,$80,$60,$EF,$00,$E9,$18<br />
dc.b $80,$60,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC,$06<br />
dc.b $AE,$B1,$80,$B4,$B1,$80,$B1,$80,$60,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$60,$EF,$22,$E9,$DC,$E6,$FF,$E0,$80<br />
dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $CD,$30,$CB,$18,$CD,$0C,$CB,$C9,$30,$CE,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$FC,$80,$C4,$80,$C4,$80,$C6,$18,$08,$C4,$04<br />
dc.b $E9,$0C,$E6,$FF,$E0,$C0,$EF,$00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $CB,$12,$CB,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $D0,$12,$D0,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$CB,$12,$80,$06,$CB,$80,$CA,$12,$CB,$CA<br />
dc.b $0C,$C5,$18,$C8,$CB,$D1,$80,$0C,$CD,$80,$CD,$12<br />
dc.b $CC,$CD,$06,$80,$E6,$F8,$EF,$01,$E1,$03,$A2,$6C<br />
dc.b $F2<br />
MusCreditsDFF2: dc.b $80,$60,$BC,$06,$BD,$BC,$B8,$BA,$B6,$0C,$B8,$B3<br />
dc.b $B3,$06,$B6,$0C,$B8,$E3<br />
MusCreditsE004: dc.b $80,$0C,$CD,$04,$80,$10,$CD,$04,$80,$0C,$CD,$0C<br />
dc.b $CE,$08,$CD,$04,$80,$18,$80,$0C,$CB,$04,$80,$10<br />
dc.b $CB,$04,$80,$0C,$CB,$0C,$CD,$08,$CB,$04,$80,$18<br />
- dc.b $80,$0C,$C9,$04,$80,$10,$C9,$04,$80,$0C,$C9,$0C<br />
dc.b $CB,$08,$C9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E3<br />
MusCreditsE040: dc.b $80,$18,$B8,$0B,$80,$0D,$BA,$0C,$0B,$80,$19,$BD<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE051: dc.b $80,$0C,$C4,$80,$C4,$80,$C6,$80,$C6,$E3<br />
MusCreditsE05B: dc.b $CD,$06,$80,$CD,$80,$CA,$80,$CA,$80,$E3<br />
MusCreditsE065: dc.b $EF,$05,$E9,$F4,$C6,$60,$CB,$CD,$E7,$CD,$C6,$60<br />
dc.b $D0,$D0,$24,$D2,$60,$E7,$3C,$E3<br />
MusCred_FM4: dc.b $80,$60,$E9,$FB,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$1D,$E6,$02,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B5,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B8,$3C,$E6,$06,$EF,$05<br />
dc.b $F0,$02,$01,$FE,$04<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E9,$F4,$E6,$F7<br />
dc.b $F0,$0C,$01,$FB,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$25,$C3,$06,$C3,$80,$0C,$C3,$06,$C3,$05,$80<br />
dc.b $0D,$C3,$06,$C5,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$05,$F4,$E1,$02,$E0<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$0C,$80,$60,$EF,$10,$E6,$F7,$E1,$00,$E0<br />
dc.b $40,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $B3,$B7,$06,$AE,$0C,$B1,$B3,$B7,$06,$80,$B7,$AE<br />
dc.b $0C,$B1,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $EF,$15,$E6,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
- dc.b $EF,$14,$80,$4E,$E0,$40,$A1,$12,$A2,$06,$E0,$C0<br />
dc.b $EF,$16,$80,$30,$80,$06,$BA,$08,$B9,$04,$B8,$08<br />
dc.b $B7,$04,$B6,$08,$B5,$04<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E9,$F4,$E6,$02,$E0,$C0<br />
dc.b $F0,$01,$01,$03,$03<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$1E,$E0,$40,$E6,$FE,$E9,$F4,$F4,$E8<br />
dc.b $06,$80,$0C,$C1,$06,$12,$18,$C4,$06,$12,$0C,$EF<br />
dc.b $1C,$E0,$C0,$E6,$FA,$E8,$00,$C6,$E8,$06,$E6,$06<br />
dc.b $EF,$1E,$E0,$40,$C2,$06,$12,$18,$C4,$06,$12,$18<br />
dc.b $C1,$06,$12,$18,$C4,$06,$12,$0C,$EF,$1A,$E0,$C0<br />
dc.b $E9,$0C,$C6,$06,$C6,$80,$C6,$80,$C6,$E8,$00,$C7<br />
dc.b $0C,$C8,$06,$EF,$1E,$E0,$40,$E9,$F4,$E8,$06,$80<br />
dc.b $C4,$06,$12,$0C,$80,$60,$EF,$20,$E9,$18,$E6,$FA<br />
dc.b $E0,$C0,$E8,$00,$B4,$03,$E7,$B6,$5D,$B3,$03,$E7<br />
dc.b $B5,$5D,$B1,$03,$E7,$B3,$5D,$B3,$03,$E7,$B5,$5D<br />
dc.b $80,$60,$EF,$22,$E0,$40,$E9,$E8,$E6,$04,$80,$30<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $C9,$30,$C8,$18,$C9,$0C,$C8,$C6,$30,$C9,$80,$0C<br />
dc.b $C1,$80,$C1,$80,$C2,$80,$C2,$E6,$04,$80,$C1,$80<br />
dc.b $C1,$80,$C2,$80,$C2,$E6,$FC,$80,$C1,$80,$C1,$80<br />
dc.b $C2,$18,$08,$C1,$04,$E9,$0C,$E6,$FF,$E0,$C0,$EF<br />
dc.b $00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $C8,$12,$C8,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $CB,$12,$CB,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E1,$03,$E6,$08,$F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $E6,$F0,$EF,$01<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $A2,$6C,$F2<br />
MusCreditsE22D: dc.b $A2,$14,$A4,$04,$A5,$04,$80,$08,$A9,$04,$80,$08<br />
dc.b $A8,$04,$80,$08,$A9,$04,$80,$08,$AC,$08,$A9,$10<br />
dc.b $E3<br />
MusCreditsE246: dc.b $80,$0C<br />
dc.b $C9,$04,$80,$10<br />
dc.b $C9,$04,$80,$0C<br />
dc.b $C9,$0C<br />
dc.b $CB,$08<br />
dc.b $C9,$04,$80,$18,$80,$0C<br />
dc.b $C8,$04,$80,$10<br />
dc.b $C8,$04,$80,$0C<br />
dc.b $C8,$0C<br />
dc.b $C9,$08<br />
dc.b $C8,$04,$80,$18,$80,$0C<br />
<br />
if 1==1<br />
; this part of the original credits music (CNZ PSG) sounds buggy (dissonant)<br />
dc.b $C6,$04,$80,$10<br />
dc.b $C6,$04,$80,$0C<br />
dc.b $C6,$0C<br />
dc.b $C8,$08<br />
dc.b $C6,$04,$80,$18,$80,$0C<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $C7,$08<br />
else<br />
; replace the above block of notes with this to fix it.<br />
; (I'm not sure why, but the notes $C6 and $C7 are broken here,<br />
; so I've replaced them with pitch-shifted $C8s)<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$10 ; $C6<br />
dc.b $C8,$04,$80,$0C ; $C6<br />
dc.b $C8,$0C ; $C6<br />
dc.b $E1,0<br />
dc.b $C8,$08<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$24 ; $C6<br />
dc.b $E1,0<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $E1,-32<br />
dc.b $C8,$08 ; $C7<br />
dc.b $E1,0<br />
endif<br />
<br />
dc.b $C5,$04,$80,$18<br />
dc.b $E3<br />
MusCreditsE28F: dc.b $EF,$25,$80,$0C,$D0,$D4,$D7,$DB,$0C,$80,$06,$DB<br />
dc.b $0C,$DC,$06,$DB,$0C,$DD,$60,$DE,$0C,$80,$DE,$80<br />
dc.b $80,$06,$DD,$12,$DE,$0C,$E3<br />
MusCreditsE2AE: dc.b $80,$18,$B5,$0B,$80,$0D,$B7,$0C,$0B,$80,$19,$BA<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE2BF: dc.b $C3,$05,$80,$13,$C3,$12,$C3,$05,$E3<br />
MusCreditsE2C8: dc.b $CA,$06,$80,$CA,$80,$C6,$80,$C6,$80,$E3<br />
MusCreditsE2D2: dc.b $AF,$0C,$B3,$06,$B6,$0C,$AF,$B1,$06,$80,$B1,$0C<br />
dc.b $B5,$06,$B8,$0C,$B1,$06,$80,$B6,$0C,$BA,$06,$B1<br />
dc.b $0C,$B5,$B6,$BA,$06,$80,$BA,$AF,$0C,$B3,$B5,$B8<br />
dc.b $06,$B2,$0C,$B3,$B5,$B8,$06,$80,$B8,$B2,$0C,$B5<br />
dc.b $E3<br />
MusCred_FM5: dc.b $E9,$E8,$E6,$F8,$E1,$05,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$18,$E6,$08,$E1,$00,$EF,$02<br />
dc.b $F0,$0C,$01,$FC,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B1,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B5,$3C,$E9,$F4,$E6,$07<br />
dc.b $F0,$30,$01,$04,$04<br />
dc.b $EF,$06<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E6,$F6<br />
dc.b $F0,$0C,$01,$05,$04<br />
dc.b $E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$25,$C6,$06,$C6,$80,$0C,$C6,$06,$C6,$05,$80<br />
dc.b $0D,$C6,$06,$C8,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$E6,$05,$F4,$80,$01,$EF,$0C,$E1<br />
dc.b $FE,$E0,$40,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $23,$80,$0C,$80,$60,$EF,$11,$E9,$F4,$E6,$F4,$E1<br />
dc.b $00,$E0,$C0<br />
dc.b $F0,$06,$01,$06,$05<br />
dc.b $80,$60,$80,$30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60<br />
dc.b $80,$06,$CB,$80,$CB,$C9,$80,$C9,$80,$C7,$80,$C7<br />
dc.b $80,$C6,$03,$80,$C6,$80,$09,$80,$06,$80,$60,$80<br />
dc.b $30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60,$EF,$16,$E9<br />
dc.b $0C,$E6,$04,$F4,$E0,$80,$80,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
dc.b $80,$2F,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$30,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$60,$EF,$19,$E9,$F4,$E0,$C0,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$27,$B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$2A,$80,$60,$EF,$1E,$E9,$F4,$E8,$06<br />
- dc.b $80,$0C,$C4,$06,$12,$18,$C8,$06,$12,$0C,$80,$C6<br />
dc.b $06,$12,$18,$C8,$06,$12,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$20,$E8,$00,$E9,$18,$E6,$FA,$B8,$03<br />
dc.b $E7,$BA,$5D,$B6,$03,$E7,$B8,$5D,$B4,$03,$E7,$B6<br />
dc.b $5D,$B6,$03,$E7,$B8,$5D,$80,$60,$EF,$22,$E9,$F4<br />
dc.b $E6,$05<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$A7,$04,$A9,$08,$AC,$04,$B1,$30,$80,$0C<br />
dc.b $B1,$08,$80,$04,$B3,$08,$B1,$10,$B5,$08,$B5,$04<br />
dc.b $80,$08,$B0,$34,$80,$0C,$B0,$B5,$08,$04,$80,$08<br />
dc.b $B1,$04,$AE,$24,$80,$0C,$AE,$08,$80,$04,$B0,$08<br />
dc.b $AE,$04,$B1,$0C,$AF,$08,$AD,$4C,$80,$0C,$B1,$08<br />
dc.b $80,$04,$B3,$08,$80,$04,$B1,$08,$80,$04,$B5,$08<br />
dc.b $B5,$04,$80,$08,$B0,$1C,$80,$0C,$B5,$18,$B8,$08<br />
dc.b $B5,$04,$BA,$18,$80,$0C,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$04,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$F8,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$AA,$14,$A9,$04,$E6,$0C,$EF,$23,$E1,$03<br />
dc.b $E6,$F7,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E6,$09<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $F2<br />
MusCreditsE4CD: dc.b $80,$1E,$EF,$14,$A4,$12,$A5,$06,$EF,$16,$80,$30<br />
dc.b $80,$06,$BD,$08,$BC,$04,$BB,$08,$BA,$04,$B9,$08<br />
dc.b $B8,$04,$E3<br />
MusCreditsE4E8: dc.b $80,$18,$B1,$0B,$80,$0D,$B3,$0C,$0B,$80,$19,$B6<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE4F9: dc.b $C6,$05,$80,$13,$C6,$12,$C6,$05,$E3<br />
MusCreditsE502: dc.b $80,$60,$AC,$06,$80,$AC,$0C,$AE,$06,$80,$AE,$0C<br />
dc.b $AF,$06,$E3<br />
MusCred_PSG1: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG1)<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$F4,$E6,$FE,$F5,$01,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $AE,$B3,$06,$AC,$0C,$AE,$AE,$B3,$06,$80,$B3,$AB<br />
dc.b $0C,$AE,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $F5,$0B,$80,$04,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$20,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$F5,$00,$E8,$06,$E9,$F4,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$80,$C2,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$04,$80,$C2,$80,$0C,$C2,$80,$60,$F5,$08,$E9<br />
dc.b $04,$EC,$02,$E8,$06<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F0,$EC,$FF,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $E9,$18,$EC,$02,$B5,$30,$B3,$18,$B5,$0C,$B3,$B1<br />
dc.b $30,$B6,$EC,$FE,$80,$0C,$B8,$80,$B8,$80,$BA,$80<br />
dc.b $BA,$EC,$03,$C4,$18,$C1,$BD,$BF,$0C,$80,$EC,$FC<br />
dc.b $80,$B8,$80,$B8,$80,$BA,$18,$08,$B8,$04,$E9,$F4<br />
dc.b $EC,$01,$F5,$05<br />
- dc.b $80,$60<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$C8,$12,$80,$06,$C8,$80,$C6,$12,$C8,$C6<br />
dc.b $0C,$C1,$18,$C5,$C8,$CB,$80,$0C,$CA,$80,$CA,$12<br />
dc.b $C9,$CA,$06,$80,$09,$E9,$30,$EC,$FC,$F6<br />
dc.w z80_ptr(MusCreditsE770)<br />
dc.b $F2<br />
MusCreditsE618: dc.b $80,$0C,$BD,$06,$12,$18,$C4,$06,$12,$0C,$80,$C2<br />
dc.b $06,$12,$18,$C4,$06,$12,$0C,$E3<br />
MusCreditsE62C: dc.b $80,$60,$80,$0C,$C2,$80,$C2,$80,$E3<br />
MusCreditsE635: dc.b $AC,$0C,$AF,$06,$B3,$0C,$AC,$AC,$06,$80,$AC,$0C<br />
dc.b $AF,$06,$B5,$0C,$AC,$06,$80,$06,$B1,$0C,$B6,$06<br />
dc.b $AE,$0C,$B1,$B3,$B6,$06,$80,$B6,$AA,$0C,$AF,$AF<br />
dc.b $B5,$06,$AC,$0C,$AF,$B2,$B5,$06,$80,$B5,$AE,$0C<br />
dc.b $B2,$E3<br />
MusCred_PSG2: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG2)<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$0C,$EC,$FD,$F5,$04,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
dc.b $F0,$03,$02,$01,$05<br />
dc.b $F5,$0A,$E9,$E8,$EC,$02,$80,$30,$80,$80,$BD,$06<br />
dc.b $BF,$C6,$C2,$1E,$80,$60,$80,$06,$C6,$80,$C6,$C4<br />
dc.b $80,$C4,$80,$C3,$80,$C3,$80,$BF,$03,$80,$BF,$80<br />
dc.b $09,$80,$06,$80,$30,$80,$80,$BD,$06,$BF,$C6,$C2<br />
dc.b $1E,$80,$60,$F4<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$00,$EC,$FE,$E8,$06,$80,$60,$80,$0C,$BF,$80<br />
dc.b $BF,$80,$BF,$80,$BF,$80,$60,$80,$0C,$BF,$80,$BF<br />
dc.b $80,$BF,$04,$80,$BF,$80,$0C,$BF,$80,$60,$EC,$02<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F4,$EC,$FF,$E9,$E8,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $E9,$18,$EC,$02,$B1,$30,$B0,$18,$B1,$0C,$B0,$AE<br />
dc.b $30,$B1,$EC,$FE,$80,$0C,$B5,$80,$B5,$80,$B6,$80<br />
dc.b $B6,$EC,$03,$80,$B1,$80,$B1,$80,$B1,$80,$B1,$EC<br />
dc.b $FC,$80,$B1,$80,$B1,$80,$B1,$18,$08,$B1,$04,$EC<br />
dc.b $01,$E9,$18,$F5,$05,$E1,$01,$80,$60,$80,$80,$80<br />
dc.b $80,$80,$80,$0C,$CD,$06,$80,$D4,$CD,$80,$0C,$CD<br />
dc.b $06,$80,$D4,$CD,$80,$18,$80,$54,$E9,$24,$EC,$FD<br />
MusCreditsE770: dc.b $F5,$03,$80,$06<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$FF<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$01<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusCred_PSG3: dc.b $F3,$E7,$80,$60,$F5,$02<br />
- dc.b $C6,$0C,$0C,$0C,$06,$06,$0C,$0C,$06,$06,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$1F<br />
dc.w z80_ptr(-)<br />
dc.b $0C,$F5,$03,$C6,$F5,$02<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $06,$06,$06,$06<br />
dc.b $F7,$01,$04<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$04,$EC,$02<br />
- dc.b $E8,$03,$C6,$06,$06,$E8,$00,$0C<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$02,$EC,$FD<br />
- dc.b $80,$0C,$C6,$06,$80,$07,$C6,$06,$80,$11,$C6,$0C<br />
dc.b $80,$06,$C6,$0C,$80,$06,$C6,$80<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$02<br />
- dc.b $C6,$0C,$08,$04<br />
dc.b $F7,$00,$18<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$0C,$0C,$08,$04<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$04,$EC,$02<br />
- dc.b $C6,$06,$06,$0C<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EC,$FF<br />
- dc.b $F5,$01,$C6,$0C,$F5,$02,$EC,$FF,$08,$F5,$01,$EC<br />
dc.b $01,$04<br />
dc.b $F7,$00,$27<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$FF,$F5,$04<br />
- dc.b $E8,$03,$C6,$0C,$E8,$0C,$0C<br />
dc.b $F7,$00,$1E<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$03,$C6,$06,$E8,$0E,$12,$E8,$03,$0C,$E8,$0F<br />
dc.b $0C,$F2<br />
MusCred_DAC: dc.b $82,$06,$82,$82,$82,$82,$0C,$06,$0C,$06,$0C,$0C<br />
dc.b $0C<br />
- dc.b $81,$18,$82<br />
dc.b $F7,$00,$0E<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C<br />
- dc.b $82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EA,$EA,$F8<br />
dc.w z80_ptr(MusCreditsEA6E)<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$82,$06,$82,$82,$82,$81,$0C,$82,$06,$82<br />
dc.b $81,$81,$82,$82,$82,$82<br />
- dc.b $81,$18,$82,$81,$82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$82,$82,$82,$06,$82,$8C,$8C,$8D,$8D<br />
dc.b $8E,$8E,$F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$18,$82,$0C,$81,$18,$82,$0C,$82,$82,$06,$82<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$0C,$82,$82,$82,$8D,$06,$8D,$8E,$8E,$82,$06<br />
dc.b $82,$8D,$0C,$82,$0C,$82,$06,$82,$80,$82,$82,$0C<br />
MusCreditsE8E5: dc.b $82,$0C,$82,$82,$06,$82,$8D,$8D<br />
- dc.b $81,$0C,$8F,$06,$90,$82,$0C,$90,$06,$91,$81,$0C<br />
dc.b $8F,$06,$91,$82,$0C,$8F,$06,$91<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$8F,$06,$91,$82,$0C,$8F,$06,$91,$8C,$06<br />
dc.b $03,$03,$8D,$06,$8D,$8D,$8E,$8E,$8E,$81,$06,$0C<br />
dc.b $82,$06,$80,$0C,$81,$82,$8E,$82,$06,$82,$82,$82<br />
- dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$12,$8C,$06<br />
dc.b $82,$0C,$83,$06,$81,$80<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$06,$82,$06<br />
dc.b $81,$0C,$06,$82,$0C,$08,$04,$EA,$CD,$82,$30,$82<br />
dc.b $0C,$82,$82,$82,$08,$04,$F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$04,$82,$08,$04<br />
dc.b $08,$04,$04,$04,$04,$08,$04,$EA,$C5<br />
- dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82,$0C,$06<br />
dc.b $06,$81,$0C,$82,$06,$82,$82,$82,$8D,$0C,$82,$0C<br />
dc.b $0C,$0C,$06,$06<br />
- dc.b $81,$0C,$81,$82,$80,$81,$81,$82,$83<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$82,$82,$82,$82,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $81,$06,$81,$82,$82,$81,$82,$81,$81,$82,$02,$82<br />
dc.b $04,$81,$0C,$06,$82,$0C,$06,$06,$81,$18,$82,$0C<br />
dc.b $81,$81,$18,$82,$81,$06,$81,$12,$82,$0C,$81,$81<br />
dc.b $18,$82,$81,$18,$82,$0C,$81,$81,$18,$82,$81,$06<br />
dc.b $81,$12,$82,$0C,$0C,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $82,$02,$04,$81,$0C,$06,$0C,$82,$02,$04,$81,$0C<br />
dc.b $06,$0C,$82,$06,$82,$82,$82,$EA,$C0,$81,$0C,$82<br />
dc.b $81,$82,$81,$82,$81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$0F<br />
dc.w z80_ptr(-)<br />
dc.b $81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$13<br />
dc.w z80_ptr(-)<br />
dc.b $82,$08,$0C,$04,$81,$0C,$82,$81,$82,$81,$0C,$82<br />
dc.b $81,$06,$80,$02,$82,$82,$82,$09,$82,$03<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$06,$80,$02,$82,$82,$82,$09,$82<br />
dc.b $03<br />
dc.b $F7,$01,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$82,$81,$06,$82,$12,$82,$0C,$81<br />
dc.b $F2<br />
MusCreditsEA6E: dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$83,$E3<br />
MusCreditsEA84: dc.b $81,$18,$82,$0C,$81,$18,$0C,$82,$81,$81,$18,$82<br />
dc.b $0C,$81,$12,$81,$82,$18,$81,$82,$0C,$81,$18,$0C<br />
dc.b $82,$81,$E3<br />
MusCreditsEA9F: dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$0C,$82,$04,$81<br />
dc.b $0C,$82,$81,$81,$08,$0C,$04,$82,$0C,$81,$08,$0C<br />
dc.b $82,$04,$81,$0C,$82,$82,$08,$04,$E3,$81,$06,$80<br />
dc.b $03,$81,$81,$06,$82,$81,$06,$80,$03,$81,$81,$06<br />
dc.b $82,$03,$82,$81,$06,$80,$03,$81,$81,$06,$82,$E3<br />
MusCred_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$01,$1F,$1F,$FF,$0F,$17,$27,$28,$80<br />
dc.b $08,$09,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$25,$0E,$30,$84<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$0B,$0D,$19,$0B,$80,$80<br />
dc.b $08,$0A,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$24,$13,$2D,$80<br />
dc.b $3D,$01,$51,$21,$01,$12,$14,$14,$0F,$0A,$05,$05<br />
dc.b $05,$00,$00,$00,$00,$2B,$2B,$2B,$1B,$19,$80,$80,$80<br />
dc.b $04,$57,$70,$02,$50,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$06,$00,$0A,$0A,$00,$00,$0F,$0F,$1A,$10,$80,$80<br />
dc.b $35,$01,$13,$01,$00,$1F,$18,$1D,$19,$00,$06,$09<br />
dc.b $0D,$00,$02,$00,$03,$00,$15,$06,$16,$1E,$83,$80,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1A,$16,$88,$88<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$14,$0F,$37,$80<br />
dc.b $3B,$0F,$01,$06,$02,$DF,$1F,$1F,$DF,$0C,$0A,$00<br />
dc.b $03,$0F,$00,$00,$01,$F3,$55,$05,$5C,$22,$22,$20,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1C,$14,$84,$80<br />
dc.b $3A,$69,$50,$70,$60,$1C,$1A,$18,$18,$10,$02,$0C<br />
dc.b $09,$08,$06,$06,$03,$F9,$06,$56,$06,$28,$14,$15,$00<br />
dc.b $3D,$00,$02,$01,$01,$4C,$50,$0F,$12,$0C,$00,$02<br />
dc.b $05,$01,$00,$00,$00,$28,$2A,$29,$19,$1A,$06,$00,$00<br />
dc.b $2C,$71,$31,$71,$31,$1F,$1F,$16,$16,$00,$00,$0F<br />
dc.b $0F,$00,$00,$0F,$0F,$00,$00,$FA,$FA,$15,$14,$00,$00<br />
dc.b $18,$37,$31,$32,$31,$9E,$1C,$DC,$9C,$0D,$04,$06<br />
dc.b $01,$08,$03,$0A,$05,$B6,$36,$B6,$28,$2C,$14,$22,$00<br />
dc.b $3D,$01,$02,$02,$02,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$24,$18,$18,$18,$1C,$82,$82,$82<br />
dc.b $32,$71,$33,$0D,$01,$5F,$5F,$99,$94,$05,$05,$05<br />
dc.b $07,$02,$02,$02,$02,$11,$11,$11,$72,$23,$26,$2D,$80<br />
dc.b $3A,$32,$52,$01,$31,$1F,$1F,$1F,$18,$01,$00,$1F<br />
dc.b $00,$00,$00,$0F,$00,$5A,$03,$0F,$1A,$3B,$4F,$30,$00<br />
dc.b $3C,$42,$32,$41,$41,$12,$12,$12,$12,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$06,$06,$08,$08,$24,$24,$08,$08<br />
dc.b $31,$34,$30,$35,$31,$DF,$9F,$DF,$9F,$0C,$0C,$07<br />
dc.b $09,$07,$07,$07,$08,$2F,$1F,$1F,$2F,$17,$14,$32,$80<br />
dc.b $3D,$01,$01,$01,$01,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$20,$1A,$1A,$1A,$19,$84,$84,$84<br />
dc.b $24,$70,$30,$74,$38,$12,$1F,$1F,$1F,$05,$05,$03<br />
dc.b $03,$05,$05,$03,$03,$36,$26,$2C,$2C,$0A,$06,$08,$08<br />
dc.b $3A,$01,$01,$01,$02,$8D,$07,$07,$52,$09,$00,$00<br />
dc.b $03,$01,$02,$02,$00,$5F,$0F,$0F,$2F,$18,$18,$22,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$03,$03,$08,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$17,$20,$28,$80<br />
dc.b $20,$7A,$00,$31,$00,$9F,$DC,$D8,$DF,$10,$04,$0A<br />
dc.b $04,$0F,$08,$08,$08,$5F,$BF,$5F,$BF,$14,$17,$2B,$80<br />
dc.b $3A,$61,$51,$08,$02,$5D,$5D,$5D,$50,$04,$1F,$0F<br />
dc.b $1F,$00,$00,$00,$00,$1F,$0F,$5F,$0F,$22,$22,$1E,$80<br />
dc.b $02,$01,$02,$55,$04,$92,$8E,$8D,$54,$0D,$00,$0C<br />
dc.b $03,$00,$00,$00,$00,$FF,$0F,$2F,$5F,$16,$1D,$2A,$80<br />
dc.b $02,$75,$73,$71,$31,$1F,$96,$58,$9F,$01,$03,$1B<br />
dc.b $08,$01,$01,$04,$05,$FF,$3F,$2F,$2F,$24,$30,$29,$80<br />
dc.b $20,$66,$60,$65,$60,$DF,$9F,$DF,$1F,$00,$09,$06<br />
dc.b $0C,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$1C,$16,$3A,$80<br />
dc.b $0D,$32,$06,$08,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$86,$80,$8D<br />
dc.b $38,$3A,$11,$0A,$02,$D4,$50,$14,$0E,$05,$02,$08<br />
dc.b $88,$00,$00,$00,$00,$99,$09,$09,$1A,$2D,$19,$2C,$86<br />
dc.b $0D,$32,$02,$04,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$8B,$86,$93<br />
dc.b $3A,$20,$60,$23,$01,$1E,$1F,$1F,$1F,$0A,$0B,$0A<br />
dc.b $0A,$05,$0A,$07,$08,$A4,$96,$85,$78,$21,$28,$25,$00<br />
dc.b $3A,$32,$32,$56,$42,$8D,$15,$4F,$52,$06,$07,$08<br />
dc.b $04,$02,$00,$00,$00,$18,$28,$18,$28,$19,$2A,$20,$00<br />
dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$19,$13,$37,$80<br />
dc.b $3D,$01,$02,$02,$02,$14,$8C,$0E,$0E,$08,$02,$05<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$1A,$80,$80,$80<br />
; end of Mus_Credits<br />
<br />
; ------------------------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ------------------------------------------------------------------------------------------<br />
; WARNING the sound driver treats certain sounds specially<br />
; going by the ID of the sound.<br />
; SndID_Ring, SndID_RingLeft, SndID_Gloop, SndID_SpindashRev<br />
; are referenced by the sound driver directly.<br />
; If needed you can change this in s2.sounddriver.asm<br />
<br />
<br />
; NOTE: the exact order of this list determines the priority of each sound, since it determines the sound's SndID.<br />
; a sound can get dropped if a higher-priority sound is already playing.<br />
; the rules for sound priority are currently unknown, but you can generally swap pointer lines around to resolve priority conflicts.<br />
; loc_FEE91: SoundPoint:<br />
SoundIndex:<br />
SndPtr_Jump: rom_ptr_z80 Sound20 ; jumping sound<br />
SndPtr_Checkpoint: rom_ptr_z80 Sound21 ; checkpoint ding-dong sound<br />
SndPtr_SpikeSwitch: rom_ptr_z80 Sound22 ; spike switch sound<br />
SndPtr_Hurt: rom_ptr_z80 Sound23 ; hurt sound<br />
SndPtr_Skidding: rom_ptr_z80 Sound24 ; skidding sound<br />
SndPtr_BlockPush: rom_ptr_z80 Sound25 ; block push sound<br />
SndPtr_HurtBySpikes: rom_ptr_z80 Sound26 ; spiky impalement sound<br />
SndPtr_Sparkle: rom_ptr_z80 Sound27 ; sparkling sound<br />
SndPtr_Beep: rom_ptr_z80 Sound28 ; short beep<br />
SndPtr_Bwoop: rom_ptr_z80 Sound29 ; bwoop<br />
SndPtr_Splash: rom_ptr_z80 Sound2A ; splash sound<br />
SndPtr_Swish: rom_ptr_z80 Sound2B ; swish<br />
SndPtr_BossHit: rom_ptr_z80 Sound2C ; boss hit<br />
SndPtr_InhalingBubble: rom_ptr_z80 Sound2D ; inhaling a bubble<br />
SndPtr_ArrowFiring:<br />
SndPtr_LavaBall: rom_ptr_z80 Sound2E ; arrow firing<br />
SndPtr_Shield: rom_ptr_z80 Sound2F ; shield sound<br />
SndPtr_LaserBeam: rom_ptr_z80 Sound30 ; laser beam<br />
SndPtr_Zap: rom_ptr_z80 Sound31 ; zap<br />
SndPtr_Drown: rom_ptr_z80 Sound32 ; drownage<br />
SndPtr_FireBurn: rom_ptr_z80 Sound33 ; fire + burn<br />
SndPtr_Bumper: rom_ptr_z80 Sound34 ; bumper bing<br />
SndPtr_Ring:<br />
SndPtr_RingRight: rom_ptr_z80 Sound35 ; ring sound<br />
SndPtr_SpikesMove: rom_ptr_z80 Sound36<br />
SndPtr_Rumbling: rom_ptr_z80 Sound37 ; rumbling<br />
rom_ptr_z80 Sound38<br />
SndPtr_Smash: rom_ptr_z80 Sound39 ; smash/breaking<br />
rom_ptr_z80 Sound3A ; nondescript ding<br />
SndPtr_DoorSlam: rom_ptr_z80 Sound3B ; door slamming shut<br />
SndPtr_SpindashRelease: rom_ptr_z80 Sound3C ; spindash unleashed<br />
SndPtr_Hammer: rom_ptr_z80 Sound3D ; slide-thunk<br />
SndPtr_Roll: rom_ptr_z80 Sound3E ; rolling sound<br />
SndPtr_ContinueJingle: rom_ptr_z80 Sound3F ; got continue<br />
SndPtr_CasinoBonus: rom_ptr_z80 Sound40 ; short bonus ding<br />
SndPtr_Explosion: rom_ptr_z80 Sound41 ; badnik bust<br />
SndPtr_WaterWarning: rom_ptr_z80 Sound42 ; warning ding-ding<br />
SndPtr_EnterGiantRing: rom_ptr_z80 Sound43 ; special stage ring flash (unused)<br />
SndPtr_BossExplosion: rom_ptr_z80 Sound44 ; thunk<br />
SndPtr_TallyEnd: rom_ptr_z80 Sound45 ; cha-ching<br />
SndPtr_RingSpill: rom_ptr_z80 Sound46 ; losing rings<br />
rom_ptr_z80 Sound47 ; chain pull chink-chink<br />
SndPtr_Flamethrower: rom_ptr_z80 Sound48 ; flamethrower<br />
SndPtr_Bonus: rom_ptr_z80 Sound49 ; bonus pwoieeew (unused)<br />
SndPtr_SpecStageEntry: rom_ptr_z80 Sound4A ; special stage entry<br />
SndPtr_SlowSmash: rom_ptr_z80 Sound4B ; slower smash/crumble<br />
SndPtr_Spring: rom_ptr_z80 Sound4C ; spring boing<br />
SndPtr_Blip: rom_ptr_z80 Sound4D ; selection blip<br />
SndPtr_RingLeft: rom_ptr_z80 Sound4E ; another ring sound (only plays in the left speaker?)<br />
SndPtr_Signpost: rom_ptr_z80 Sound4F ; signpost spin sound<br />
SndPtr_CNZBossZap: rom_ptr_z80 Sound50 ; mosquito zapper<br />
rom_ptr_z80 Sound51<br />
rom_ptr_z80 Sound52<br />
SndPtr_Signpost2P: rom_ptr_z80 Sound53<br />
SndPtr_OOZLidPop: rom_ptr_z80 Sound54 ; OOZ lid pop sound<br />
SndPtr_SlidingSpike: rom_ptr_z80 Sound55<br />
SndPtr_CNZElevator: rom_ptr_z80 Sound56<br />
SndPtr_PlatformKnock: rom_ptr_z80 Sound57<br />
SndPtr_BonusBumper: rom_ptr_z80 Sound58 ; CNZ bonusy bumper sound<br />
SndPtr_LargeBumper: rom_ptr_z80 Sound59 ; CNZ baaang bumper sound<br />
SndPtr_Gloop: rom_ptr_z80 Sound5A ; CNZ gloop / water droplet sound<br />
SndPtr_PreArrowFiring: rom_ptr_z80 Sound5B<br />
SndPtr_Fire: rom_ptr_z80 Sound5C<br />
SndPtr_ArrowStick: rom_ptr_z80 Sound5D ; chain clink<br />
SndPtr_Helicopter:<br />
SndPtr_WingFortress: rom_ptr_z80 Sound5E ; helicopter<br />
SndPtr_SuperTransform: rom_ptr_z80 Sound5F<br />
SndPtr_SpindashRev: rom_ptr_z80 Sound60 ; spindash charge<br />
SndPtr_Rumbling2: rom_ptr_z80 Sound61 ; rumbling<br />
SndPtr_CNZLaunch: rom_ptr_z80 Sound62<br />
SndPtr_Flipper: rom_ptr_z80 Sound63 ; CNZ blooing bumper<br />
SndPtr_HTZLiftClick: rom_ptr_z80 Sound64 ; HTZ track click sound<br />
SndPtr_Leaves: rom_ptr_z80 Sound65 ; kicking up leaves sound<br />
SndPtr_MegaMackDrop: rom_ptr_z80 Sound66 ; leaf splash?<br />
SndPtr_DrawbridgeMove: rom_ptr_z80 Sound67<br />
SndPtr_QuickDoorSlam: rom_ptr_z80 Sound68 ; door slamming quickly (seems unused)<br />
SndPtr_DrawbridgeDown: rom_ptr_z80 Sound69<br />
SndPtr_LaserBurst: rom_ptr_z80 Sound6A ; robotic laser burst<br />
SndPtr_Scatter:<br />
SndPtr_LaserFloor: rom_ptr_z80 Sound6B ; scatter<br />
SndPtr_Teleport: rom_ptr_z80 Sound6C<br />
SndPtr_Error: rom_ptr_z80 Sound6D ; error sound<br />
SndPtr_MechaSonicBuzz: rom_ptr_z80 Sound6E ; silver sonic buzz saw<br />
SndPtr_LargeLaser: rom_ptr_z80 Sound6F<br />
SndPtr_OilSlide: rom_ptr_z80 Sound70<br />
SndPtr__End:<br />
<br />
; There are many non-relative pointers in these sound effects,<br />
; so the sounds shouldn't simply be BINCLUDE'd.<br />
; They could be included as separate .asm files using "include" instead of "binclude",<br />
; but I wanted to minimize the number of included asm files.<br />
<br />
; some comments on what the various script commands do (after the header):<br />
; 0x00-0x7F sets the note duration (of the previous note and following notes)<br />
; 0x81-0xDF plays a note (the valid range may be smaller for PSG or DAC)<br />
; 0x80 plays silence<br />
; 0xE0-0xFF does special things. I won't list them here... search for "Coordination flags" sonic 2.<br />
<br />
; the FM voices (poorly named "ssamp" or "samples" below)<br />
; are 25 bytes each and go directly to YM2612 registers.<br />
; they can be hard to edit (there's an art to it)<br />
; but search for sonic "Voice editing" for more info if you want to try.<br />
<br />
; jumping sound<br />
Sound20: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$F400<br />
+ dc.b $F5,$00,$9E,$05,$F0,$02,$01,$F8,$65,$A3,$15,$F2<br />
<br />
; checkpoint ding-dong sound<br />
Sound21: dc.w z80_ptr(ssamp21),$0101<br />
dc.w $8005,z80_ptr(+),$0001<br />
ssamp21: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
+ dc.b $EF,$00,$BD,$06,$BA,$16,$F2<br />
<br />
; spike switch sound<br />
Sound22: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C0,$04,$CA,$04<br />
- dc.b $C0,$01,$EC<br />
dc.w $01F7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; hurt sound<br />
Sound23: dc.w z80_ptr(ssamp23),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B0,$07,$E7,$AD<br />
- dc.b $01,$E6<br />
dc.w $01F7,$002F,z80_ptr(-)<br />
dc.b $F2<br />
ssamp23: dc.b $30,$30,$30,$30,$30,$9E,$DC,$D8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$14,$14,$3C,$80<br />
<br />
; skidding sound<br />
Sound24: dc.w $0000,$0102 ; sound header... no sample and 2 script entries<br />
dc.w $80A0,z80_ptr(+),$F400 ; entry 1 header<br />
dc.w $80C0,z80_ptr(++),$F400 ; entry 2 header<br />
+ dc.b $F5,$00,$AF,$01,$80,$AF,$80,$03 ; script entry 1<br />
- dc.b $AF,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 1 end<br />
+ dc.b $F5,$00,$80,$01,$AD,$80,$AD,$80,$03 ; script entry 2<br />
- dc.b $AD,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 2 end<br />
<br />
; block push sound<br />
Sound25: dc.w z80_ptr(ssamp25),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$01,$8B,$0A,$80,$02,$F2<br />
ssamp25: dc.b $FA,$21,$10,$30,$32,$2F,$2F,$1F,$2F,$05,$09,$08<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
; spiky impalement sound<br />
Sound26: dc.w z80_ptr(ssamp26),$0101<br />
dc.w $8005,z80_ptr(+),$F200<br />
+ dc.b $EF,$00,$F0,$01,$01,$10,$FF,$CF,$05,$D7,$25,$F2<br />
ssamp26: dc.b $3B,$3C,$30,$39,$31,$DF,$1F,$1F,$DF,$04,$04,$05<br />
dc.b $01,$04,$04,$04,$02,$FF,$1F,$0F,$AF,$29,$0F,$20,$80<br />
<br />
; sparkling sound<br />
Sound27: dc.w z80_ptr(ssamp27),$0101<br />
dc.w $8004,z80_ptr(+),$0C1C<br />
+ dc.b $EF,$00,$C1,$05,$C4,$05,$C9,$2B,$F2<br />
ssamp27: dc.b $07,$73,$33,$33,$73,$0F,$19,$14,$1A,$0A,$0A,$0A<br />
dc.b $0A,$0A,$0A,$0A,$0A,$57,$57,$57,$57,$00,$00,$00,$00<br />
<br />
; short beep<br />
Sound28: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$E803<br />
+ dc.b $F5,$04,$CB,$04,$F2<br />
<br />
; bwoop<br />
Sound29: dc.w $0000,$0101<br />
dc.w $80A0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$E6,$35,$8E,$06,$F2<br />
<br />
; splash sound<br />
Sound2A: dc.w z80_ptr(ssamp2A),$0102<br />
dc.w $80C0,z80_ptr(+),$0000<br />
dc.w $8005,z80_ptr(++),$0003<br />
+ dc.b $F5,$00,$F3,$E7,$C2,$05,$C6,$05,$E7<br />
- dc.b $07,$EC,$01<br />
dc.w $E7F7,$000F,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$A6,$14,$F2<br />
ssamp2A: dc.b $00,$00,$02,$03,$00,$D9,$1F,$DF,$1F,$12,$14,$11<br />
dc.b $0F,$0A,$0A,$00,$0D,$FF,$FF,$FF,$FF,$22,$27,$07,$80<br />
<br />
; swish<br />
Sound2B: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$C6,$03,$80,$03,$C6,$01,$E7<br />
- dc.b $01,$EC,$01<br />
dc.w $E7F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; boss hit<br />
Sound2C: dc.w z80_ptr(smashsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$0C,$01<br />
- dc.b $81,$0A,$E6<br />
dc.w $10F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
smashsamp: dc.b $F9,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
<br />
; inhaling a bubble<br />
Sound2D: dc.w z80_ptr(ssamp2D),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$21,$6E,$A6,$07<br />
dc.b $80,$06,$F0,$01,$01,$44,$1E,$AD,$08,$F2<br />
ssamp2D: dc.b $35,$05,$08,$09,$07,$1E,$0D,$0D,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$1F,$2F,$1F,$15,$12,$12,$80<br />
<br />
; arrow firing<br />
Sound2E: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$C6,$01,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp2E: dc.b $FA,$02,$00,$03,$05,$12,$0F,$11,$13,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$2F,$0E,$1A,$80<br />
<br />
; shield sound<br />
Sound2F: dc.w z80_ptr(ssamp2F),$0101<br />
dc.w $8005,z80_ptr(+),$0C00<br />
+ dc.b $EF,$00,$80,$01,$A3,$05,$E7,$A4,$26,$F2<br />
ssamp2F: dc.b $30,$30,$30,$30,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$04,$14,$2C,$80<br />
<br />
; laser beam<br />
Sound30: dc.w z80_ptr(ssamp30),$0101 ; sound header... a voice and 1 script entry<br />
dc.w $8005,z80_ptr(+),$FB05 ; script entry header<br />
+ dc.b $EF,$00,$DF,$7F ; script start<br />
- dc.b $DF,$02,$E6 ; script continued<br />
dc.w $01F7,$001B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script end<br />
ssamp30: dc.b $83,$1F,$1F,$15,$1F,$1F,$1F,$1F,$1F,$00,$00,$00 ; voice<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$0B,$01,$16,$82 ; (fixed length)<br />
<br />
; zap<br />
Sound31: dc.w z80_ptr(ssamp31),$0101<br />
dc.w $8005,z80_ptr(+),$FB02<br />
+ dc.b $EF,$00,$B3,$05,$80,$01,$B3,$09,$F2<br />
ssamp31: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$05,$34,$10,$87<br />
<br />
; drownage<br />
Sound32: dc.w z80_ptr(ssamp32),$0102<br />
dc.w $8004,z80_ptr(++),$0C04<br />
dc.w $8005,z80_ptr(+),$0E02<br />
+ dc.b $EF,$00,$F0,$01,$01,$83,$0C<br />
- dc.b $8A,$05,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $80,$06,$EF,$00,$F0,$01,$01,$6F,$0E<br />
- dc.b $8D,$04,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp32: dc.b $35,$14,$04,$1A,$09,$0E,$11,$10,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$4F,$2F,$4F,$2F,$12,$12,$80<br />
<br />
; fire + burn<br />
Sound33: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$A7,$25,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; bumper bing<br />
Sound34: dc.w z80_ptr(ssamp34),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $8002,z80_ptr(+++),$0002<br />
+ dc.b $EF,$00,$F6<br />
dc.w z80_ptr(Sound34_3)<br />
+ dc.b $EF,$00,$E1,$07,$80,$01<br />
Sound34_3:<br />
dc.b $BA,$20,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
ssamp34: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$1F,$2B,$80,$80<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; ring sound<br />
Sound35: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$40,$C1,$05,$C4,$05,$C9,$1B,$F2<br />
<br />
<br />
Sound36: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C1,$07<br />
- dc.b $D0,$01,$EC<br />
dc.w $01F7,$000C,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; rumbling<br />
Sound37: dc.w z80_ptr(ssamp37),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$20,$08<br />
- dc.b $8B<br />
dc.w $0AF7,$0008,z80_ptr(-)<br />
- dc.b $8B,$10,$E6<br />
dc.w $03F7,$0009,z80_ptr(-)<br />
dc.b $F2<br />
ssamp37: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
<br />
Sound38: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$B4,$08<br />
- dc.b $B0,$02,$EC<br />
dc.w $01F7,$0003,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; smash/breaking<br />
Sound39: dc.w z80_ptr(smashsamp),$0104<br />
dc.w $8002,z80_ptr(+),$1000<br />
dc.w $8004,z80_ptr(+++),$0000<br />
dc.w $8005,z80_ptr(++),$1000<br />
dc.w $80C0,z80_ptr(s39s4),$0000<br />
+ dc.b $E0,$40,$80,$02,$F6<br />
dc.w z80_ptr(++)<br />
+ dc.b $E0,$80,$80,$01<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
s39s4: dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; nondescript ding<br />
Sound3A: dc.w z80_ptr(ssamp3A),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$AE,$08,$F2<br />
ssamp3A: dc.b $1C,$2E,$0F,$02,$02,$1F,$1F,$1F,$1F,$18,$14,$0F<br />
dc.b $0E,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$20,$1B,$80,$80<br />
<br />
; door slamming shut<br />
Sound3B: dc.w z80_ptr(ssamp3B),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$80,$A0,$06,$F2<br />
ssamp3B: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; spindash unleashed<br />
Sound3C: dc.w z80_ptr(ssamp3C),$0102<br />
dc.w $8005,z80_ptr(+),$9000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$F2<br />
+ dc.b $F5,$07,$80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$4F,$F2<br />
ssamp3C: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
<br />
; slide-thunk<br />
Sound3D: dc.w z80_ptr(ssamp3D),$0102<br />
dc.w $8005,z80_ptr(+),$100A<br />
dc.w $8004,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$60,$01,$A7,$08,$F2<br />
+ dc.b $80,$08,$EF,$01,$84,$22,$F2<br />
ssamp3D: dc.b $FA,$21,$19,$3A,$30,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
dc.b $FA,$31,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$1F,$2F,$2F,$0D,$01,$00,$80<br />
<br />
; rolling sound<br />
Sound3E: dc.w z80_ptr(ssamp3E),$0101<br />
dc.w $8004,z80_ptr(+),$0C05<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$09,$FF,$CA,$25,$F4<br />
- dc.b $E7,$E6,$01,$D0<br />
dc.w $02F7,$002A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3E: dc.b $3C,$00,$02,$44,$02,$1F,$1F,$1F,$15,$00,$00,$1F<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0D,$28,$00,$00<br />
<br />
; got continue<br />
Sound3F: dc.w z80_ptr(ssamp3F),$0103<br />
dc.w $8002,z80_ptr(+),$F406<br />
dc.w $8004,z80_ptr(++),$F406<br />
dc.w $8005,z80_ptr(+++),$F406<br />
+ dc.b $EF,$00,$C9,$07,$CD,$D0,$CB,$CE,$D2,$CD,$D0,$D4,$CE,$D2,$D5<br />
- dc.b $D0,$07,$D4,$D7,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$80,$07,$CD,$15,$CE,$D0,$D2<br />
- dc.b $D4,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$C9,$15,$CB,$CD,$CE<br />
- dc.b $D0,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3F: dc.b $14,$25,$36,$33,$11,$1F,$1F,$1F,$1F,$15,$1C,$18<br />
dc.b $13,$0B,$0D,$08,$09,$0F,$8F,$9F,$0F,$24,$0A,$05,$80<br />
<br />
; short bonus ding<br />
Sound40: dc.w z80_ptr(ssamp3F),$0102<br />
dc.w $8005,z80_ptr(++),$0008<br />
dc.w $8004,z80_ptr(+),$0008<br />
+ dc.b $E1,$03,$80,$02<br />
+ dc.b $EF,$00,$C4,$16,$F2<br />
<br />
; badnik bust<br />
Sound41: dc.w z80_ptr(ssamp41),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0002<br />
+ dc.b $F0,$03,$01,$72,$0B,$EF,$00,$BA,$16,$F2<br />
+ dc.b $F5,$01,$F3,$E7,$B0,$1B,$F2<br />
ssamp41: dc.b $3C,$0F,$03,$01,$01,$1F,$1F,$1F,$1F,$19,$19,$12<br />
dc.b $0E,$05,$00,$12,$0F,$0F,$FF,$7F,$FF,$00,$00,$80,$80<br />
<br />
; warning ding-ding<br />
Sound42: dc.w z80_ptr(ssamp3F),$0101<br />
dc.w $8005,z80_ptr(+),$0C08<br />
+ dc.b $EF,$00,$BA,$08,$BA,$25,$F2<br />
<br />
; special stage ring flash (unused)<br />
Sound43: dc.w z80_ptr(ssamp43),$0102<br />
dc.w $8004,z80_ptr(+),$0C00<br />
dc.w $8005,z80_ptr(++),$0013<br />
+ dc.b $EF,$01,$80,$01,$A2,$08,$EF,$00,$E7,$AD,$26,$F2<br />
+ dc.b $EF,$02,$F0,$06,$01,$03,$FF,$80,$0A<br />
- dc.b $C3<br />
dc.w $06F7,$0005,z80_ptr(-)<br />
dc.b $C3,$17,$F2<br />
ssamp43: dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$1C,$80<br />
dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$2C,$80<br />
dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$13,$13,$81,$88<br />
<br />
; thunk<br />
Sound44: dc.w z80_ptr(ssamp44),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$8A,$22,$F2<br />
ssamp44: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$4F,$2F,$2F,$0D,$04,$07,$80<br />
<br />
; cha-ching<br />
Sound45: dc.w z80_ptr(ssamp45),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$8A,$08,$80,$02,$8A,$08,$F2<br />
+ dc.b $EF,$01,$80,$12,$C6,$55,$F2<br />
+ dc.b $F5,$02,$F3,$E7,$80,$02,$C2,$05,$C4,$04,$C2,$05,$C4,$04,$F2<br />
ssamp45: dc.b $3B,$03,$02,$02,$06,$18,$1A,$1A,$96,$17,$0A,$0E<br />
dc.b $10,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$39,$28,$80<br />
ringsamp: dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$23,$80,$80<br />
<br />
; losing rings (scatter)<br />
Sound46: dc.w z80_ptr(ringsamp),$0102<br />
dc.w $8004,z80_ptr(+),$0005<br />
dc.w $8005,z80_ptr(++),$0008<br />
+ dc.b $EF,$00,$C6,$02,$05,$05,$05,$05,$05,$05,$3A,$F2<br />
+ dc.b $EF,$00,$80,$02,$C4,$02,$05,$15,$02,$05,$32,$F2<br />
<br />
; chain pull chink-chink<br />
Sound47: dc.w z80_ptr(ssamp47),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$BE,$05,$80,$04,$BE,$04,$80,$04,$F2<br />
ssamp47: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; flamethrower<br />
Sound48: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$25,$F2<br />
<br />
; bonus pwoieeew (unused)<br />
Sound49: dc.w z80_ptr(ssamp49),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$33,$18,$B9,$1A,$F2<br />
ssamp49: dc.b $3B,$0A,$05,$31,$02,$5F,$5F,$5F,$5F,$04,$16,$14<br />
dc.b $0C,$00,$00,$04,$00,$1F,$D8,$6F,$FF,$03,$00,$25,$80<br />
<br />
; special stage entry<br />
Sound4A: dc.w z80_ptr(ssamp4A),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$F0,$01,$01,$5B,$02,$CC,$65,$F2<br />
ssamp4A: dc.b $20,$36,$30,$35,$31,$41,$3B,$49,$4B,$09,$09,$06<br />
dc.b $08,$01,$02,$03,$A9,$0F,$0F,$0F,$0F,$29,$23,$27,$80<br />
<br />
; slower smash/crumble<br />
Sound4B: dc.w z80_ptr(smashsamp),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; spring boing<br />
Sound4C: dc.w z80_ptr(ssamp4C),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$5D,$0F,$B0,$0C,$F4<br />
- dc.b $E7,$E6,$02,$BD<br />
dc.w $02F7,$0019,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4C: dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$16,$13,$30,$80<br />
<br />
; selection blip<br />
Sound4D: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $BB,$02,$F2<br />
<br />
; another ring sound (only plays in the left speaker?)<br />
Sound4E: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8004,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$80,$C1,$04,$C4,$05,$C9,$1B,$F2<br />
<br />
; signpost spin sound<br />
Sound4F: dc.w z80_ptr(ssamp4F),$0102<br />
dc.w $8004,z80_ptr(+),$2703<br />
dc.w $8005,z80_ptr(++),$2700<br />
+ dc.b $80,$04<br />
+ dc.b $EF,$00<br />
- dc.b $B4,$05,$E6<br />
dc.w $02F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4F: dc.b $F4,$06,$0F,$04,$0E,$1F,$1F,$1F,$1F,$00,$0B,$00<br />
dc.b $0B,$00,$05,$00,$08,$0F,$FF,$0F,$FF,$0C,$03,$8B,$80<br />
<br />
; mosquito zapper<br />
Sound50: dc.w z80_ptr(ssamp50),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B3,$04,$80,$01<br />
- dc.b $B4,$04,$80<br />
dc.w $01F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
ssamp50: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$06,$34,$10,$87<br />
<br />
<br />
Sound51: dc.w z80_ptr(ssamp51),$0102<br />
dc.w $80C0,z80_ptr(+),$0001<br />
dc.w $8005,z80_ptr(++),$000B<br />
+ dc.b $F5,$02,$F3,$E4,$B0,$04,$85,$02,$F2<br />
+ dc.b $EF,$00,$E8,$04,$A5,$06,$F2<br />
ssamp51: dc.b $3C,$02,$01,$00,$01,$1F,$1F,$1F,$1F,$00,$19,$0E<br />
dc.b $10,$00,$00,$0C,$0F,$0F,$FF,$EF,$FF,$05,$00,$80,$80<br />
<br />
<br />
Sound52: dc.w z80_ptr(ssamp52),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $F0,$01,$01,$2A,$07,$EF,$00<br />
- dc.b $A5,$03<br />
dc.w $E7F7,$0013,z80_ptr(-)<br />
- dc.b $A5,$03,$E7,$E6<br />
dc.w $02F7,$0013,z80_ptr(-)<br />
dc.b $F2<br />
ssamp52: dc.b $28,$21,$21,$21,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$29,$20,$29,$80<br />
<br />
<br />
Sound53: dc.w z80_ptr(ssamp53),$0101<br />
dc.w $8005,z80_ptr(+),$F503<br />
+ dc.b $EF,$00,$F0,$01,$01,$46,$09,$A7,$14,$E7,$14,$E7,$E6,$04<br />
dc.b $14,$E7,$E6,$04,$14,$E7,$E6,$04,$0A,$E7,$E6,$04,$0A,$F2<br />
ssamp53: dc.b $07,$0A,$0C,$0C,$0C,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$2A,$0F,$0F,$80<br />
<br />
; OOZ lid pop sound<br />
Sound54: dc.w z80_ptr(ssamp54),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0006<br />
+ dc.b $EF,$00,$B6,$15,$F2<br />
+ dc.b $F3,$E7,$F5,$04,$C6,$03,$E7,$C5,$E7<br />
dc.b $C4,$E7,$C3,$E7,$C2,$E7,$C1,$E7,$C0,$F2<br />
ssamp54: dc.b $07,$03,$02,$03,$00,$FF,$6F,$6F,$3F,$12,$14,$11<br />
dc.b $0E,$1A,$0A,$03,$0D,$FF,$FF,$FF,$FF,$03,$07,$07,$80<br />
<br />
<br />
Sound55: dc.w z80_ptr(ssamp55),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$AA,$07,$B6,$15,$F2<br />
ssamp55: dc.b $42,$20,$0E,$0F,$0F,$1F,$1F,$1F,$1F,$1F,$1F,$1F<br />
dc.b $1F,$0F,$0E,$0F,$0E,$0F,$0F,$0F,$0F,$2E,$80,$20,$80<br />
<br />
<br />
Sound56: dc.w z80_ptr(ssamp56),$0101<br />
dc.w $8005,z80_ptr(+),$100E<br />
+ dc.b $EF,$00,$F0,$01,$01,$1E,$FF,$8F,$1C,$F4<br />
- dc.b $E7,$9A<br />
dc.w $05F7,$0009,z80_ptr(-)<br />
- dc.b $E7,$9A,$04,$E6,$02,$E7,$9A,$04,$E6<br />
dc.w $02F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp56: dc.b $0D,$06,$00,$00,$E5,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$27,$80,$80,$80<br />
<br />
<br />
Sound57: dc.w z80_ptr(ssamp57),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$CA,$15,$F2<br />
ssamp57: dc.b $04,$09,$70,$00,$30,$1C,$1F,$DF,$1F,$15,$12,$0B<br />
dc.b $0F,$0C,$0D,$00,$0D,$07,$2F,$FA,$FA,$00,$29,$00,$00<br />
<br />
; CNZ bonusy bumper sound<br />
Sound58: dc.w z80_ptr(ssamp58),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$B3,$06,$B3,$15,$F2<br />
ssamp58: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
<br />
; CNZ baaang bumper sound<br />
Sound59: dc.w z80_ptr(ssamp59),$0103<br />
dc.w $8004,z80_ptr(+),$0000<br />
dc.w $8002,z80_ptr(++),$0002<br />
dc.w $8005,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$E1,$0C,$B5,$14,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
+ dc.b $EF,$00,$B6,$14,$F2<br />
ssamp59: dc.b $32,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $0D,$00,$01,$01,$0C,$00,$23,$C3,$F6,$08,$07,$1C,$03<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; CNZ gloop / water droplet sound<br />
Sound5A: dc.w z80_ptr(ssamp5A),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$7F,$F1,$AA,$0A,$F2<br />
ssamp5A: dc.b $47,$03,$02,$02,$04,$5F,$5F,$5F,$5F,$0E,$1A,$11<br />
dc.b $0A,$09,$0A,$0A,$0A,$4F,$3F,$3F,$3F,$7F,$80,$80,$A3<br />
<br />
<br />
Sound5B: dc.w z80_ptr(ssamp5B),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$02,$A5,$01,$E7<br />
- dc.b $01,$E7,$E6<br />
dc.w $02F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5B: dc.b $38,$0F,$0F,$0F,$0F,$1F,$1F,$1F,$0E,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$1F,$00,$00,$00,$80<br />
<br />
<br />
Sound5C: dc.w z80_ptr(ssamp5C),$0102<br />
dc.w $8004,z80_ptr(+),$000E<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$85,$40<br />
- dc.b $E7,$04,$E6<br />
dc.w $04F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$40<br />
- dc.b $E7,$08,$E6<br />
dc.w $01F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5C: dc.b $FA,$12,$01,$01,$01,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$81,$8E,$14,$80<br />
<br />
; chain clink<br />
Sound5D: dc.w z80_ptr(ssamp5D),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$C0,$04,$F2<br />
ssamp5D: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; helicopter<br />
Sound5E: dc.w z80_ptr(ssamp5E),$0101<br />
dc.w $8002,z80_ptr(+),$1405<br />
+ dc.b $EF,$00<br />
- dc.b $95,$02,$95<br />
dc.w $01F7,$0013,z80_ptr(-)<br />
- dc.b $95,$02,$95,$01,$E6<br />
dc.w $01F7,$001B,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5E: dc.b $35,$30,$44,$40,$51,$1F,$1F,$1F,$1F,$10,$00,$13<br />
dc.b $15,$1F,$00,$1F,$1A,$7F,$0F,$7F,$5F,$02,$A8,$80,$80<br />
<br />
<br />
Sound5F: dc.w z80_ptr(ssamp5F),$0103<br />
dc.w $8005,z80_ptr(s5Fs1),$0000<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
s5Fs1 dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$E6,$0A,$80<br />
dc.b $06,$EF,$01,$F0,$01,$01,$11,$FF,$A2,$28<br />
- dc.b $E7,$03,$E6<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs2 dc.b $80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$1D<br />
- dc.b $E7,$07,$EC<br />
dc.w $01F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs3 dc.b $80,$16,$F5,$03<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $FFF7,$0005,z80_ptr(-)<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $01F7,$0007,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5F: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
dc.b $3A,$70,$30,$04,$01,$0F,$14,$19,$16,$08,$0A,$0B<br />
dc.b $05,$03,$03,$03,$05,$1F,$6F,$8F,$5F,$1F,$22,$1F,$80<br />
<br />
; spindash charge<br />
Sound60: dc.w z80_ptr(ssamp60),$0101<br />
dc.w $8005,z80_ptr(+),$FE00<br />
+ dc.b $EF,$00,$F0,$00,$01,$20,$F6,$C4,$16,$E7,$F4,$D0,$18,$E7<br />
- dc.b $04,$E7,$E6<br />
dc.w $03F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp60: dc.b $34,$00,$03,$0C,$09,$9F,$8C,$8F,$95,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$00,$1D,$00,$00<br />
<br />
; rumbling<br />
Sound61: dc.w z80_ptr(ssamp61),$0101<br />
dc.w $8004,z80_ptr(+),$0004<br />
+ dc.b $80,$01,$EF,$00,$F0,$00,$01,$70,$06,$82,$06,$85,$08,$83<br />
dc.b $01,$82,$05,$86,$06,$89,$03,$82,$08,$88,$04,$82,$06,$E6<br />
dc.b $02,$85,$08,$E6,$02,$83,$01,$E6,$02,$82,$05,$E6,$02,$86<br />
dc.b $06,$E6,$02,$89,$03,$E6,$02,$82,$08,$E6,$02,$88,$04,$E6,$02,$F2<br />
ssamp61: dc.b $32,$30,$30,$50,$30,$1F,$0E,$19,$0E,$07,$12,$15<br />
dc.b $09,$0A,$09,$1D,$06,$E8,$03,$0A,$17,$07,$00,$00,$00<br />
<br />
<br />
Sound62: dc.w z80_ptr(ssamp62),$0101<br />
dc.w $8005,z80_ptr(+),$FF00<br />
+ dc.b $EF,$00,$A6,$05,$F0,$01,$01,$E7,$40<br />
- dc.b $C4,$02,$E7,$E6<br />
dc.w $01F7,$0012,z80_ptr(-)<br />
dc.b $F2<br />
ssamp62: dc.b $34,$0C,$10,$73,$0C,$AF,$AC,$FF,$D5,$06,$00,$02<br />
dc.b $01,$02,$0A,$04,$08,$BF,$BF,$BF,$BF,$00,$08,$80,$80<br />
<br />
; CNZ blooing bumper<br />
Sound63: dc.w z80_ptr(ssamp63),$0101<br />
dc.w $8005,z80_ptr(+),$0907<br />
+ dc.b $EF,$00,$F0,$01,$01,$04,$56,$92,$03,$9A,$25,$F2<br />
ssamp63: dc.b $3D,$12,$10,$77,$30,$5F,$5F,$5F,$5F,$0F,$0A,$00<br />
dc.b $01,$0A,$0A,$0D,$0D,$4F,$0F,$0F,$0F,$13,$80,$80,$80<br />
<br />
; HTZ track click sound<br />
Sound64: dc.w z80_ptr(ssamp64),$0101<br />
dc.w $8005,z80_ptr(+),$1100<br />
+ dc.b $EF,$00,$C7,$02,$F2<br />
ssamp64: dc.b $24,$2A,$02,$05,$01,$1A,$1F,$10,$1F,$0F,$1F,$1F<br />
dc.b $1F,$0C,$0D,$11,$11,$0C,$09,$09,$0F,$0E,$04,$80,$80<br />
<br />
; kicking up leaves sound<br />
Sound65: dc.w z80_ptr(ssamp65),$0101<br />
dc.w $80C0,z80_ptr(+),$F800<br />
+ dc.b $F5,$03,$F3,$E7,$CE,$03,$F5,$06,$CE,$04,$EC<br />
dc.b $02,$CE,$02,$F5,$03,$EC,$FE,$CE,$08,$CE,$18,$F2<br />
ssamp65: ; uhm... apparently they forgot to null out the pointer to here.<br />
; luckily, sound 65 doesn't really use its sample<br />
<br />
; leaf splash?<br />
Sound66: dc.w z80_ptr(ssamp66),$0102<br />
dc.w $8005,z80_ptr(++),$EE08<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$F5,$09,$C6,$36,$F2<br />
+ dc.b $EF,$00,$80,$01,$92,$02,$02,$02,$30,$F2<br />
ssamp66: dc.b $32,$33,$17,$34,$13,$0F,$0D,$1B,$17,$00,$04,$02<br />
dc.b $0B,$08,$00,$08,$09,$6F,$5F,$4F,$6F,$05,$00,$00,$80<br />
<br />
<br />
Sound67: dc.w z80_ptr(ssamp67),$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$06,$F3,$E7,$90,$0A,$94,$0A,$98,$0A,$9C<br />
dc.b $0A,$A0,$0A,$A4,$08,$A8,$08,$AC,$08,$B0,$08,$F2<br />
ssamp67: ; another not-really-used sample (like Sound65)<br />
<br />
; door slamming quickly (seems unused)<br />
Sound68: dc.w z80_ptr(ssamp68),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$A5,$06,$F2<br />
ssamp68: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
<br />
Sound69: dc.w z80_ptr(ssamp69),$0102<br />
dc.w $8005,z80_ptr(+),$F400<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$9B,$03,$A8,$06,$9E,$08,$F2<br />
+ dc.b $F5,$04,$F3,$E7,$C6,$03,$C6,$06,$C6,$08,$F2<br />
ssamp69: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; robotic laser burst<br />
Sound6A: dc.w z80_ptr(ssamp6A),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$DF,$14,$E6,$18,$06,$F2<br />
ssamp6A: dc.b $3D,$09,$34,$34,$28,$1F,$16,$16,$16,$00,$00,$00<br />
dc.b $04,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$15,$02,$02,$00<br />
<br />
; scatter<br />
Sound6B: dc.w z80_ptr(ssamp6B),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$81,$04,$80,$0C,$F2<br />
ssamp6B: dc.b $3A,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $07,$00,$01,$01,$03,$00,$23,$C3,$46,$08,$07,$1C,$03<br />
<br />
<br />
Sound6C: dc.w z80_ptr(ssamp6C),$0104<br />
dc.w $8005,z80_ptr(++),$0010<br />
dc.w $8004,z80_ptr(+),$0010<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
+ dc.b $E1,$10<br />
+ dc.b $EF,$01,$F0,$01,$01,$EC,$56,$C0,$24,$F4,$EF,$00,$E6,$F0<br />
- dc.b $BB,$02,$E7,$E6,$02,$E9<br />
dc.w $01F7,$0020,z80_ptr(-)<br />
dc.b $F2<br />
ssamp6C: dc.b $00,$53,$30,$03,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$06,$23,$80<br />
dc.b $3C,$72,$32,$32,$72,$14,$14,$0F,$0F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$02,$02,$08,$08,$35,$14,$00,$00<br />
<br />
; error sound<br />
Sound6D: dc.w z80_ptr(ssamp6D),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$B0,$06,$80,$06,$B0,$18,$F2<br />
ssamp6D: dc.b $38,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$1F,$0C,$17,$00<br />
<br />
; silver sonic buzz saw<br />
Sound6E: dc.w z80_ptr(ssamp6E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$C6,$24,$E7<br />
- dc.b $C6,$04,$E7,$E6<br />
dc.w $04F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F3,$E7,$C7,$44,$F2<br />
ssamp6E: dc.b $33,$00,$10,$00,$31,$1F,$1D,$1E,$0E,$00,$0C,$1D<br />
dc.b $00,$00,$00,$01,$00,$0F,$0F,$0F,$0F,$08,$06,$07,$80<br />
<br />
<br />
Sound6F: dc.w z80_ptr(ssamp6A),$0103<br />
dc.w $8005,z80_ptr(++),$000B<br />
dc.w $8004,z80_ptr(+),$0012<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $E1,$02,$80,$02<br />
+ dc.b $EF,$00,$E6,$0C,$DF,$06,$E7,$E6,$F4,$06,$E7<br />
dc.b $E6,$F4,$12,$E7,$E6,$0C,$06,$E7,$E6,$0C,$06,$F2<br />
+ dc.b $F3,$E7,$C6,$04,$C0,$BA,$B4,$AE,$E6<br />
dc.b $01,$AE,$E6,$01,$AE,$E6,$01,$AE,$F2<br />
<br />
<br />
Sound70: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$C6,$18<br />
- dc.b $E7,$03,$E6<br />
dc.w $01F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to the other bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
; share these symbols externally (WARNING: don't rename, move or remove these labels!)<br />
shared movewZ80CompSize<br />
</asm><br />
<br />
We want to replace it with this optimized code:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==<br />
Now we have the code to load the new driver, time to add the new playback routines.<br />
<br />
===Upgrade Music Routine===<br />
First the PlayMusic routine, locate:<br />
<asm><br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; If Music_to_play is clear, move d0 into Music_to_play,<br />
; else move d0 into Music_to_play_2.<br />
; sub_135E:<br />
PlayMusic:<br />
tst.b (Music_to_play).w<br />
bne.s +<br />
move.b d0,(Music_to_play).w<br />
rts<br />
+<br />
move.b d0,(Music_to_play_2).w<br />
rts<br />
; End of function PlayMusic<br />
</asm><br />
and we will replace it with '''this''' code:<br />
<asm><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to play a music track<br />
; ---------------------------------------------------------------------------<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
PlayMusic:<br />
cmpi.w #$FB,d0<br />
blt.s ++<br />
bhi.s +<br />
move #8,d0<br />
jmp SetTempo<br />
+ cmpi.w #$FC,d0<br />
bne.s +<br />
clr.w d0<br />
jmp SetTempo<br />
<br />
stopZ80<br />
move.b d0,($A01C0A).l<br />
startZ80<br />
rts<br />
; End of function PlaySound<br />
<asm><br />
<br />
===sound playback routines===</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208738
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-24T23:11:33Z
<p>Kram1024: /* Upgrading the Load Driver Routine */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==<br />
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><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
move sr,-(sp)<br />
movem.l d0-a6,-(sp)<br />
move #$2700,sr<br />
lea (Z80_Bus_Request).l,a3<br />
lea (Z80_Reset).l,a2<br />
moveq #0,d2<br />
move.w #$100,d1<br />
move.w d1,(a3) ; get Z80 bus<br />
move.w d1,(a2) ; release Z80 reset (was held high by console on startup)<br />
- btst d2,(a3)<br />
bne.s - ; wait until the 68000 has the bus<br />
jsr DecompressSoundDriver(pc)<br />
btst #0,(VDP_control_port+1).l ; check video mode<br />
sne (Z80_RAM+zPalModeByte).l ; set if PAL<br />
move.w d2,(a2) ; hold Z80 reset<br />
move.w d2,(a3) ; release Z80 bus<br />
moveq #$E6,d0<br />
- dbf d0,- ; wait for 2,314 cycles<br />
move.w d1,(a2) ; release Z80 reset<br />
movem.l (sp)+,d0-a6<br />
move (sp)+,sr<br />
rts<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; slightly modified Saxman decompression of the sound driver<br />
; a4 == $A00000 (start of Z80 RAM)<br />
; a5 == current position in Z80 RAM?<br />
; a6 == current position in compressed sound driver?<br />
; d0 == data to decompress? (byte)<br />
; d4 == ???<br />
; d5 == ???<br />
; d6 == ???<br />
; d7 == bytes left to decompress<br />
; loc_EC04A:<br />
DecompressSoundDriver:<br />
lea Snd_Driver(pc),a6<br />
; WARNING: the build script needs editing if you rename this label<br />
movewZ80CompSize: move.w #Snd_Driver_End-Snd_Driver,d7 ; patched (by fixpointer.exe) after compression since the exact size can't be known beforehand<br />
moveq #0,d6<br />
lea (Z80_RAM).l,a5<br />
moveq #0,d5<br />
lea (Z80_RAM).l,a4<br />
<br />
loc_EC062:<br />
lsr.w #1,d6<br />
btst #8,d6<br />
bne.s +<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d6<br />
ori.w #$FF00,d6<br />
+<br />
btst #0,d6<br />
beq.s loc_EC086<br />
jsr sub_EC0DE(pc)<br />
move.b d0,(a5)+<br />
addq.w #1,d5<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC086:<br />
jsr sub_EC0DE(pc)<br />
moveq #0,d4<br />
move.b d0,d4<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d3<br />
andi.w #$F,d3<br />
addq.w #2,d3<br />
andi.w #$F0,d0<br />
lsl.w #4,d0<br />
add.w d0,d4<br />
addi.w #$12,d4<br />
andi.w #$FFF,d4<br />
move.w d5,d0<br />
andi.w #$F000,d0<br />
add.w d0,d4<br />
cmp.w d4,d5<br />
bhs.s loc_EC0CC<br />
subi.w #$1000,d4<br />
bcc.s loc_EC0CC<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b #0,(a5)+<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC0CC:<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b (a4,d4.w),(a5)+<br />
addq.w #1,d4<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; End of function DecompressSoundDriver<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_EC0DE:<br />
move.b (a6)+,d0<br />
subq.w #1,d7<br />
bne.s +<br />
addq.w #4,sp<br />
+<br />
rts<br />
; End of function sub_EC0DE<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; S2 sound driver (Sound driver compression (slightly modified Saxman))<br />
; ---------------------------------------------------------------------------<br />
; loc_EC0E8:<br />
Snd_Driver:<br />
save<br />
include "s2.sounddriver.asm" ; CPU Z80<br />
restore<br />
padding off<br />
!org (Snd_Driver+Size_of_Snd_driver_guess) ; don't worry; I know what I'm doing<br />
<br />
<br />
; loc_ED04C:<br />
Snd_Driver_End:<br />
<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ---------------------------------------------------------------------------<br />
; the DAC data has to line up with the end of the bank.<br />
<br />
; actually it only has to fit within one bank, but we'll line it up to the end anyway<br />
; because the padding gives the sound driver some room to grow<br />
cnop -Size_of_DAC_samples, $8000<br />
<br />
; ---------------------------------------------------------------------------<br />
; DAC samples<br />
; ---------------------------------------------------------------------------<br />
; loc_ED100:<br />
SndDAC_Start:<br />
<br />
SndDAC_Sample1:<br />
BINCLUDE "sound/DAC/Sample 1.bin"<br />
SndDAC_Sample1_End<br />
<br />
SndDAC_Sample2:<br />
BINCLUDE "sound/DAC/Sample 2.bin"<br />
SndDAC_Sample2_End<br />
<br />
SndDAC_Sample5:<br />
BINCLUDE "sound/DAC/Sample 5.bin"<br />
SndDAC_Sample5_End<br />
<br />
SndDAC_Sample6:<br />
BINCLUDE "sound/DAC/Sample 6.bin"<br />
SndDAC_Sample6_End<br />
<br />
SndDAC_Sample3:<br />
BINCLUDE "sound/DAC/Sample 3.bin"<br />
SndDAC_Sample3_End<br />
<br />
SndDAC_Sample4:<br />
BINCLUDE "sound/DAC/Sample 4.bin"<br />
SndDAC_Sample4_End<br />
<br />
SndDAC_Sample7:<br />
BINCLUDE "sound/DAC/Sample 7.bin"<br />
SndDAC_Sample7_End<br />
<br />
SndDAC_End<br />
<br />
if SndDAC_End - SndDAC_Start > $8000<br />
fatal "DAC samples must fit within $8000 bytes, but you have $\{SndDAC_End-SndDAC_Start } bytes of DAC samples."<br />
endif<br />
if SndDAC_End - SndDAC_Start > Size_of_DAC_samples<br />
fatal "Size_of_DAC_samples = $\{Size_of_DAC_samples}, but you have $\{SndDAC_End-SndDAC_Start} bytes of DAC samples."<br />
endif<br />
<br />
; ---------------------------------------------------------------------------<br />
; Music pointers<br />
; ---------------------------------------------------------------------------<br />
align $8000<br />
<br />
; loc_F0000:<br />
MusicPoint1:<br />
MusPtr_Continue: rom_ptr_z80 Mus_Continue-MusicPoint2<br />
<br />
<br />
Mus_Continue: BINCLUDE "sound/music/Continue.bin"<br />
<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ----------------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ----------------------------------------------------------------------------------<br />
; the PCM data has to line up with the end of the bank.<br />
cnop -Size_of_SEGA_sound, $8000<br />
<br />
; -------------------------------------------------------------------------------<br />
; Sega Intro Sound<br />
; 8-bit unsigned raw audio at 16Khz<br />
; -------------------------------------------------------------------------------<br />
; loc_F1E8C:<br />
Snd_Sega: BINCLUDE "sound/PCM/SEGA.bin"<br />
Snd_Sega_End:<br />
<br />
if Snd_Sega_End - Snd_Sega > $8000<br />
fatal "Sega sound must fit within $8000 bytes, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
if Snd_Sega_End - Snd_Sega > Size_of_SEGA_sound<br />
fatal "Size_of_SEGA_sound = $\{Size_of_SEGA_sound}, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
<br />
; ------------------------------------------------------------------------------<br />
; Music pointers<br />
; ------------------------------------------------------------------------------<br />
align $8000<br />
soundBankStart := *<br />
<br />
; loc_F8000:<br />
MusicPoint2:<br />
MusPtr_CNZ_2P: rom_ptr_z80 Mus_CNZ_2P<br />
MusPtr_EHZ: rom_ptr_z80 Mus_EHZ<br />
MusPtr_MTZ: rom_ptr_z80 Mus_MTZ<br />
MusPtr_CNZ: rom_ptr_z80 Mus_CNZ<br />
MusPtr_MCZ: rom_ptr_z80 Mus_MCZ<br />
MusPtr_MCZ_2P: rom_ptr_z80 Mus_MCZ_2P<br />
MusPtr_ARZ: rom_ptr_z80 Mus_ARZ<br />
MusPtr_DEZ: rom_ptr_z80 Mus_DEZ<br />
MusPtr_SpecStage: rom_ptr_z80 Mus_SpecStage<br />
MusPtr_Options: rom_ptr_z80 Mus_Options<br />
MusPtr_Ending: rom_ptr_z80 Mus_Ending<br />
MusPtr_EndBoss: rom_ptr_z80 Mus_EndBoss<br />
MusPtr_CPZ: rom_ptr_z80 Mus_CPZ<br />
MusPtr_Boss: rom_ptr_z80 Mus_Boss<br />
MusPtr_SCZ: rom_ptr_z80 Mus_SCZ<br />
MusPtr_OOZ: rom_ptr_z80 Mus_OOZ<br />
MusPtr_WFZ: rom_ptr_z80 Mus_WFZ<br />
MusPtr_EHZ_2P: rom_ptr_z80 Mus_EHZ_2P<br />
MusPtr_2PResult: rom_ptr_z80 Mus_2PResult<br />
MusPtr_SuperSonic: rom_ptr_z80 Mus_SuperSonic<br />
MusPtr_HTZ: rom_ptr_z80 Mus_HTZ<br />
MusPtr_ExtraLife: rom_ptr_z80 Mus_ExtraLife<br />
MusPtr_Title: rom_ptr_z80 Mus_Title<br />
MusPtr_EndLevel: rom_ptr_z80 Mus_EndLevel<br />
MusPtr_GameOver: rom_ptr_z80 Mus_GameOver<br />
MusPtr_Invincible: rom_ptr_z80 Mus_Invincible<br />
MusPtr_Emerald: rom_ptr_z80 Mus_Emerald<br />
MusPtr_HPZ: rom_ptr_z80 Mus_HPZ<br />
MusPtr_Drowning: rom_ptr_z80 Mus_Drowning<br />
MusPtr_Credits: rom_ptr_z80 Mus_Credits<br />
<br />
; loc_F803C:<br />
Mus_HPZ: BINCLUDE "sound/music/HPZ.bin"<br />
Mus_Drowning: BINCLUDE "sound/music/Drowning.bin"<br />
Mus_Invincible: BINCLUDE "sound/music/Invincible.bin"<br />
Mus_CNZ_2P: BINCLUDE "sound/music/CNZ_2p.bin"<br />
Mus_EHZ: BINCLUDE "sound/music/EHZ.bin"<br />
Mus_MTZ: BINCLUDE "sound/music/MTZ.bin"<br />
Mus_CNZ: BINCLUDE "sound/music/CNZ.bin"<br />
Mus_MCZ: BINCLUDE "sound/music/MCZ.bin"<br />
Mus_MCZ_2P: BINCLUDE "sound/music/MCZ_2p.bin"<br />
Mus_ARZ: BINCLUDE "sound/music/ARZ.bin"<br />
Mus_DEZ: BINCLUDE "sound/music/DEZ.bin"<br />
Mus_SpecStage: BINCLUDE "sound/music/SpecStg.bin"<br />
Mus_Options: BINCLUDE "sound/music/Options.bin"<br />
Mus_Ending: BINCLUDE "sound/music/Ending.bin"<br />
Mus_EndBoss: BINCLUDE "sound/music/End_Boss.bin"<br />
Mus_CPZ: BINCLUDE "sound/music/CPZ.bin"<br />
Mus_Boss: BINCLUDE "sound/music/Boss.bin"<br />
Mus_SCZ: BINCLUDE "sound/music/SCZ.bin"<br />
Mus_OOZ: BINCLUDE "sound/music/OOZ.bin"<br />
Mus_WFZ: BINCLUDE "sound/music/WFZ.bin"<br />
Mus_EHZ_2P: BINCLUDE "sound/music/EHZ_2p.bin"<br />
Mus_2PResult: BINCLUDE "sound/music/2player results screen.bin"<br />
Mus_SuperSonic: BINCLUDE "sound/music/Supersonic.bin"<br />
Mus_HTZ: BINCLUDE "sound/music/HTZ.bin"<br />
Mus_Title: BINCLUDE "sound/music/Title screen.bin"<br />
Mus_EndLevel: BINCLUDE "sound/music/End of level.bin"<br />
<br />
; The following act mostly like sound effects<br />
; despite being listed with the music.<br />
; This means they're uncompressed format with absolute pointers<br />
; instead of compressed with relative pointers.<br />
; Because they have absolute pointers,<br />
; they have to be assembled rather than BINCLUDE'd.<br />
; See below (right before Sound20) for other notes<br />
; about the sound format that apply to these too.<br />
<br />
;Mus_ExtraLife: BINCLUDE "sound/music/Extra life.bin"<br />
Mus_ExtraLife: dc.w z80_ptr(Mus_EL_Voices),$0603,$02CD<br />
dc.w z80_ptr(Mus_EL_DAC),$0000<br />
dc.w z80_ptr(Mus_EL_FM1),$E810<br />
dc.w z80_ptr(Mus_EL_FM2),$E810<br />
dc.w z80_ptr(Mus_EL_FM3),$E810<br />
dc.w z80_ptr(Mus_EL_FM4),$E810<br />
dc.w z80_ptr(Mus_EL_FM5),$E810<br />
dc.w z80_ptr(Mus_EL_PSG1),$D008,$0005<br />
dc.w z80_ptr(Mus_EL_PSG2),$DC08,$0005<br />
dc.w z80_ptr(Mus_EL_PSG3),$DC00,$0004<br />
Mus_EL_FM4: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM1: dc.b $E0,$80<br />
+ dc.b $EF,$00,$E8,$06,$D9,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$DB,$09,$D7,$D6,$06,$D9,$18,$F2<br />
Mus_EL_FM2: dc.b $EF,$01,$E8,$06,$E2,$01,$D6,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$D7,$09,$D4,$D2,$06,$D6,$18,$E2,$01,$F2<br />
Mus_EL_FM5: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM3: dc.b $E0,$80<br />
+ dc.b $EF,$02,$BA,$0C,$80,$06,$BA,$B8,$80,$03<br />
dc.b $B8,$06,$80,$03,$B8,$06,$BA,$18,$F2<br />
Mus_EL_PSG1: dc.b $E8,$06,$D6,$06,$03,$03,$06,$06,$E8,$00,$D7,$09<br />
dc.b $D4,$D2,$06,$D6,$18<br />
Mus_EL_PSG2:<br />
Mus_EL_PSG3: dc.b $F2<br />
Mus_EL_DAC: dc.b $88,$12,$06,$8B,$09,$09,$06,$88,$06,$8A,$88,$8A<br />
dc.b $88,$0C,$E4<br />
Mus_EL_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
<br />
<br />
;Mus_GameOver: BINCLUDE "sound/music/Game over.bin"<br />
Mus_GameOver: dc.w z80_ptr(MusGO_Voices),$0603,$02F2<br />
dc.w z80_ptr(MusGOver_DAC),$0000<br />
dc.w z80_ptr(MusGOver_FM1),$E80A<br />
dc.w z80_ptr(MusGOver_FM2),$F40F<br />
dc.w z80_ptr(MusGOver_FM3),$F40F<br />
dc.w z80_ptr(MusGOver_FM4),$F40D<br />
dc.w z80_ptr(MusGOver_FM5),$DC16<br />
dc.w z80_ptr(MusGOver_PSG),$D003,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC06,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC00,$0004<br />
MusGOver_FM1: dc.b $EF,$00<br />
dc.b $F0,$20,$01,$04,$05<br />
dc.b $80,$0C,$CA,$12,$80,$06,$CA,$80,$CB,$12,$C8,$1E<br />
dc.b $CA,$06,$80,$CA,$80,$CA,$80,$C6,$80,$C4,$12,$C8<br />
dc.b $0C,$80,$12,$C9,$04,$80,$C9,$C8,$06,$80,$C7,$80<br />
dc.b $C6,$80<br />
dc.b $F0,$28,$01,$18,$05<br />
dc.b $C5,$60,$F2<br />
MusGOver_FM2: dc.b $EF,$01,$80,$01,$D9,$06,$80,$D9,$80,$D6,$80,$D6<br />
dc.b $80,$D7,$15,$D7,$1B,$D9,$06,$80,$D9,$80,$D6,$80<br />
dc.b $D6,$80,$DC,$15,$DC,$1B,$F2<br />
MusGOver_FM3: dc.b $EF,$01,$D6,$0C,$D6,$D2,$D2,$D4,$15,$D4,$1B,$D6<br />
dc.b $0C,$D6,$D2,$D2,$D7,$15,$D7,$1B,$F2<br />
MusGOver_FM4: dc.b $EF,$02,$E2,$01,$AE,$06,$80,$AE,$80,$A9,$80,$A9<br />
dc.b $80,$AC,$15,$AB,$0C,$AC,$03,$AB,$0C,$AE,$06,$80<br />
dc.b $AE,$80,$A9,$80,$A9,$80,$B3,$15,$B2,$0C,$B3,$03<br />
dc.b $B2,$0C,$AE,$04,$80,$AE,$AD,$06,$80,$AC,$80,$AB<br />
dc.b $80,$AB,$60,$E2,$01,$F2<br />
MusGOver_FM5: dc.b $EF,$03,$80,$30,$D7,$12,$80,$03,$D7,$1B,$80,$30<br />
dc.b $DC,$12,$80,$03,$DC,$1B<br />
MusGOver_PSG: dc.b $F2<br />
MusGOver_DAC: dc.b $80,$18,$81<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(MusGOver_DAC)<br />
dc.b $F2<br />
MusGO_Voices: dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $3C,$33,$73,$30,$70,$94,$96,$9F,$9F,$12,$14,$00<br />
dc.b $0F,$04,$04,$0A,$0D,$2F,$4F,$0F,$2F,$33,$1A,$80,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$1C,$27,$28,$80<br />
dc.b $1F,$66,$53,$31,$22,$1C,$1F,$98,$1F,$12,$0F,$0F<br />
dc.b $0F,$00,$00,$00,$00,$FF,$0F,$0F,$0F,$8C,$8A,$8D,$8B<br />
<br />
;Mus_Emerald: BINCLUDE "sound/music/Got an emerald.bin"<br />
Mus_Emerald: dc.w z80_ptr(MusEmrldVoices),$0703,$01D5<br />
dc.w z80_ptr(MusEmeraldDAC),$0000<br />
dc.w z80_ptr(MusEmeraldFM1),$F408<br />
dc.w z80_ptr(MusEmeraldFM2),$F408<br />
dc.w z80_ptr(MusEmeraldFM3),$F407<br />
dc.w z80_ptr(MusEmeraldFM4),$F416<br />
dc.w z80_ptr(MusEmeraldFM5),$F416<br />
dc.w z80_ptr(MusEmeraldFM6),$F416<br />
dc.w z80_ptr(MusEmeraldPSG1),$F402,$0004<br />
dc.w z80_ptr(MusEmeraldPSG2),$F402,$0005<br />
dc.w z80_ptr(MusEmeraldPSG3),$F400,$0004<br />
MusEmeraldFM3: dc.b $E1,$02<br />
MusEmeraldFM1: dc.b $EF,$00,$C1,$06,$C4,$C9,$CD,$0C,$C9,$D0,$2A,$F2<br />
MusEmeraldFM2: dc.b $EF,$00,$BD,$06,$C1,$C4,$C9,$0C,$C6,$CB,$2A,$F2<br />
MusEmeraldFM4: dc.b $EF,$01,$C1,$0C,$C1,$06,$C4,$06,$80,$C4,$80,$C9<br />
dc.b $2A,$F2<br />
MusEmeraldFM5: dc.b $EF,$01,$C9,$0C,$C9,$06,$CD,$06,$80,$CD,$80,$D0<br />
dc.b $2A,$F2<br />
MusEmeraldFM6: dc.b $EF,$01,$C4,$0C,$C4,$06,$C9,$06,$80,$C9,$80,$CD<br />
dc.b $2A,$F2<br />
MusEmeraldPSG2: dc.b $80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusEmeraldPSG1: dc.b $E2,$01,$80,$02,$80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
MusEmeraldPSG3:<br />
MusEmeraldDAC: dc.b $E2,$01,$F2<br />
MusEmrldVoices: dc.b $04,$35,$54,$72,$46,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$1D,$14,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$07,$07,$1A,$16,$80,$80<br />
<br />
;Mus_Credits: BINCLUDE "sound/music/Credits.bin"<br />
Mus_Credits: dc.w z80_ptr(MusCred_Voices),$0603,$01F0<br />
dc.w z80_ptr(MusCred_DAC),$0000<br />
dc.w z80_ptr(MusCred_FM1),$000E<br />
dc.w z80_ptr(MusCred_FM2),$180A<br />
dc.w z80_ptr(MusCred_FM3),$0014<br />
dc.w z80_ptr(MusCred_FM4),$0016<br />
dc.w z80_ptr(MusCred_FM5),$0C16<br />
dc.w z80_ptr(MusCred_PSG1),$E806,$000B<br />
dc.w z80_ptr(MusCred_PSG2),$DC07,$000B<br />
dc.w z80_ptr(MusCred_PSG3),$0002,$0003<br />
MusCred_FM1: dc.b $E9,$F4,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$0C,$E6,$02<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$03,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $AE,$06,$A2,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $E6,$FD<br />
- dc.b $EF,$00,$B7,$06,$BA,$F8<br />
dc.w z80_ptr(MusCreditsDA13)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$06,$80,$80,$30,$80,$EF,$0B,$E9,$18,$E6,$02<br />
- dc.b $94,$0C,$8F,$92,$8F,$06,$94,$05,$94,$07,$06,$8F<br />
dc.b $0C,$92,$8F<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$30,$80,$EF,$0E,$E6,$FF,$E9,$E8,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$91,$94,$06,$80,$18,$96,$12,$9A,$06,$80<br />
dc.b $80,$12,$8F,$93,$08,$80,$16,$96,$06,$91,$92,$94<br />
dc.b $96,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$9D,$9A,$08,$80,$16,$96,$12,$9D,$08,$80<br />
dc.b $04,$EF,$12<br />
dc.b $F0,$18,$01,$0A,$04<br />
dc.b $80,$30,$80,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$24,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$EF,$01,$E9,$F4,$E6,$FA,$F4<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $80,$03,$80,$60,$E6,$04,$E1,$01,$EF,$1B,$E6,$06<br />
dc.b $C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80,$EF<br />
dc.b $1C,$E6,$FA,$E8,$00,$BC,$0C,$12,$06,$EF,$1B,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$80,$E8,$06,$C4,$06,$06,$C6,$C4,$E8<br />
dc.b $00,$C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80<br />
dc.b $E8,$00,$EF,$1C,$E6,$FA,$C1,$C4,$C1,$EF,$1A,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$06,$80,$80,$24,$80,$30,$80,$EF,$1F<br />
dc.b $E9,$18,$E6,$F7,$E1,$00,$80,$06,$AC,$AE,$80,$B1<br />
dc.b $80,$B3,$80,$B4,$80,$B3,$80,$B1,$B3,$80,$B1,$E9<br />
dc.b $F4,$EF,$00,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC<br />
dc.b $06,$AE,$B1,$80,$B4,$B1,$80,$B1,$E9,$0C,$EF,$1F<br />
dc.b $80,$06,$B8,$12,$B4,$06,$80,$B3,$80,$B4,$80,$B3<br />
dc.b $80,$B1,$AE,$80,$B1,$E9,$F4,$EF,$00,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$30,$80,$EF,$21,$E9,$0C,$80,$30,$80<br />
dc.b $08,$A0,$04,$9E,$0C,$9D,$9B,$99,$08,$04,$91,$0C<br />
dc.b $92,$93,$94,$98,$99,$9B,$9D,$98,$95,$93,$91,$98<br />
dc.b $9D,$91,$96,$98,$99,$98,$96,$99,$9D,$96,$95,$97<br />
dc.b $99,$97,$95,$96,$97,$98,$99,$98,$99,$9B,$9D,$08<br />
dc.b $04,$98,$0C,$91,$95,$96,$98,$99,$9D,$9E,$08,$96<br />
dc.b $10,$97,$0C,$98,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$08,$99,$04,$EF,$23,$E9,$E8,$E6,$07,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $80,$60,$E6,$FB,$80,$0C,$CD,$06,$80,$D4,$CD,$06<br />
dc.b $80,$0C,$CD,$06,$80,$D4,$CD,$06,$80,$18,$E6,$05<br />
dc.b $80,$0C,$AE,$80,$AE,$80,$24,$E1,$02,$E6,$08,$A2<br />
dc.b $6C,$F2<br />
MusCreditsD9D1: dc.b $A5,$0C,$B1,$06,$80,$B1,$0C,$AC,$B3,$12,$B1,$0C<br />
dc.b $AC,$06,$AE,$B1,$A7,$0C,$B3,$06,$80,$B3,$0C,$AE<br />
dc.b $B5,$12,$B3,$06,$80,$AE,$B0,$B3,$A3,$0C,$AF,$06<br />
dc.b $80,$AF,$0C,$AA,$B1,$12,$AF,$0C,$AA,$06,$AC,$AF<br />
dc.b $A2,$0C,$AE,$06,$A2,$A4,$0C,$B0,$06,$A4,$A5,$0C<br />
dc.b $B1,$06,$A5,$A2,$0C,$E3<br />
MusCreditsDA13: dc.b $BE,$0C,$BC,$06,$BA,$BC,$BA,$04,$E7,$08,$BA,$04<br />
dc.b $80,$0E,$EF,$07,$B7,$06,$B2,$B5,$B7,$EF,$00,$B7<br />
dc.b $BA,$BE,$0C,$BC,$06,$BA,$BC,$BA,$0C,$BC,$04,$80<br />
dc.b $08,$BA,$04,$80,$08,$BC,$04,$80,$08,$BE,$12,$BA<br />
dc.b $06,$B7,$80,$B7,$80,$24,$EF,$07,$B7,$06,$B2,$B5<br />
dc.b $B7,$80,$0C,$80,$30,$BE,$06,$BE,$BA,$04,$80,$08<br />
dc.b $BC,$06,$BE,$E3<br />
MusCreditsDA5F: dc.b $C3,$01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$02,$C3<br />
dc.b $01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01<br />
dc.b $E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$FC,$C3,$01,$E7<br />
dc.b $C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01,$E7,$C4<br />
dc.b $E7,$C5,$E7,$C6,$2D,$E7,$30,$E7,$30,$E3<br />
MusCreditsDA99: dc.b $A7,$0C,$B3,$06,$80,$B1,$80,$B3,$0C,$A7,$03,$80<br />
dc.b $06,$A7,$03,$B3,$0C,$B1,$B3,$09,$AE,$03,$AC,$06<br />
dc.b $80,$AC,$0C,$AE,$06,$80,$AE,$0C,$AF,$06,$80,$27<br />
dc.b $E3<br />
MusCreditsDABE: dc.b $80,$0C,$CA,$15,$80,$03,$CA,$06,$80,$CB,$0F,$80<br />
dc.b $03,$C8,$18,$80,$06,$CA,$80,$CA,$80,$CA,$80,$C6<br />
dc.b $80,$C4,$0F,$80,$03,$C8,$18,$80,$06<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E3<br />
MusCreditsDAE5: dc.b $80,$12,$94,$97,$06,$80,$18,$99,$12,$94,$06,$80<br />
dc.b $80,$12,$92,$96,$06,$80,$18,$97,$12,$92,$06,$80<br />
dc.b $E3<br />
MusCreditsDAFE: dc.b $80,$99,$80,$99,$80,$9E,$80,$E3<br />
MusCreditsDB06: dc.b $EF,$07,$80,$54,$C7,$04,$C8,$C9,$CA,$24,$CD,$D2<br />
dc.b $18,$D0,$24,$CF,$CB,$18,$CB,$0C,$CA,$80,$CD,$60<br />
dc.b $E7,$3C,$CA,$24,$CD,$D2,$18,$D4,$24,$D0,$D4,$18<br />
dc.b $D4,$24,$D6,$60,$E7,$3C,$E3<br />
MusCred_FM2: dc.b $80,$60,$EF,$01,$E8,$06,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $85,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8A,$87,$88,$89,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $88<br />
dc.b $F7,$00,$0B<br />
dc.w z80_ptr(-)<br />
- dc.b $8A<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$E6,$FC,$8A,$8B,$8C,$E6,$04,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$8D,$8A,$8B,$8C,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8D,$06,$99,$E8,$00,$8A,$0C,$8B,$8C,$E9,$E8,$E6<br />
dc.b $0C,$EF,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E6,$F9,$EF,$08<br />
MusCreditsDB93: dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $06,$9C,$12,$9D,$0C,$9E,$F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9D,$04,$80,$08,$9D,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $9C,$04,$80,$08,$9C,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(MusCreditsDB93)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$13,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$60,$EF,$0F,$E6,$F3<br />
dc.b $F0,$04,$02,$03,$02<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$30,$E7,$18,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$EF,$13,$E6,$F5,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$0C,$A9,$08,$A1,$10,$F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$08,$A9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E1,$02,$E9,$F4,$E6,$0A,$F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$EF,$1B,$E1,$00<br />
dc.b $E8,$06,$80,$3C,$B8,$06,$06,$BA,$BD,$BD,$BA,$EF<br />
dc.b $1D,$E6,$FA,$E8,$00,$F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $EF,$1C,$BD,$EF,$1D,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $80,$30,$80,$EF,$01,$E9,$18,$E6,$F9<br />
- dc.b $99,$0C,$A5,$06,$80,$96,$0C,$A2,$06,$80,$97,$0C<br />
dc.b $A3,$06,$80,$98,$0C,$A8,$06,$A7,$99,$06,$99,$12<br />
dc.b $96,$0C,$A2,$06,$80,$97,$0C,$A3,$06,$80,$98,$0C<br />
dc.b $A4,$06,$80<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$22,$E9,$E8,$E6,$03<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$AC,$04,$AE,$08,$B1,$04,$B5,$30,$80,$0C<br />
dc.b $B5,$08,$80,$04,$B6,$08,$B5,$10,$B9,$08,$04,$80<br />
dc.b $08,$B5,$34,$80,$0C,$B5,$BA,$08,$04,$80,$08,$B5<br />
dc.b $04,$B1,$24,$80,$0C,$B1,$08,$80,$04,$B3,$08,$B1<br />
dc.b $04,$B4,$0C,$B3,$08,$B1,$4C,$80,$0C,$B5,$08,$80<br />
dc.b $04,$B6,$08,$80,$04,$B5,$08,$80,$04,$B9,$08,$04<br />
dc.b $80,$08,$B5,$1C,$80,$0C,$BA,$18,$BC,$08,$BA,$04<br />
dc.b $BD,$18,$80,$0C,$BA,$04,$80,$08,$B8,$18,$B5,$B1<br />
dc.b $B3,$0C,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$0C,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$14,$B1,$04,$E6,$FF,$EF,$24,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $AC,$12,$AB,$0C,$AC,$06,$AB,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $B3,$12,$B2,$0C,$B3,$06,$B2,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $AC,$06,$80,$A9,$80,$AA,$80,$AB,$80,$AC,$AC,$A9<br />
dc.b $80,$AA,$80,$AC,$80,$A9,$80,$A9,$80,$AD,$80,$AD<br />
dc.b $80,$B0,$80,$B0,$80,$B3,$80,$B3,$80,$80,$0C,$A2<br />
dc.b $12,$80,$06,$A2,$12,$AD,$AE,$06,$80,$E6,$FD,$A2<br />
dc.b $6C,$F2<br />
MusCreditsDD59: dc.b $80,$0C,$C4,$06,$80,$C6,$80,$C4,$80,$C9,$80,$C9<br />
dc.b $80,$CB,$CD,$80,$0C,$80,$CB,$18,$C6,$06,$80,$C9<br />
dc.b $C9,$80,$CB,$0C,$80,$12,$80,$1E,$C7,$06,$C9,$C7<br />
dc.b $CB,$80,$C9,$80,$C7,$C9,$80,$C6,$E7,$C6,$30,$E7<br />
dc.b $18,$80,$18,$E3<br />
MusCreditsDD8D: dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
dc.b $06,$AB,$9F,$0C,$E3<br />
MusCreditsDD9D: dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$B6,$80,$18<br />
dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$30,$E7,$E3<br />
MusCreditsDDB5: dc.b $BF,$06,$BD,$BF,$12,$C2,$BF,$0C,$C1,$80,$06,$12<br />
dc.b $C4,$0C,$C2,$06,$80,$C9,$C6,$3C,$80,$06,$0C,$C7<br />
dc.b $12,$C6,$C4,$06,$C2,$C1,$18,$E3<br />
MusCreditsDDD5: dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$E3<br />
MusCreditsDDEA: dc.b $A2,$0C,$AE,$AC,$08,$AE,$04,$AC,$08,$A9,$04,$A7<br />
dc.b $08,$04,$E3<br />
MusCreditsDDF9: dc.b $80,$0C,$B1,$AE,$06,$06,$AC,$0C,$80,$B0,$AE,$06<br />
dc.b $06,$AC,$0C,$E3<br />
MusCreditsDE09: dc.b $AE,$AC,$06,$06,$AA,$0C,$80,$AC,$0C,$06,$06,$AE<br />
dc.b $AC,$E3<br />
MusCreditsDE17: dc.b $BA,$04,$80,$08,$B8,$18,$B5,$B1,$E3<br />
MusCreditsDE20: dc.b $AE,$06,$80,$AE,$80,$A9,$80,$A9,$80,$E3<br />
MusCreditsDE2A: dc.b $8A,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $E3<br />
MusCred_FM3: dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$18,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $B8,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $BD,$3C,$E9,$E8,$E6,$02,$E1,$03,$EF,$04,$E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$09,$E9,$0C,$E6,$FD,$E0,$40<br />
dc.b $F0,$06,$01,$05,$04<br />
dc.b $E1,$00<br />
- dc.b $9F,$0C,$AB,$06,$80,$A9,$80,$AB,$9F,$80,$9F,$AB<br />
dc.b $80,$A9,$80,$AB,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $9D,$0C,$A9,$06,$80,$A8,$80,$A9,$9C,$80,$9C,$A8<br />
dc.b $80,$A6,$80,$A8,$0C<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0D,$E6,$FB,$E0,$C0,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0F,$E0,$80,$E6,$0B,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$48,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$0C<br />
dc.b $F0,$18,$01,$03,$04<br />
dc.b $E6,$F3,$E0,$C0,$EF,$14,$A2,$14,$A4,$04,$A5,$04<br />
dc.b $80,$08,$A9,$04,$80,$08,$A8,$04,$80,$08,$A9,$04<br />
dc.b $80,$08,$AC,$08,$A9,$10<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$18,$E9,$F4,$E6,$08,$F4,$E0,$40,$80,$60,$80<br />
dc.b $30,$C6,$06,$80,$C2,$0C,$C4,$09,$C2,$03,$BF,$0C<br />
dc.b $80,$60,$80,$3C,$80,$60,$EF,$1B,$E6,$FB,$E0,$C0<br />
dc.b $E8,$06,$C4,$06,$06,$C6,$C9,$C9,$C6,$E8,$00,$CD<br />
dc.b $0C,$E8,$06,$C9,$06,$C6,$C9,$0C,$80,$80,$12,$EF<br />
dc.b $1C,$E8,$00,$BD,$BA,$0C,$E8,$06,$EF,$1B,$CE,$06<br />
dc.b $CE,$80,$CE,$80,$CE,$E8,$00,$CF,$0C,$D0,$80,$E8<br />
dc.b $06,$D0,$06,$06,$D2,$D0,$E8,$00,$CD,$0C,$E8,$06<br />
dc.b $C9,$06,$C6,$C9,$0C,$E8,$00,$EF,$1C,$80,$1E,$C2<br />
dc.b $0C,$C2,$BD,$06,$80,$60,$80,$60,$EF,$00,$E9,$18<br />
dc.b $80,$60,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC,$06<br />
dc.b $AE,$B1,$80,$B4,$B1,$80,$B1,$80,$60,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$60,$EF,$22,$E9,$DC,$E6,$FF,$E0,$80<br />
dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $CD,$30,$CB,$18,$CD,$0C,$CB,$C9,$30,$CE,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$FC,$80,$C4,$80,$C4,$80,$C6,$18,$08,$C4,$04<br />
dc.b $E9,$0C,$E6,$FF,$E0,$C0,$EF,$00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $CB,$12,$CB,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $D0,$12,$D0,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$CB,$12,$80,$06,$CB,$80,$CA,$12,$CB,$CA<br />
dc.b $0C,$C5,$18,$C8,$CB,$D1,$80,$0C,$CD,$80,$CD,$12<br />
dc.b $CC,$CD,$06,$80,$E6,$F8,$EF,$01,$E1,$03,$A2,$6C<br />
dc.b $F2<br />
MusCreditsDFF2: dc.b $80,$60,$BC,$06,$BD,$BC,$B8,$BA,$B6,$0C,$B8,$B3<br />
dc.b $B3,$06,$B6,$0C,$B8,$E3<br />
MusCreditsE004: dc.b $80,$0C,$CD,$04,$80,$10,$CD,$04,$80,$0C,$CD,$0C<br />
dc.b $CE,$08,$CD,$04,$80,$18,$80,$0C,$CB,$04,$80,$10<br />
dc.b $CB,$04,$80,$0C,$CB,$0C,$CD,$08,$CB,$04,$80,$18<br />
- dc.b $80,$0C,$C9,$04,$80,$10,$C9,$04,$80,$0C,$C9,$0C<br />
dc.b $CB,$08,$C9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E3<br />
MusCreditsE040: dc.b $80,$18,$B8,$0B,$80,$0D,$BA,$0C,$0B,$80,$19,$BD<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE051: dc.b $80,$0C,$C4,$80,$C4,$80,$C6,$80,$C6,$E3<br />
MusCreditsE05B: dc.b $CD,$06,$80,$CD,$80,$CA,$80,$CA,$80,$E3<br />
MusCreditsE065: dc.b $EF,$05,$E9,$F4,$C6,$60,$CB,$CD,$E7,$CD,$C6,$60<br />
dc.b $D0,$D0,$24,$D2,$60,$E7,$3C,$E3<br />
MusCred_FM4: dc.b $80,$60,$E9,$FB,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$1D,$E6,$02,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B5,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B8,$3C,$E6,$06,$EF,$05<br />
dc.b $F0,$02,$01,$FE,$04<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E9,$F4,$E6,$F7<br />
dc.b $F0,$0C,$01,$FB,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$25,$C3,$06,$C3,$80,$0C,$C3,$06,$C3,$05,$80<br />
dc.b $0D,$C3,$06,$C5,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$05,$F4,$E1,$02,$E0<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$0C,$80,$60,$EF,$10,$E6,$F7,$E1,$00,$E0<br />
dc.b $40,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $B3,$B7,$06,$AE,$0C,$B1,$B3,$B7,$06,$80,$B7,$AE<br />
dc.b $0C,$B1,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $EF,$15,$E6,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
- dc.b $EF,$14,$80,$4E,$E0,$40,$A1,$12,$A2,$06,$E0,$C0<br />
dc.b $EF,$16,$80,$30,$80,$06,$BA,$08,$B9,$04,$B8,$08<br />
dc.b $B7,$04,$B6,$08,$B5,$04<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E9,$F4,$E6,$02,$E0,$C0<br />
dc.b $F0,$01,$01,$03,$03<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$1E,$E0,$40,$E6,$FE,$E9,$F4,$F4,$E8<br />
dc.b $06,$80,$0C,$C1,$06,$12,$18,$C4,$06,$12,$0C,$EF<br />
dc.b $1C,$E0,$C0,$E6,$FA,$E8,$00,$C6,$E8,$06,$E6,$06<br />
dc.b $EF,$1E,$E0,$40,$C2,$06,$12,$18,$C4,$06,$12,$18<br />
dc.b $C1,$06,$12,$18,$C4,$06,$12,$0C,$EF,$1A,$E0,$C0<br />
dc.b $E9,$0C,$C6,$06,$C6,$80,$C6,$80,$C6,$E8,$00,$C7<br />
dc.b $0C,$C8,$06,$EF,$1E,$E0,$40,$E9,$F4,$E8,$06,$80<br />
dc.b $C4,$06,$12,$0C,$80,$60,$EF,$20,$E9,$18,$E6,$FA<br />
dc.b $E0,$C0,$E8,$00,$B4,$03,$E7,$B6,$5D,$B3,$03,$E7<br />
dc.b $B5,$5D,$B1,$03,$E7,$B3,$5D,$B3,$03,$E7,$B5,$5D<br />
dc.b $80,$60,$EF,$22,$E0,$40,$E9,$E8,$E6,$04,$80,$30<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $C9,$30,$C8,$18,$C9,$0C,$C8,$C6,$30,$C9,$80,$0C<br />
dc.b $C1,$80,$C1,$80,$C2,$80,$C2,$E6,$04,$80,$C1,$80<br />
dc.b $C1,$80,$C2,$80,$C2,$E6,$FC,$80,$C1,$80,$C1,$80<br />
dc.b $C2,$18,$08,$C1,$04,$E9,$0C,$E6,$FF,$E0,$C0,$EF<br />
dc.b $00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $C8,$12,$C8,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $CB,$12,$CB,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E1,$03,$E6,$08,$F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $E6,$F0,$EF,$01<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $A2,$6C,$F2<br />
MusCreditsE22D: dc.b $A2,$14,$A4,$04,$A5,$04,$80,$08,$A9,$04,$80,$08<br />
dc.b $A8,$04,$80,$08,$A9,$04,$80,$08,$AC,$08,$A9,$10<br />
dc.b $E3<br />
MusCreditsE246: dc.b $80,$0C<br />
dc.b $C9,$04,$80,$10<br />
dc.b $C9,$04,$80,$0C<br />
dc.b $C9,$0C<br />
dc.b $CB,$08<br />
dc.b $C9,$04,$80,$18,$80,$0C<br />
dc.b $C8,$04,$80,$10<br />
dc.b $C8,$04,$80,$0C<br />
dc.b $C8,$0C<br />
dc.b $C9,$08<br />
dc.b $C8,$04,$80,$18,$80,$0C<br />
<br />
if 1==1<br />
; this part of the original credits music (CNZ PSG) sounds buggy (dissonant)<br />
dc.b $C6,$04,$80,$10<br />
dc.b $C6,$04,$80,$0C<br />
dc.b $C6,$0C<br />
dc.b $C8,$08<br />
dc.b $C6,$04,$80,$18,$80,$0C<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $C7,$08<br />
else<br />
; replace the above block of notes with this to fix it.<br />
; (I'm not sure why, but the notes $C6 and $C7 are broken here,<br />
; so I've replaced them with pitch-shifted $C8s)<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$10 ; $C6<br />
dc.b $C8,$04,$80,$0C ; $C6<br />
dc.b $C8,$0C ; $C6<br />
dc.b $E1,0<br />
dc.b $C8,$08<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$24 ; $C6<br />
dc.b $E1,0<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $E1,-32<br />
dc.b $C8,$08 ; $C7<br />
dc.b $E1,0<br />
endif<br />
<br />
dc.b $C5,$04,$80,$18<br />
dc.b $E3<br />
MusCreditsE28F: dc.b $EF,$25,$80,$0C,$D0,$D4,$D7,$DB,$0C,$80,$06,$DB<br />
dc.b $0C,$DC,$06,$DB,$0C,$DD,$60,$DE,$0C,$80,$DE,$80<br />
dc.b $80,$06,$DD,$12,$DE,$0C,$E3<br />
MusCreditsE2AE: dc.b $80,$18,$B5,$0B,$80,$0D,$B7,$0C,$0B,$80,$19,$BA<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE2BF: dc.b $C3,$05,$80,$13,$C3,$12,$C3,$05,$E3<br />
MusCreditsE2C8: dc.b $CA,$06,$80,$CA,$80,$C6,$80,$C6,$80,$E3<br />
MusCreditsE2D2: dc.b $AF,$0C,$B3,$06,$B6,$0C,$AF,$B1,$06,$80,$B1,$0C<br />
dc.b $B5,$06,$B8,$0C,$B1,$06,$80,$B6,$0C,$BA,$06,$B1<br />
dc.b $0C,$B5,$B6,$BA,$06,$80,$BA,$AF,$0C,$B3,$B5,$B8<br />
dc.b $06,$B2,$0C,$B3,$B5,$B8,$06,$80,$B8,$B2,$0C,$B5<br />
dc.b $E3<br />
MusCred_FM5: dc.b $E9,$E8,$E6,$F8,$E1,$05,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$18,$E6,$08,$E1,$00,$EF,$02<br />
dc.b $F0,$0C,$01,$FC,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B1,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B5,$3C,$E9,$F4,$E6,$07<br />
dc.b $F0,$30,$01,$04,$04<br />
dc.b $EF,$06<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E6,$F6<br />
dc.b $F0,$0C,$01,$05,$04<br />
dc.b $E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$25,$C6,$06,$C6,$80,$0C,$C6,$06,$C6,$05,$80<br />
dc.b $0D,$C6,$06,$C8,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$E6,$05,$F4,$80,$01,$EF,$0C,$E1<br />
dc.b $FE,$E0,$40,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $23,$80,$0C,$80,$60,$EF,$11,$E9,$F4,$E6,$F4,$E1<br />
dc.b $00,$E0,$C0<br />
dc.b $F0,$06,$01,$06,$05<br />
dc.b $80,$60,$80,$30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60<br />
dc.b $80,$06,$CB,$80,$CB,$C9,$80,$C9,$80,$C7,$80,$C7<br />
dc.b $80,$C6,$03,$80,$C6,$80,$09,$80,$06,$80,$60,$80<br />
dc.b $30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60,$EF,$16,$E9<br />
dc.b $0C,$E6,$04,$F4,$E0,$80,$80,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
dc.b $80,$2F,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$30,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$60,$EF,$19,$E9,$F4,$E0,$C0,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$27,$B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$2A,$80,$60,$EF,$1E,$E9,$F4,$E8,$06<br />
- dc.b $80,$0C,$C4,$06,$12,$18,$C8,$06,$12,$0C,$80,$C6<br />
dc.b $06,$12,$18,$C8,$06,$12,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$20,$E8,$00,$E9,$18,$E6,$FA,$B8,$03<br />
dc.b $E7,$BA,$5D,$B6,$03,$E7,$B8,$5D,$B4,$03,$E7,$B6<br />
dc.b $5D,$B6,$03,$E7,$B8,$5D,$80,$60,$EF,$22,$E9,$F4<br />
dc.b $E6,$05<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$A7,$04,$A9,$08,$AC,$04,$B1,$30,$80,$0C<br />
dc.b $B1,$08,$80,$04,$B3,$08,$B1,$10,$B5,$08,$B5,$04<br />
dc.b $80,$08,$B0,$34,$80,$0C,$B0,$B5,$08,$04,$80,$08<br />
dc.b $B1,$04,$AE,$24,$80,$0C,$AE,$08,$80,$04,$B0,$08<br />
dc.b $AE,$04,$B1,$0C,$AF,$08,$AD,$4C,$80,$0C,$B1,$08<br />
dc.b $80,$04,$B3,$08,$80,$04,$B1,$08,$80,$04,$B5,$08<br />
dc.b $B5,$04,$80,$08,$B0,$1C,$80,$0C,$B5,$18,$B8,$08<br />
dc.b $B5,$04,$BA,$18,$80,$0C,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$04,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$F8,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$AA,$14,$A9,$04,$E6,$0C,$EF,$23,$E1,$03<br />
dc.b $E6,$F7,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E6,$09<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $F2<br />
MusCreditsE4CD: dc.b $80,$1E,$EF,$14,$A4,$12,$A5,$06,$EF,$16,$80,$30<br />
dc.b $80,$06,$BD,$08,$BC,$04,$BB,$08,$BA,$04,$B9,$08<br />
dc.b $B8,$04,$E3<br />
MusCreditsE4E8: dc.b $80,$18,$B1,$0B,$80,$0D,$B3,$0C,$0B,$80,$19,$B6<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE4F9: dc.b $C6,$05,$80,$13,$C6,$12,$C6,$05,$E3<br />
MusCreditsE502: dc.b $80,$60,$AC,$06,$80,$AC,$0C,$AE,$06,$80,$AE,$0C<br />
dc.b $AF,$06,$E3<br />
MusCred_PSG1: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG1)<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$F4,$E6,$FE,$F5,$01,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $AE,$B3,$06,$AC,$0C,$AE,$AE,$B3,$06,$80,$B3,$AB<br />
dc.b $0C,$AE,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $F5,$0B,$80,$04,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$20,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$F5,$00,$E8,$06,$E9,$F4,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$80,$C2,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$04,$80,$C2,$80,$0C,$C2,$80,$60,$F5,$08,$E9<br />
dc.b $04,$EC,$02,$E8,$06<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F0,$EC,$FF,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $E9,$18,$EC,$02,$B5,$30,$B3,$18,$B5,$0C,$B3,$B1<br />
dc.b $30,$B6,$EC,$FE,$80,$0C,$B8,$80,$B8,$80,$BA,$80<br />
dc.b $BA,$EC,$03,$C4,$18,$C1,$BD,$BF,$0C,$80,$EC,$FC<br />
dc.b $80,$B8,$80,$B8,$80,$BA,$18,$08,$B8,$04,$E9,$F4<br />
dc.b $EC,$01,$F5,$05<br />
- dc.b $80,$60<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$C8,$12,$80,$06,$C8,$80,$C6,$12,$C8,$C6<br />
dc.b $0C,$C1,$18,$C5,$C8,$CB,$80,$0C,$CA,$80,$CA,$12<br />
dc.b $C9,$CA,$06,$80,$09,$E9,$30,$EC,$FC,$F6<br />
dc.w z80_ptr(MusCreditsE770)<br />
dc.b $F2<br />
MusCreditsE618: dc.b $80,$0C,$BD,$06,$12,$18,$C4,$06,$12,$0C,$80,$C2<br />
dc.b $06,$12,$18,$C4,$06,$12,$0C,$E3<br />
MusCreditsE62C: dc.b $80,$60,$80,$0C,$C2,$80,$C2,$80,$E3<br />
MusCreditsE635: dc.b $AC,$0C,$AF,$06,$B3,$0C,$AC,$AC,$06,$80,$AC,$0C<br />
dc.b $AF,$06,$B5,$0C,$AC,$06,$80,$06,$B1,$0C,$B6,$06<br />
dc.b $AE,$0C,$B1,$B3,$B6,$06,$80,$B6,$AA,$0C,$AF,$AF<br />
dc.b $B5,$06,$AC,$0C,$AF,$B2,$B5,$06,$80,$B5,$AE,$0C<br />
dc.b $B2,$E3<br />
MusCred_PSG2: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG2)<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$0C,$EC,$FD,$F5,$04,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
dc.b $F0,$03,$02,$01,$05<br />
dc.b $F5,$0A,$E9,$E8,$EC,$02,$80,$30,$80,$80,$BD,$06<br />
dc.b $BF,$C6,$C2,$1E,$80,$60,$80,$06,$C6,$80,$C6,$C4<br />
dc.b $80,$C4,$80,$C3,$80,$C3,$80,$BF,$03,$80,$BF,$80<br />
dc.b $09,$80,$06,$80,$30,$80,$80,$BD,$06,$BF,$C6,$C2<br />
dc.b $1E,$80,$60,$F4<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$00,$EC,$FE,$E8,$06,$80,$60,$80,$0C,$BF,$80<br />
dc.b $BF,$80,$BF,$80,$BF,$80,$60,$80,$0C,$BF,$80,$BF<br />
dc.b $80,$BF,$04,$80,$BF,$80,$0C,$BF,$80,$60,$EC,$02<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F4,$EC,$FF,$E9,$E8,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $E9,$18,$EC,$02,$B1,$30,$B0,$18,$B1,$0C,$B0,$AE<br />
dc.b $30,$B1,$EC,$FE,$80,$0C,$B5,$80,$B5,$80,$B6,$80<br />
dc.b $B6,$EC,$03,$80,$B1,$80,$B1,$80,$B1,$80,$B1,$EC<br />
dc.b $FC,$80,$B1,$80,$B1,$80,$B1,$18,$08,$B1,$04,$EC<br />
dc.b $01,$E9,$18,$F5,$05,$E1,$01,$80,$60,$80,$80,$80<br />
dc.b $80,$80,$80,$0C,$CD,$06,$80,$D4,$CD,$80,$0C,$CD<br />
dc.b $06,$80,$D4,$CD,$80,$18,$80,$54,$E9,$24,$EC,$FD<br />
MusCreditsE770: dc.b $F5,$03,$80,$06<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$FF<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$01<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusCred_PSG3: dc.b $F3,$E7,$80,$60,$F5,$02<br />
- dc.b $C6,$0C,$0C,$0C,$06,$06,$0C,$0C,$06,$06,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$1F<br />
dc.w z80_ptr(-)<br />
dc.b $0C,$F5,$03,$C6,$F5,$02<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $06,$06,$06,$06<br />
dc.b $F7,$01,$04<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$04,$EC,$02<br />
- dc.b $E8,$03,$C6,$06,$06,$E8,$00,$0C<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$02,$EC,$FD<br />
- dc.b $80,$0C,$C6,$06,$80,$07,$C6,$06,$80,$11,$C6,$0C<br />
dc.b $80,$06,$C6,$0C,$80,$06,$C6,$80<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$02<br />
- dc.b $C6,$0C,$08,$04<br />
dc.b $F7,$00,$18<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$0C,$0C,$08,$04<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$04,$EC,$02<br />
- dc.b $C6,$06,$06,$0C<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EC,$FF<br />
- dc.b $F5,$01,$C6,$0C,$F5,$02,$EC,$FF,$08,$F5,$01,$EC<br />
dc.b $01,$04<br />
dc.b $F7,$00,$27<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$FF,$F5,$04<br />
- dc.b $E8,$03,$C6,$0C,$E8,$0C,$0C<br />
dc.b $F7,$00,$1E<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$03,$C6,$06,$E8,$0E,$12,$E8,$03,$0C,$E8,$0F<br />
dc.b $0C,$F2<br />
MusCred_DAC: dc.b $82,$06,$82,$82,$82,$82,$0C,$06,$0C,$06,$0C,$0C<br />
dc.b $0C<br />
- dc.b $81,$18,$82<br />
dc.b $F7,$00,$0E<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C<br />
- dc.b $82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EA,$EA,$F8<br />
dc.w z80_ptr(MusCreditsEA6E)<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$82,$06,$82,$82,$82,$81,$0C,$82,$06,$82<br />
dc.b $81,$81,$82,$82,$82,$82<br />
- dc.b $81,$18,$82,$81,$82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$82,$82,$82,$06,$82,$8C,$8C,$8D,$8D<br />
dc.b $8E,$8E,$F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$18,$82,$0C,$81,$18,$82,$0C,$82,$82,$06,$82<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$0C,$82,$82,$82,$8D,$06,$8D,$8E,$8E,$82,$06<br />
dc.b $82,$8D,$0C,$82,$0C,$82,$06,$82,$80,$82,$82,$0C<br />
MusCreditsE8E5: dc.b $82,$0C,$82,$82,$06,$82,$8D,$8D<br />
- dc.b $81,$0C,$8F,$06,$90,$82,$0C,$90,$06,$91,$81,$0C<br />
dc.b $8F,$06,$91,$82,$0C,$8F,$06,$91<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$8F,$06,$91,$82,$0C,$8F,$06,$91,$8C,$06<br />
dc.b $03,$03,$8D,$06,$8D,$8D,$8E,$8E,$8E,$81,$06,$0C<br />
dc.b $82,$06,$80,$0C,$81,$82,$8E,$82,$06,$82,$82,$82<br />
- dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$12,$8C,$06<br />
dc.b $82,$0C,$83,$06,$81,$80<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$06,$82,$06<br />
dc.b $81,$0C,$06,$82,$0C,$08,$04,$EA,$CD,$82,$30,$82<br />
dc.b $0C,$82,$82,$82,$08,$04,$F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$04,$82,$08,$04<br />
dc.b $08,$04,$04,$04,$04,$08,$04,$EA,$C5<br />
- dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82,$0C,$06<br />
dc.b $06,$81,$0C,$82,$06,$82,$82,$82,$8D,$0C,$82,$0C<br />
dc.b $0C,$0C,$06,$06<br />
- dc.b $81,$0C,$81,$82,$80,$81,$81,$82,$83<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$82,$82,$82,$82,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $81,$06,$81,$82,$82,$81,$82,$81,$81,$82,$02,$82<br />
dc.b $04,$81,$0C,$06,$82,$0C,$06,$06,$81,$18,$82,$0C<br />
dc.b $81,$81,$18,$82,$81,$06,$81,$12,$82,$0C,$81,$81<br />
dc.b $18,$82,$81,$18,$82,$0C,$81,$81,$18,$82,$81,$06<br />
dc.b $81,$12,$82,$0C,$0C,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $82,$02,$04,$81,$0C,$06,$0C,$82,$02,$04,$81,$0C<br />
dc.b $06,$0C,$82,$06,$82,$82,$82,$EA,$C0,$81,$0C,$82<br />
dc.b $81,$82,$81,$82,$81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$0F<br />
dc.w z80_ptr(-)<br />
dc.b $81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$13<br />
dc.w z80_ptr(-)<br />
dc.b $82,$08,$0C,$04,$81,$0C,$82,$81,$82,$81,$0C,$82<br />
dc.b $81,$06,$80,$02,$82,$82,$82,$09,$82,$03<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$06,$80,$02,$82,$82,$82,$09,$82<br />
dc.b $03<br />
dc.b $F7,$01,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$82,$81,$06,$82,$12,$82,$0C,$81<br />
dc.b $F2<br />
MusCreditsEA6E: dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$83,$E3<br />
MusCreditsEA84: dc.b $81,$18,$82,$0C,$81,$18,$0C,$82,$81,$81,$18,$82<br />
dc.b $0C,$81,$12,$81,$82,$18,$81,$82,$0C,$81,$18,$0C<br />
dc.b $82,$81,$E3<br />
MusCreditsEA9F: dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$0C,$82,$04,$81<br />
dc.b $0C,$82,$81,$81,$08,$0C,$04,$82,$0C,$81,$08,$0C<br />
dc.b $82,$04,$81,$0C,$82,$82,$08,$04,$E3,$81,$06,$80<br />
dc.b $03,$81,$81,$06,$82,$81,$06,$80,$03,$81,$81,$06<br />
dc.b $82,$03,$82,$81,$06,$80,$03,$81,$81,$06,$82,$E3<br />
MusCred_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$01,$1F,$1F,$FF,$0F,$17,$27,$28,$80<br />
dc.b $08,$09,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$25,$0E,$30,$84<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$0B,$0D,$19,$0B,$80,$80<br />
dc.b $08,$0A,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$24,$13,$2D,$80<br />
dc.b $3D,$01,$51,$21,$01,$12,$14,$14,$0F,$0A,$05,$05<br />
dc.b $05,$00,$00,$00,$00,$2B,$2B,$2B,$1B,$19,$80,$80,$80<br />
dc.b $04,$57,$70,$02,$50,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$06,$00,$0A,$0A,$00,$00,$0F,$0F,$1A,$10,$80,$80<br />
dc.b $35,$01,$13,$01,$00,$1F,$18,$1D,$19,$00,$06,$09<br />
dc.b $0D,$00,$02,$00,$03,$00,$15,$06,$16,$1E,$83,$80,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1A,$16,$88,$88<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$14,$0F,$37,$80<br />
dc.b $3B,$0F,$01,$06,$02,$DF,$1F,$1F,$DF,$0C,$0A,$00<br />
dc.b $03,$0F,$00,$00,$01,$F3,$55,$05,$5C,$22,$22,$20,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1C,$14,$84,$80<br />
dc.b $3A,$69,$50,$70,$60,$1C,$1A,$18,$18,$10,$02,$0C<br />
dc.b $09,$08,$06,$06,$03,$F9,$06,$56,$06,$28,$14,$15,$00<br />
dc.b $3D,$00,$02,$01,$01,$4C,$50,$0F,$12,$0C,$00,$02<br />
dc.b $05,$01,$00,$00,$00,$28,$2A,$29,$19,$1A,$06,$00,$00<br />
dc.b $2C,$71,$31,$71,$31,$1F,$1F,$16,$16,$00,$00,$0F<br />
dc.b $0F,$00,$00,$0F,$0F,$00,$00,$FA,$FA,$15,$14,$00,$00<br />
dc.b $18,$37,$31,$32,$31,$9E,$1C,$DC,$9C,$0D,$04,$06<br />
dc.b $01,$08,$03,$0A,$05,$B6,$36,$B6,$28,$2C,$14,$22,$00<br />
dc.b $3D,$01,$02,$02,$02,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$24,$18,$18,$18,$1C,$82,$82,$82<br />
dc.b $32,$71,$33,$0D,$01,$5F,$5F,$99,$94,$05,$05,$05<br />
dc.b $07,$02,$02,$02,$02,$11,$11,$11,$72,$23,$26,$2D,$80<br />
dc.b $3A,$32,$52,$01,$31,$1F,$1F,$1F,$18,$01,$00,$1F<br />
dc.b $00,$00,$00,$0F,$00,$5A,$03,$0F,$1A,$3B,$4F,$30,$00<br />
dc.b $3C,$42,$32,$41,$41,$12,$12,$12,$12,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$06,$06,$08,$08,$24,$24,$08,$08<br />
dc.b $31,$34,$30,$35,$31,$DF,$9F,$DF,$9F,$0C,$0C,$07<br />
dc.b $09,$07,$07,$07,$08,$2F,$1F,$1F,$2F,$17,$14,$32,$80<br />
dc.b $3D,$01,$01,$01,$01,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$20,$1A,$1A,$1A,$19,$84,$84,$84<br />
dc.b $24,$70,$30,$74,$38,$12,$1F,$1F,$1F,$05,$05,$03<br />
dc.b $03,$05,$05,$03,$03,$36,$26,$2C,$2C,$0A,$06,$08,$08<br />
dc.b $3A,$01,$01,$01,$02,$8D,$07,$07,$52,$09,$00,$00<br />
dc.b $03,$01,$02,$02,$00,$5F,$0F,$0F,$2F,$18,$18,$22,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$03,$03,$08,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$17,$20,$28,$80<br />
dc.b $20,$7A,$00,$31,$00,$9F,$DC,$D8,$DF,$10,$04,$0A<br />
dc.b $04,$0F,$08,$08,$08,$5F,$BF,$5F,$BF,$14,$17,$2B,$80<br />
dc.b $3A,$61,$51,$08,$02,$5D,$5D,$5D,$50,$04,$1F,$0F<br />
dc.b $1F,$00,$00,$00,$00,$1F,$0F,$5F,$0F,$22,$22,$1E,$80<br />
dc.b $02,$01,$02,$55,$04,$92,$8E,$8D,$54,$0D,$00,$0C<br />
dc.b $03,$00,$00,$00,$00,$FF,$0F,$2F,$5F,$16,$1D,$2A,$80<br />
dc.b $02,$75,$73,$71,$31,$1F,$96,$58,$9F,$01,$03,$1B<br />
dc.b $08,$01,$01,$04,$05,$FF,$3F,$2F,$2F,$24,$30,$29,$80<br />
dc.b $20,$66,$60,$65,$60,$DF,$9F,$DF,$1F,$00,$09,$06<br />
dc.b $0C,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$1C,$16,$3A,$80<br />
dc.b $0D,$32,$06,$08,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$86,$80,$8D<br />
dc.b $38,$3A,$11,$0A,$02,$D4,$50,$14,$0E,$05,$02,$08<br />
dc.b $88,$00,$00,$00,$00,$99,$09,$09,$1A,$2D,$19,$2C,$86<br />
dc.b $0D,$32,$02,$04,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$8B,$86,$93<br />
dc.b $3A,$20,$60,$23,$01,$1E,$1F,$1F,$1F,$0A,$0B,$0A<br />
dc.b $0A,$05,$0A,$07,$08,$A4,$96,$85,$78,$21,$28,$25,$00<br />
dc.b $3A,$32,$32,$56,$42,$8D,$15,$4F,$52,$06,$07,$08<br />
dc.b $04,$02,$00,$00,$00,$18,$28,$18,$28,$19,$2A,$20,$00<br />
dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$19,$13,$37,$80<br />
dc.b $3D,$01,$02,$02,$02,$14,$8C,$0E,$0E,$08,$02,$05<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$1A,$80,$80,$80<br />
; end of Mus_Credits<br />
<br />
; ------------------------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ------------------------------------------------------------------------------------------<br />
; WARNING the sound driver treats certain sounds specially<br />
; going by the ID of the sound.<br />
; SndID_Ring, SndID_RingLeft, SndID_Gloop, SndID_SpindashRev<br />
; are referenced by the sound driver directly.<br />
; If needed you can change this in s2.sounddriver.asm<br />
<br />
<br />
; NOTE: the exact order of this list determines the priority of each sound, since it determines the sound's SndID.<br />
; a sound can get dropped if a higher-priority sound is already playing.<br />
; the rules for sound priority are currently unknown, but you can generally swap pointer lines around to resolve priority conflicts.<br />
; loc_FEE91: SoundPoint:<br />
SoundIndex:<br />
SndPtr_Jump: rom_ptr_z80 Sound20 ; jumping sound<br />
SndPtr_Checkpoint: rom_ptr_z80 Sound21 ; checkpoint ding-dong sound<br />
SndPtr_SpikeSwitch: rom_ptr_z80 Sound22 ; spike switch sound<br />
SndPtr_Hurt: rom_ptr_z80 Sound23 ; hurt sound<br />
SndPtr_Skidding: rom_ptr_z80 Sound24 ; skidding sound<br />
SndPtr_BlockPush: rom_ptr_z80 Sound25 ; block push sound<br />
SndPtr_HurtBySpikes: rom_ptr_z80 Sound26 ; spiky impalement sound<br />
SndPtr_Sparkle: rom_ptr_z80 Sound27 ; sparkling sound<br />
SndPtr_Beep: rom_ptr_z80 Sound28 ; short beep<br />
SndPtr_Bwoop: rom_ptr_z80 Sound29 ; bwoop<br />
SndPtr_Splash: rom_ptr_z80 Sound2A ; splash sound<br />
SndPtr_Swish: rom_ptr_z80 Sound2B ; swish<br />
SndPtr_BossHit: rom_ptr_z80 Sound2C ; boss hit<br />
SndPtr_InhalingBubble: rom_ptr_z80 Sound2D ; inhaling a bubble<br />
SndPtr_ArrowFiring:<br />
SndPtr_LavaBall: rom_ptr_z80 Sound2E ; arrow firing<br />
SndPtr_Shield: rom_ptr_z80 Sound2F ; shield sound<br />
SndPtr_LaserBeam: rom_ptr_z80 Sound30 ; laser beam<br />
SndPtr_Zap: rom_ptr_z80 Sound31 ; zap<br />
SndPtr_Drown: rom_ptr_z80 Sound32 ; drownage<br />
SndPtr_FireBurn: rom_ptr_z80 Sound33 ; fire + burn<br />
SndPtr_Bumper: rom_ptr_z80 Sound34 ; bumper bing<br />
SndPtr_Ring:<br />
SndPtr_RingRight: rom_ptr_z80 Sound35 ; ring sound<br />
SndPtr_SpikesMove: rom_ptr_z80 Sound36<br />
SndPtr_Rumbling: rom_ptr_z80 Sound37 ; rumbling<br />
rom_ptr_z80 Sound38<br />
SndPtr_Smash: rom_ptr_z80 Sound39 ; smash/breaking<br />
rom_ptr_z80 Sound3A ; nondescript ding<br />
SndPtr_DoorSlam: rom_ptr_z80 Sound3B ; door slamming shut<br />
SndPtr_SpindashRelease: rom_ptr_z80 Sound3C ; spindash unleashed<br />
SndPtr_Hammer: rom_ptr_z80 Sound3D ; slide-thunk<br />
SndPtr_Roll: rom_ptr_z80 Sound3E ; rolling sound<br />
SndPtr_ContinueJingle: rom_ptr_z80 Sound3F ; got continue<br />
SndPtr_CasinoBonus: rom_ptr_z80 Sound40 ; short bonus ding<br />
SndPtr_Explosion: rom_ptr_z80 Sound41 ; badnik bust<br />
SndPtr_WaterWarning: rom_ptr_z80 Sound42 ; warning ding-ding<br />
SndPtr_EnterGiantRing: rom_ptr_z80 Sound43 ; special stage ring flash (unused)<br />
SndPtr_BossExplosion: rom_ptr_z80 Sound44 ; thunk<br />
SndPtr_TallyEnd: rom_ptr_z80 Sound45 ; cha-ching<br />
SndPtr_RingSpill: rom_ptr_z80 Sound46 ; losing rings<br />
rom_ptr_z80 Sound47 ; chain pull chink-chink<br />
SndPtr_Flamethrower: rom_ptr_z80 Sound48 ; flamethrower<br />
SndPtr_Bonus: rom_ptr_z80 Sound49 ; bonus pwoieeew (unused)<br />
SndPtr_SpecStageEntry: rom_ptr_z80 Sound4A ; special stage entry<br />
SndPtr_SlowSmash: rom_ptr_z80 Sound4B ; slower smash/crumble<br />
SndPtr_Spring: rom_ptr_z80 Sound4C ; spring boing<br />
SndPtr_Blip: rom_ptr_z80 Sound4D ; selection blip<br />
SndPtr_RingLeft: rom_ptr_z80 Sound4E ; another ring sound (only plays in the left speaker?)<br />
SndPtr_Signpost: rom_ptr_z80 Sound4F ; signpost spin sound<br />
SndPtr_CNZBossZap: rom_ptr_z80 Sound50 ; mosquito zapper<br />
rom_ptr_z80 Sound51<br />
rom_ptr_z80 Sound52<br />
SndPtr_Signpost2P: rom_ptr_z80 Sound53<br />
SndPtr_OOZLidPop: rom_ptr_z80 Sound54 ; OOZ lid pop sound<br />
SndPtr_SlidingSpike: rom_ptr_z80 Sound55<br />
SndPtr_CNZElevator: rom_ptr_z80 Sound56<br />
SndPtr_PlatformKnock: rom_ptr_z80 Sound57<br />
SndPtr_BonusBumper: rom_ptr_z80 Sound58 ; CNZ bonusy bumper sound<br />
SndPtr_LargeBumper: rom_ptr_z80 Sound59 ; CNZ baaang bumper sound<br />
SndPtr_Gloop: rom_ptr_z80 Sound5A ; CNZ gloop / water droplet sound<br />
SndPtr_PreArrowFiring: rom_ptr_z80 Sound5B<br />
SndPtr_Fire: rom_ptr_z80 Sound5C<br />
SndPtr_ArrowStick: rom_ptr_z80 Sound5D ; chain clink<br />
SndPtr_Helicopter:<br />
SndPtr_WingFortress: rom_ptr_z80 Sound5E ; helicopter<br />
SndPtr_SuperTransform: rom_ptr_z80 Sound5F<br />
SndPtr_SpindashRev: rom_ptr_z80 Sound60 ; spindash charge<br />
SndPtr_Rumbling2: rom_ptr_z80 Sound61 ; rumbling<br />
SndPtr_CNZLaunch: rom_ptr_z80 Sound62<br />
SndPtr_Flipper: rom_ptr_z80 Sound63 ; CNZ blooing bumper<br />
SndPtr_HTZLiftClick: rom_ptr_z80 Sound64 ; HTZ track click sound<br />
SndPtr_Leaves: rom_ptr_z80 Sound65 ; kicking up leaves sound<br />
SndPtr_MegaMackDrop: rom_ptr_z80 Sound66 ; leaf splash?<br />
SndPtr_DrawbridgeMove: rom_ptr_z80 Sound67<br />
SndPtr_QuickDoorSlam: rom_ptr_z80 Sound68 ; door slamming quickly (seems unused)<br />
SndPtr_DrawbridgeDown: rom_ptr_z80 Sound69<br />
SndPtr_LaserBurst: rom_ptr_z80 Sound6A ; robotic laser burst<br />
SndPtr_Scatter:<br />
SndPtr_LaserFloor: rom_ptr_z80 Sound6B ; scatter<br />
SndPtr_Teleport: rom_ptr_z80 Sound6C<br />
SndPtr_Error: rom_ptr_z80 Sound6D ; error sound<br />
SndPtr_MechaSonicBuzz: rom_ptr_z80 Sound6E ; silver sonic buzz saw<br />
SndPtr_LargeLaser: rom_ptr_z80 Sound6F<br />
SndPtr_OilSlide: rom_ptr_z80 Sound70<br />
SndPtr__End:<br />
<br />
; There are many non-relative pointers in these sound effects,<br />
; so the sounds shouldn't simply be BINCLUDE'd.<br />
; They could be included as separate .asm files using "include" instead of "binclude",<br />
; but I wanted to minimize the number of included asm files.<br />
<br />
; some comments on what the various script commands do (after the header):<br />
; 0x00-0x7F sets the note duration (of the previous note and following notes)<br />
; 0x81-0xDF plays a note (the valid range may be smaller for PSG or DAC)<br />
; 0x80 plays silence<br />
; 0xE0-0xFF does special things. I won't list them here... search for "Coordination flags" sonic 2.<br />
<br />
; the FM voices (poorly named "ssamp" or "samples" below)<br />
; are 25 bytes each and go directly to YM2612 registers.<br />
; they can be hard to edit (there's an art to it)<br />
; but search for sonic "Voice editing" for more info if you want to try.<br />
<br />
; jumping sound<br />
Sound20: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$F400<br />
+ dc.b $F5,$00,$9E,$05,$F0,$02,$01,$F8,$65,$A3,$15,$F2<br />
<br />
; checkpoint ding-dong sound<br />
Sound21: dc.w z80_ptr(ssamp21),$0101<br />
dc.w $8005,z80_ptr(+),$0001<br />
ssamp21: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
+ dc.b $EF,$00,$BD,$06,$BA,$16,$F2<br />
<br />
; spike switch sound<br />
Sound22: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C0,$04,$CA,$04<br />
- dc.b $C0,$01,$EC<br />
dc.w $01F7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; hurt sound<br />
Sound23: dc.w z80_ptr(ssamp23),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B0,$07,$E7,$AD<br />
- dc.b $01,$E6<br />
dc.w $01F7,$002F,z80_ptr(-)<br />
dc.b $F2<br />
ssamp23: dc.b $30,$30,$30,$30,$30,$9E,$DC,$D8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$14,$14,$3C,$80<br />
<br />
; skidding sound<br />
Sound24: dc.w $0000,$0102 ; sound header... no sample and 2 script entries<br />
dc.w $80A0,z80_ptr(+),$F400 ; entry 1 header<br />
dc.w $80C0,z80_ptr(++),$F400 ; entry 2 header<br />
+ dc.b $F5,$00,$AF,$01,$80,$AF,$80,$03 ; script entry 1<br />
- dc.b $AF,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 1 end<br />
+ dc.b $F5,$00,$80,$01,$AD,$80,$AD,$80,$03 ; script entry 2<br />
- dc.b $AD,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 2 end<br />
<br />
; block push sound<br />
Sound25: dc.w z80_ptr(ssamp25),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$01,$8B,$0A,$80,$02,$F2<br />
ssamp25: dc.b $FA,$21,$10,$30,$32,$2F,$2F,$1F,$2F,$05,$09,$08<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
; spiky impalement sound<br />
Sound26: dc.w z80_ptr(ssamp26),$0101<br />
dc.w $8005,z80_ptr(+),$F200<br />
+ dc.b $EF,$00,$F0,$01,$01,$10,$FF,$CF,$05,$D7,$25,$F2<br />
ssamp26: dc.b $3B,$3C,$30,$39,$31,$DF,$1F,$1F,$DF,$04,$04,$05<br />
dc.b $01,$04,$04,$04,$02,$FF,$1F,$0F,$AF,$29,$0F,$20,$80<br />
<br />
; sparkling sound<br />
Sound27: dc.w z80_ptr(ssamp27),$0101<br />
dc.w $8004,z80_ptr(+),$0C1C<br />
+ dc.b $EF,$00,$C1,$05,$C4,$05,$C9,$2B,$F2<br />
ssamp27: dc.b $07,$73,$33,$33,$73,$0F,$19,$14,$1A,$0A,$0A,$0A<br />
dc.b $0A,$0A,$0A,$0A,$0A,$57,$57,$57,$57,$00,$00,$00,$00<br />
<br />
; short beep<br />
Sound28: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$E803<br />
+ dc.b $F5,$04,$CB,$04,$F2<br />
<br />
; bwoop<br />
Sound29: dc.w $0000,$0101<br />
dc.w $80A0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$E6,$35,$8E,$06,$F2<br />
<br />
; splash sound<br />
Sound2A: dc.w z80_ptr(ssamp2A),$0102<br />
dc.w $80C0,z80_ptr(+),$0000<br />
dc.w $8005,z80_ptr(++),$0003<br />
+ dc.b $F5,$00,$F3,$E7,$C2,$05,$C6,$05,$E7<br />
- dc.b $07,$EC,$01<br />
dc.w $E7F7,$000F,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$A6,$14,$F2<br />
ssamp2A: dc.b $00,$00,$02,$03,$00,$D9,$1F,$DF,$1F,$12,$14,$11<br />
dc.b $0F,$0A,$0A,$00,$0D,$FF,$FF,$FF,$FF,$22,$27,$07,$80<br />
<br />
; swish<br />
Sound2B: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$C6,$03,$80,$03,$C6,$01,$E7<br />
- dc.b $01,$EC,$01<br />
dc.w $E7F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; boss hit<br />
Sound2C: dc.w z80_ptr(smashsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$0C,$01<br />
- dc.b $81,$0A,$E6<br />
dc.w $10F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
smashsamp: dc.b $F9,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
<br />
; inhaling a bubble<br />
Sound2D: dc.w z80_ptr(ssamp2D),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$21,$6E,$A6,$07<br />
dc.b $80,$06,$F0,$01,$01,$44,$1E,$AD,$08,$F2<br />
ssamp2D: dc.b $35,$05,$08,$09,$07,$1E,$0D,$0D,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$1F,$2F,$1F,$15,$12,$12,$80<br />
<br />
; arrow firing<br />
Sound2E: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$C6,$01,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp2E: dc.b $FA,$02,$00,$03,$05,$12,$0F,$11,$13,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$2F,$0E,$1A,$80<br />
<br />
; shield sound<br />
Sound2F: dc.w z80_ptr(ssamp2F),$0101<br />
dc.w $8005,z80_ptr(+),$0C00<br />
+ dc.b $EF,$00,$80,$01,$A3,$05,$E7,$A4,$26,$F2<br />
ssamp2F: dc.b $30,$30,$30,$30,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$04,$14,$2C,$80<br />
<br />
; laser beam<br />
Sound30: dc.w z80_ptr(ssamp30),$0101 ; sound header... a voice and 1 script entry<br />
dc.w $8005,z80_ptr(+),$FB05 ; script entry header<br />
+ dc.b $EF,$00,$DF,$7F ; script start<br />
- dc.b $DF,$02,$E6 ; script continued<br />
dc.w $01F7,$001B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script end<br />
ssamp30: dc.b $83,$1F,$1F,$15,$1F,$1F,$1F,$1F,$1F,$00,$00,$00 ; voice<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$0B,$01,$16,$82 ; (fixed length)<br />
<br />
; zap<br />
Sound31: dc.w z80_ptr(ssamp31),$0101<br />
dc.w $8005,z80_ptr(+),$FB02<br />
+ dc.b $EF,$00,$B3,$05,$80,$01,$B3,$09,$F2<br />
ssamp31: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$05,$34,$10,$87<br />
<br />
; drownage<br />
Sound32: dc.w z80_ptr(ssamp32),$0102<br />
dc.w $8004,z80_ptr(++),$0C04<br />
dc.w $8005,z80_ptr(+),$0E02<br />
+ dc.b $EF,$00,$F0,$01,$01,$83,$0C<br />
- dc.b $8A,$05,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $80,$06,$EF,$00,$F0,$01,$01,$6F,$0E<br />
- dc.b $8D,$04,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp32: dc.b $35,$14,$04,$1A,$09,$0E,$11,$10,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$4F,$2F,$4F,$2F,$12,$12,$80<br />
<br />
; fire + burn<br />
Sound33: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$A7,$25,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; bumper bing<br />
Sound34: dc.w z80_ptr(ssamp34),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $8002,z80_ptr(+++),$0002<br />
+ dc.b $EF,$00,$F6<br />
dc.w z80_ptr(Sound34_3)<br />
+ dc.b $EF,$00,$E1,$07,$80,$01<br />
Sound34_3:<br />
dc.b $BA,$20,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
ssamp34: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$1F,$2B,$80,$80<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; ring sound<br />
Sound35: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$40,$C1,$05,$C4,$05,$C9,$1B,$F2<br />
<br />
<br />
Sound36: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C1,$07<br />
- dc.b $D0,$01,$EC<br />
dc.w $01F7,$000C,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; rumbling<br />
Sound37: dc.w z80_ptr(ssamp37),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$20,$08<br />
- dc.b $8B<br />
dc.w $0AF7,$0008,z80_ptr(-)<br />
- dc.b $8B,$10,$E6<br />
dc.w $03F7,$0009,z80_ptr(-)<br />
dc.b $F2<br />
ssamp37: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
<br />
Sound38: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$B4,$08<br />
- dc.b $B0,$02,$EC<br />
dc.w $01F7,$0003,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; smash/breaking<br />
Sound39: dc.w z80_ptr(smashsamp),$0104<br />
dc.w $8002,z80_ptr(+),$1000<br />
dc.w $8004,z80_ptr(+++),$0000<br />
dc.w $8005,z80_ptr(++),$1000<br />
dc.w $80C0,z80_ptr(s39s4),$0000<br />
+ dc.b $E0,$40,$80,$02,$F6<br />
dc.w z80_ptr(++)<br />
+ dc.b $E0,$80,$80,$01<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
s39s4: dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; nondescript ding<br />
Sound3A: dc.w z80_ptr(ssamp3A),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$AE,$08,$F2<br />
ssamp3A: dc.b $1C,$2E,$0F,$02,$02,$1F,$1F,$1F,$1F,$18,$14,$0F<br />
dc.b $0E,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$20,$1B,$80,$80<br />
<br />
; door slamming shut<br />
Sound3B: dc.w z80_ptr(ssamp3B),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$80,$A0,$06,$F2<br />
ssamp3B: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; spindash unleashed<br />
Sound3C: dc.w z80_ptr(ssamp3C),$0102<br />
dc.w $8005,z80_ptr(+),$9000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$F2<br />
+ dc.b $F5,$07,$80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$4F,$F2<br />
ssamp3C: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
<br />
; slide-thunk<br />
Sound3D: dc.w z80_ptr(ssamp3D),$0102<br />
dc.w $8005,z80_ptr(+),$100A<br />
dc.w $8004,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$60,$01,$A7,$08,$F2<br />
+ dc.b $80,$08,$EF,$01,$84,$22,$F2<br />
ssamp3D: dc.b $FA,$21,$19,$3A,$30,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
dc.b $FA,$31,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$1F,$2F,$2F,$0D,$01,$00,$80<br />
<br />
; rolling sound<br />
Sound3E: dc.w z80_ptr(ssamp3E),$0101<br />
dc.w $8004,z80_ptr(+),$0C05<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$09,$FF,$CA,$25,$F4<br />
- dc.b $E7,$E6,$01,$D0<br />
dc.w $02F7,$002A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3E: dc.b $3C,$00,$02,$44,$02,$1F,$1F,$1F,$15,$00,$00,$1F<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0D,$28,$00,$00<br />
<br />
; got continue<br />
Sound3F: dc.w z80_ptr(ssamp3F),$0103<br />
dc.w $8002,z80_ptr(+),$F406<br />
dc.w $8004,z80_ptr(++),$F406<br />
dc.w $8005,z80_ptr(+++),$F406<br />
+ dc.b $EF,$00,$C9,$07,$CD,$D0,$CB,$CE,$D2,$CD,$D0,$D4,$CE,$D2,$D5<br />
- dc.b $D0,$07,$D4,$D7,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$80,$07,$CD,$15,$CE,$D0,$D2<br />
- dc.b $D4,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$C9,$15,$CB,$CD,$CE<br />
- dc.b $D0,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3F: dc.b $14,$25,$36,$33,$11,$1F,$1F,$1F,$1F,$15,$1C,$18<br />
dc.b $13,$0B,$0D,$08,$09,$0F,$8F,$9F,$0F,$24,$0A,$05,$80<br />
<br />
; short bonus ding<br />
Sound40: dc.w z80_ptr(ssamp3F),$0102<br />
dc.w $8005,z80_ptr(++),$0008<br />
dc.w $8004,z80_ptr(+),$0008<br />
+ dc.b $E1,$03,$80,$02<br />
+ dc.b $EF,$00,$C4,$16,$F2<br />
<br />
; badnik bust<br />
Sound41: dc.w z80_ptr(ssamp41),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0002<br />
+ dc.b $F0,$03,$01,$72,$0B,$EF,$00,$BA,$16,$F2<br />
+ dc.b $F5,$01,$F3,$E7,$B0,$1B,$F2<br />
ssamp41: dc.b $3C,$0F,$03,$01,$01,$1F,$1F,$1F,$1F,$19,$19,$12<br />
dc.b $0E,$05,$00,$12,$0F,$0F,$FF,$7F,$FF,$00,$00,$80,$80<br />
<br />
; warning ding-ding<br />
Sound42: dc.w z80_ptr(ssamp3F),$0101<br />
dc.w $8005,z80_ptr(+),$0C08<br />
+ dc.b $EF,$00,$BA,$08,$BA,$25,$F2<br />
<br />
; special stage ring flash (unused)<br />
Sound43: dc.w z80_ptr(ssamp43),$0102<br />
dc.w $8004,z80_ptr(+),$0C00<br />
dc.w $8005,z80_ptr(++),$0013<br />
+ dc.b $EF,$01,$80,$01,$A2,$08,$EF,$00,$E7,$AD,$26,$F2<br />
+ dc.b $EF,$02,$F0,$06,$01,$03,$FF,$80,$0A<br />
- dc.b $C3<br />
dc.w $06F7,$0005,z80_ptr(-)<br />
dc.b $C3,$17,$F2<br />
ssamp43: dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$1C,$80<br />
dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$2C,$80<br />
dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$13,$13,$81,$88<br />
<br />
; thunk<br />
Sound44: dc.w z80_ptr(ssamp44),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$8A,$22,$F2<br />
ssamp44: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$4F,$2F,$2F,$0D,$04,$07,$80<br />
<br />
; cha-ching<br />
Sound45: dc.w z80_ptr(ssamp45),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$8A,$08,$80,$02,$8A,$08,$F2<br />
+ dc.b $EF,$01,$80,$12,$C6,$55,$F2<br />
+ dc.b $F5,$02,$F3,$E7,$80,$02,$C2,$05,$C4,$04,$C2,$05,$C4,$04,$F2<br />
ssamp45: dc.b $3B,$03,$02,$02,$06,$18,$1A,$1A,$96,$17,$0A,$0E<br />
dc.b $10,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$39,$28,$80<br />
ringsamp: dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$23,$80,$80<br />
<br />
; losing rings (scatter)<br />
Sound46: dc.w z80_ptr(ringsamp),$0102<br />
dc.w $8004,z80_ptr(+),$0005<br />
dc.w $8005,z80_ptr(++),$0008<br />
+ dc.b $EF,$00,$C6,$02,$05,$05,$05,$05,$05,$05,$3A,$F2<br />
+ dc.b $EF,$00,$80,$02,$C4,$02,$05,$15,$02,$05,$32,$F2<br />
<br />
; chain pull chink-chink<br />
Sound47: dc.w z80_ptr(ssamp47),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$BE,$05,$80,$04,$BE,$04,$80,$04,$F2<br />
ssamp47: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; flamethrower<br />
Sound48: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$25,$F2<br />
<br />
; bonus pwoieeew (unused)<br />
Sound49: dc.w z80_ptr(ssamp49),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$33,$18,$B9,$1A,$F2<br />
ssamp49: dc.b $3B,$0A,$05,$31,$02,$5F,$5F,$5F,$5F,$04,$16,$14<br />
dc.b $0C,$00,$00,$04,$00,$1F,$D8,$6F,$FF,$03,$00,$25,$80<br />
<br />
; special stage entry<br />
Sound4A: dc.w z80_ptr(ssamp4A),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$F0,$01,$01,$5B,$02,$CC,$65,$F2<br />
ssamp4A: dc.b $20,$36,$30,$35,$31,$41,$3B,$49,$4B,$09,$09,$06<br />
dc.b $08,$01,$02,$03,$A9,$0F,$0F,$0F,$0F,$29,$23,$27,$80<br />
<br />
; slower smash/crumble<br />
Sound4B: dc.w z80_ptr(smashsamp),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; spring boing<br />
Sound4C: dc.w z80_ptr(ssamp4C),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$5D,$0F,$B0,$0C,$F4<br />
- dc.b $E7,$E6,$02,$BD<br />
dc.w $02F7,$0019,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4C: dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$16,$13,$30,$80<br />
<br />
; selection blip<br />
Sound4D: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $BB,$02,$F2<br />
<br />
; another ring sound (only plays in the left speaker?)<br />
Sound4E: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8004,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$80,$C1,$04,$C4,$05,$C9,$1B,$F2<br />
<br />
; signpost spin sound<br />
Sound4F: dc.w z80_ptr(ssamp4F),$0102<br />
dc.w $8004,z80_ptr(+),$2703<br />
dc.w $8005,z80_ptr(++),$2700<br />
+ dc.b $80,$04<br />
+ dc.b $EF,$00<br />
- dc.b $B4,$05,$E6<br />
dc.w $02F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4F: dc.b $F4,$06,$0F,$04,$0E,$1F,$1F,$1F,$1F,$00,$0B,$00<br />
dc.b $0B,$00,$05,$00,$08,$0F,$FF,$0F,$FF,$0C,$03,$8B,$80<br />
<br />
; mosquito zapper<br />
Sound50: dc.w z80_ptr(ssamp50),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B3,$04,$80,$01<br />
- dc.b $B4,$04,$80<br />
dc.w $01F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
ssamp50: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$06,$34,$10,$87<br />
<br />
<br />
Sound51: dc.w z80_ptr(ssamp51),$0102<br />
dc.w $80C0,z80_ptr(+),$0001<br />
dc.w $8005,z80_ptr(++),$000B<br />
+ dc.b $F5,$02,$F3,$E4,$B0,$04,$85,$02,$F2<br />
+ dc.b $EF,$00,$E8,$04,$A5,$06,$F2<br />
ssamp51: dc.b $3C,$02,$01,$00,$01,$1F,$1F,$1F,$1F,$00,$19,$0E<br />
dc.b $10,$00,$00,$0C,$0F,$0F,$FF,$EF,$FF,$05,$00,$80,$80<br />
<br />
<br />
Sound52: dc.w z80_ptr(ssamp52),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $F0,$01,$01,$2A,$07,$EF,$00<br />
- dc.b $A5,$03<br />
dc.w $E7F7,$0013,z80_ptr(-)<br />
- dc.b $A5,$03,$E7,$E6<br />
dc.w $02F7,$0013,z80_ptr(-)<br />
dc.b $F2<br />
ssamp52: dc.b $28,$21,$21,$21,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$29,$20,$29,$80<br />
<br />
<br />
Sound53: dc.w z80_ptr(ssamp53),$0101<br />
dc.w $8005,z80_ptr(+),$F503<br />
+ dc.b $EF,$00,$F0,$01,$01,$46,$09,$A7,$14,$E7,$14,$E7,$E6,$04<br />
dc.b $14,$E7,$E6,$04,$14,$E7,$E6,$04,$0A,$E7,$E6,$04,$0A,$F2<br />
ssamp53: dc.b $07,$0A,$0C,$0C,$0C,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$2A,$0F,$0F,$80<br />
<br />
; OOZ lid pop sound<br />
Sound54: dc.w z80_ptr(ssamp54),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0006<br />
+ dc.b $EF,$00,$B6,$15,$F2<br />
+ dc.b $F3,$E7,$F5,$04,$C6,$03,$E7,$C5,$E7<br />
dc.b $C4,$E7,$C3,$E7,$C2,$E7,$C1,$E7,$C0,$F2<br />
ssamp54: dc.b $07,$03,$02,$03,$00,$FF,$6F,$6F,$3F,$12,$14,$11<br />
dc.b $0E,$1A,$0A,$03,$0D,$FF,$FF,$FF,$FF,$03,$07,$07,$80<br />
<br />
<br />
Sound55: dc.w z80_ptr(ssamp55),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$AA,$07,$B6,$15,$F2<br />
ssamp55: dc.b $42,$20,$0E,$0F,$0F,$1F,$1F,$1F,$1F,$1F,$1F,$1F<br />
dc.b $1F,$0F,$0E,$0F,$0E,$0F,$0F,$0F,$0F,$2E,$80,$20,$80<br />
<br />
<br />
Sound56: dc.w z80_ptr(ssamp56),$0101<br />
dc.w $8005,z80_ptr(+),$100E<br />
+ dc.b $EF,$00,$F0,$01,$01,$1E,$FF,$8F,$1C,$F4<br />
- dc.b $E7,$9A<br />
dc.w $05F7,$0009,z80_ptr(-)<br />
- dc.b $E7,$9A,$04,$E6,$02,$E7,$9A,$04,$E6<br />
dc.w $02F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp56: dc.b $0D,$06,$00,$00,$E5,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$27,$80,$80,$80<br />
<br />
<br />
Sound57: dc.w z80_ptr(ssamp57),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$CA,$15,$F2<br />
ssamp57: dc.b $04,$09,$70,$00,$30,$1C,$1F,$DF,$1F,$15,$12,$0B<br />
dc.b $0F,$0C,$0D,$00,$0D,$07,$2F,$FA,$FA,$00,$29,$00,$00<br />
<br />
; CNZ bonusy bumper sound<br />
Sound58: dc.w z80_ptr(ssamp58),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$B3,$06,$B3,$15,$F2<br />
ssamp58: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
<br />
; CNZ baaang bumper sound<br />
Sound59: dc.w z80_ptr(ssamp59),$0103<br />
dc.w $8004,z80_ptr(+),$0000<br />
dc.w $8002,z80_ptr(++),$0002<br />
dc.w $8005,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$E1,$0C,$B5,$14,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
+ dc.b $EF,$00,$B6,$14,$F2<br />
ssamp59: dc.b $32,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $0D,$00,$01,$01,$0C,$00,$23,$C3,$F6,$08,$07,$1C,$03<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; CNZ gloop / water droplet sound<br />
Sound5A: dc.w z80_ptr(ssamp5A),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$7F,$F1,$AA,$0A,$F2<br />
ssamp5A: dc.b $47,$03,$02,$02,$04,$5F,$5F,$5F,$5F,$0E,$1A,$11<br />
dc.b $0A,$09,$0A,$0A,$0A,$4F,$3F,$3F,$3F,$7F,$80,$80,$A3<br />
<br />
<br />
Sound5B: dc.w z80_ptr(ssamp5B),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$02,$A5,$01,$E7<br />
- dc.b $01,$E7,$E6<br />
dc.w $02F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5B: dc.b $38,$0F,$0F,$0F,$0F,$1F,$1F,$1F,$0E,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$1F,$00,$00,$00,$80<br />
<br />
<br />
Sound5C: dc.w z80_ptr(ssamp5C),$0102<br />
dc.w $8004,z80_ptr(+),$000E<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$85,$40<br />
- dc.b $E7,$04,$E6<br />
dc.w $04F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$40<br />
- dc.b $E7,$08,$E6<br />
dc.w $01F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5C: dc.b $FA,$12,$01,$01,$01,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$81,$8E,$14,$80<br />
<br />
; chain clink<br />
Sound5D: dc.w z80_ptr(ssamp5D),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$C0,$04,$F2<br />
ssamp5D: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; helicopter<br />
Sound5E: dc.w z80_ptr(ssamp5E),$0101<br />
dc.w $8002,z80_ptr(+),$1405<br />
+ dc.b $EF,$00<br />
- dc.b $95,$02,$95<br />
dc.w $01F7,$0013,z80_ptr(-)<br />
- dc.b $95,$02,$95,$01,$E6<br />
dc.w $01F7,$001B,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5E: dc.b $35,$30,$44,$40,$51,$1F,$1F,$1F,$1F,$10,$00,$13<br />
dc.b $15,$1F,$00,$1F,$1A,$7F,$0F,$7F,$5F,$02,$A8,$80,$80<br />
<br />
<br />
Sound5F: dc.w z80_ptr(ssamp5F),$0103<br />
dc.w $8005,z80_ptr(s5Fs1),$0000<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
s5Fs1 dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$E6,$0A,$80<br />
dc.b $06,$EF,$01,$F0,$01,$01,$11,$FF,$A2,$28<br />
- dc.b $E7,$03,$E6<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs2 dc.b $80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$1D<br />
- dc.b $E7,$07,$EC<br />
dc.w $01F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs3 dc.b $80,$16,$F5,$03<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $FFF7,$0005,z80_ptr(-)<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $01F7,$0007,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5F: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
dc.b $3A,$70,$30,$04,$01,$0F,$14,$19,$16,$08,$0A,$0B<br />
dc.b $05,$03,$03,$03,$05,$1F,$6F,$8F,$5F,$1F,$22,$1F,$80<br />
<br />
; spindash charge<br />
Sound60: dc.w z80_ptr(ssamp60),$0101<br />
dc.w $8005,z80_ptr(+),$FE00<br />
+ dc.b $EF,$00,$F0,$00,$01,$20,$F6,$C4,$16,$E7,$F4,$D0,$18,$E7<br />
- dc.b $04,$E7,$E6<br />
dc.w $03F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp60: dc.b $34,$00,$03,$0C,$09,$9F,$8C,$8F,$95,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$00,$1D,$00,$00<br />
<br />
; rumbling<br />
Sound61: dc.w z80_ptr(ssamp61),$0101<br />
dc.w $8004,z80_ptr(+),$0004<br />
+ dc.b $80,$01,$EF,$00,$F0,$00,$01,$70,$06,$82,$06,$85,$08,$83<br />
dc.b $01,$82,$05,$86,$06,$89,$03,$82,$08,$88,$04,$82,$06,$E6<br />
dc.b $02,$85,$08,$E6,$02,$83,$01,$E6,$02,$82,$05,$E6,$02,$86<br />
dc.b $06,$E6,$02,$89,$03,$E6,$02,$82,$08,$E6,$02,$88,$04,$E6,$02,$F2<br />
ssamp61: dc.b $32,$30,$30,$50,$30,$1F,$0E,$19,$0E,$07,$12,$15<br />
dc.b $09,$0A,$09,$1D,$06,$E8,$03,$0A,$17,$07,$00,$00,$00<br />
<br />
<br />
Sound62: dc.w z80_ptr(ssamp62),$0101<br />
dc.w $8005,z80_ptr(+),$FF00<br />
+ dc.b $EF,$00,$A6,$05,$F0,$01,$01,$E7,$40<br />
- dc.b $C4,$02,$E7,$E6<br />
dc.w $01F7,$0012,z80_ptr(-)<br />
dc.b $F2<br />
ssamp62: dc.b $34,$0C,$10,$73,$0C,$AF,$AC,$FF,$D5,$06,$00,$02<br />
dc.b $01,$02,$0A,$04,$08,$BF,$BF,$BF,$BF,$00,$08,$80,$80<br />
<br />
; CNZ blooing bumper<br />
Sound63: dc.w z80_ptr(ssamp63),$0101<br />
dc.w $8005,z80_ptr(+),$0907<br />
+ dc.b $EF,$00,$F0,$01,$01,$04,$56,$92,$03,$9A,$25,$F2<br />
ssamp63: dc.b $3D,$12,$10,$77,$30,$5F,$5F,$5F,$5F,$0F,$0A,$00<br />
dc.b $01,$0A,$0A,$0D,$0D,$4F,$0F,$0F,$0F,$13,$80,$80,$80<br />
<br />
; HTZ track click sound<br />
Sound64: dc.w z80_ptr(ssamp64),$0101<br />
dc.w $8005,z80_ptr(+),$1100<br />
+ dc.b $EF,$00,$C7,$02,$F2<br />
ssamp64: dc.b $24,$2A,$02,$05,$01,$1A,$1F,$10,$1F,$0F,$1F,$1F<br />
dc.b $1F,$0C,$0D,$11,$11,$0C,$09,$09,$0F,$0E,$04,$80,$80<br />
<br />
; kicking up leaves sound<br />
Sound65: dc.w z80_ptr(ssamp65),$0101<br />
dc.w $80C0,z80_ptr(+),$F800<br />
+ dc.b $F5,$03,$F3,$E7,$CE,$03,$F5,$06,$CE,$04,$EC<br />
dc.b $02,$CE,$02,$F5,$03,$EC,$FE,$CE,$08,$CE,$18,$F2<br />
ssamp65: ; uhm... apparently they forgot to null out the pointer to here.<br />
; luckily, sound 65 doesn't really use its sample<br />
<br />
; leaf splash?<br />
Sound66: dc.w z80_ptr(ssamp66),$0102<br />
dc.w $8005,z80_ptr(++),$EE08<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$F5,$09,$C6,$36,$F2<br />
+ dc.b $EF,$00,$80,$01,$92,$02,$02,$02,$30,$F2<br />
ssamp66: dc.b $32,$33,$17,$34,$13,$0F,$0D,$1B,$17,$00,$04,$02<br />
dc.b $0B,$08,$00,$08,$09,$6F,$5F,$4F,$6F,$05,$00,$00,$80<br />
<br />
<br />
Sound67: dc.w z80_ptr(ssamp67),$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$06,$F3,$E7,$90,$0A,$94,$0A,$98,$0A,$9C<br />
dc.b $0A,$A0,$0A,$A4,$08,$A8,$08,$AC,$08,$B0,$08,$F2<br />
ssamp67: ; another not-really-used sample (like Sound65)<br />
<br />
; door slamming quickly (seems unused)<br />
Sound68: dc.w z80_ptr(ssamp68),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$A5,$06,$F2<br />
ssamp68: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
<br />
Sound69: dc.w z80_ptr(ssamp69),$0102<br />
dc.w $8005,z80_ptr(+),$F400<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$9B,$03,$A8,$06,$9E,$08,$F2<br />
+ dc.b $F5,$04,$F3,$E7,$C6,$03,$C6,$06,$C6,$08,$F2<br />
ssamp69: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; robotic laser burst<br />
Sound6A: dc.w z80_ptr(ssamp6A),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$DF,$14,$E6,$18,$06,$F2<br />
ssamp6A: dc.b $3D,$09,$34,$34,$28,$1F,$16,$16,$16,$00,$00,$00<br />
dc.b $04,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$15,$02,$02,$00<br />
<br />
; scatter<br />
Sound6B: dc.w z80_ptr(ssamp6B),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$81,$04,$80,$0C,$F2<br />
ssamp6B: dc.b $3A,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $07,$00,$01,$01,$03,$00,$23,$C3,$46,$08,$07,$1C,$03<br />
<br />
<br />
Sound6C: dc.w z80_ptr(ssamp6C),$0104<br />
dc.w $8005,z80_ptr(++),$0010<br />
dc.w $8004,z80_ptr(+),$0010<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
+ dc.b $E1,$10<br />
+ dc.b $EF,$01,$F0,$01,$01,$EC,$56,$C0,$24,$F4,$EF,$00,$E6,$F0<br />
- dc.b $BB,$02,$E7,$E6,$02,$E9<br />
dc.w $01F7,$0020,z80_ptr(-)<br />
dc.b $F2<br />
ssamp6C: dc.b $00,$53,$30,$03,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$06,$23,$80<br />
dc.b $3C,$72,$32,$32,$72,$14,$14,$0F,$0F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$02,$02,$08,$08,$35,$14,$00,$00<br />
<br />
; error sound<br />
Sound6D: dc.w z80_ptr(ssamp6D),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$B0,$06,$80,$06,$B0,$18,$F2<br />
ssamp6D: dc.b $38,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$1F,$0C,$17,$00<br />
<br />
; silver sonic buzz saw<br />
Sound6E: dc.w z80_ptr(ssamp6E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$C6,$24,$E7<br />
- dc.b $C6,$04,$E7,$E6<br />
dc.w $04F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F3,$E7,$C7,$44,$F2<br />
ssamp6E: dc.b $33,$00,$10,$00,$31,$1F,$1D,$1E,$0E,$00,$0C,$1D<br />
dc.b $00,$00,$00,$01,$00,$0F,$0F,$0F,$0F,$08,$06,$07,$80<br />
<br />
<br />
Sound6F: dc.w z80_ptr(ssamp6A),$0103<br />
dc.w $8005,z80_ptr(++),$000B<br />
dc.w $8004,z80_ptr(+),$0012<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $E1,$02,$80,$02<br />
+ dc.b $EF,$00,$E6,$0C,$DF,$06,$E7,$E6,$F4,$06,$E7<br />
dc.b $E6,$F4,$12,$E7,$E6,$0C,$06,$E7,$E6,$0C,$06,$F2<br />
+ dc.b $F3,$E7,$C6,$04,$C0,$BA,$B4,$AE,$E6<br />
dc.b $01,$AE,$E6,$01,$AE,$E6,$01,$AE,$F2<br />
<br />
<br />
Sound70: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$C6,$18<br />
- dc.b $E7,$03,$E6<br />
dc.w $01F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to the other bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
; share these symbols externally (WARNING: don't rename, move or remove these labels!)<br />
shared movewZ80CompSize<br />
</asm><br />
<br />
We want to replace it with this optimized code:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
</asm><br />
==Upgrading the Playback Routines==</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208737
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-24T23:07:32Z
<p>Kram1024: /* Upgrading the Load Driver Routine */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==<br />
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><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
move sr,-(sp)<br />
movem.l d0-a6,-(sp)<br />
move #$2700,sr<br />
lea (Z80_Bus_Request).l,a3<br />
lea (Z80_Reset).l,a2<br />
moveq #0,d2<br />
move.w #$100,d1<br />
move.w d1,(a3) ; get Z80 bus<br />
move.w d1,(a2) ; release Z80 reset (was held high by console on startup)<br />
- btst d2,(a3)<br />
bne.s - ; wait until the 68000 has the bus<br />
jsr DecompressSoundDriver(pc)<br />
btst #0,(VDP_control_port+1).l ; check video mode<br />
sne (Z80_RAM+zPalModeByte).l ; set if PAL<br />
move.w d2,(a2) ; hold Z80 reset<br />
move.w d2,(a3) ; release Z80 bus<br />
moveq #$E6,d0<br />
- dbf d0,- ; wait for 2,314 cycles<br />
move.w d1,(a2) ; release Z80 reset<br />
movem.l (sp)+,d0-a6<br />
move (sp)+,sr<br />
rts<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; slightly modified Saxman decompression of the sound driver<br />
; a4 == $A00000 (start of Z80 RAM)<br />
; a5 == current position in Z80 RAM?<br />
; a6 == current position in compressed sound driver?<br />
; d0 == data to decompress? (byte)<br />
; d4 == ???<br />
; d5 == ???<br />
; d6 == ???<br />
; d7 == bytes left to decompress<br />
; loc_EC04A:<br />
DecompressSoundDriver:<br />
lea Snd_Driver(pc),a6<br />
; WARNING: the build script needs editing if you rename this label<br />
movewZ80CompSize: move.w #Snd_Driver_End-Snd_Driver,d7 ; patched (by fixpointer.exe) after compression since the exact size can't be known beforehand<br />
moveq #0,d6<br />
lea (Z80_RAM).l,a5<br />
moveq #0,d5<br />
lea (Z80_RAM).l,a4<br />
<br />
loc_EC062:<br />
lsr.w #1,d6<br />
btst #8,d6<br />
bne.s +<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d6<br />
ori.w #$FF00,d6<br />
+<br />
btst #0,d6<br />
beq.s loc_EC086<br />
jsr sub_EC0DE(pc)<br />
move.b d0,(a5)+<br />
addq.w #1,d5<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC086:<br />
jsr sub_EC0DE(pc)<br />
moveq #0,d4<br />
move.b d0,d4<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d3<br />
andi.w #$F,d3<br />
addq.w #2,d3<br />
andi.w #$F0,d0<br />
lsl.w #4,d0<br />
add.w d0,d4<br />
addi.w #$12,d4<br />
andi.w #$FFF,d4<br />
move.w d5,d0<br />
andi.w #$F000,d0<br />
add.w d0,d4<br />
cmp.w d4,d5<br />
bhs.s loc_EC0CC<br />
subi.w #$1000,d4<br />
bcc.s loc_EC0CC<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b #0,(a5)+<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC0CC:<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b (a4,d4.w),(a5)+<br />
addq.w #1,d4<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; End of function DecompressSoundDriver<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_EC0DE:<br />
move.b (a6)+,d0<br />
subq.w #1,d7<br />
bne.s +<br />
addq.w #4,sp<br />
+<br />
rts<br />
; End of function sub_EC0DE<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; S2 sound driver (Sound driver compression (slightly modified Saxman))<br />
; ---------------------------------------------------------------------------<br />
; loc_EC0E8:<br />
Snd_Driver:<br />
save<br />
include "s2.sounddriver.asm" ; CPU Z80<br />
restore<br />
padding off<br />
!org (Snd_Driver+Size_of_Snd_driver_guess) ; don't worry; I know what I'm doing<br />
<br />
<br />
; loc_ED04C:<br />
Snd_Driver_End:<br />
<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ---------------------------------------------------------------------------<br />
; the DAC data has to line up with the end of the bank.<br />
<br />
; actually it only has to fit within one bank, but we'll line it up to the end anyway<br />
; because the padding gives the sound driver some room to grow<br />
cnop -Size_of_DAC_samples, $8000<br />
<br />
; ---------------------------------------------------------------------------<br />
; DAC samples<br />
; ---------------------------------------------------------------------------<br />
; loc_ED100:<br />
SndDAC_Start:<br />
<br />
SndDAC_Sample1:<br />
BINCLUDE "sound/DAC/Sample 1.bin"<br />
SndDAC_Sample1_End<br />
<br />
SndDAC_Sample2:<br />
BINCLUDE "sound/DAC/Sample 2.bin"<br />
SndDAC_Sample2_End<br />
<br />
SndDAC_Sample5:<br />
BINCLUDE "sound/DAC/Sample 5.bin"<br />
SndDAC_Sample5_End<br />
<br />
SndDAC_Sample6:<br />
BINCLUDE "sound/DAC/Sample 6.bin"<br />
SndDAC_Sample6_End<br />
<br />
SndDAC_Sample3:<br />
BINCLUDE "sound/DAC/Sample 3.bin"<br />
SndDAC_Sample3_End<br />
<br />
SndDAC_Sample4:<br />
BINCLUDE "sound/DAC/Sample 4.bin"<br />
SndDAC_Sample4_End<br />
<br />
SndDAC_Sample7:<br />
BINCLUDE "sound/DAC/Sample 7.bin"<br />
SndDAC_Sample7_End<br />
<br />
SndDAC_End<br />
<br />
if SndDAC_End - SndDAC_Start > $8000<br />
fatal "DAC samples must fit within $8000 bytes, but you have $\{SndDAC_End-SndDAC_Start } bytes of DAC samples."<br />
endif<br />
if SndDAC_End - SndDAC_Start > Size_of_DAC_samples<br />
fatal "Size_of_DAC_samples = $\{Size_of_DAC_samples}, but you have $\{SndDAC_End-SndDAC_Start} bytes of DAC samples."<br />
endif<br />
<br />
; ---------------------------------------------------------------------------<br />
; Music pointers<br />
; ---------------------------------------------------------------------------<br />
align $8000<br />
<br />
; loc_F0000:<br />
MusicPoint1:<br />
MusPtr_Continue: rom_ptr_z80 Mus_Continue-MusicPoint2<br />
<br />
<br />
Mus_Continue: BINCLUDE "sound/music/Continue.bin"<br />
<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ----------------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ----------------------------------------------------------------------------------<br />
; the PCM data has to line up with the end of the bank.<br />
cnop -Size_of_SEGA_sound, $8000<br />
<br />
; -------------------------------------------------------------------------------<br />
; Sega Intro Sound<br />
; 8-bit unsigned raw audio at 16Khz<br />
; -------------------------------------------------------------------------------<br />
; loc_F1E8C:<br />
Snd_Sega: BINCLUDE "sound/PCM/SEGA.bin"<br />
Snd_Sega_End:<br />
<br />
if Snd_Sega_End - Snd_Sega > $8000<br />
fatal "Sega sound must fit within $8000 bytes, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
if Snd_Sega_End - Snd_Sega > Size_of_SEGA_sound<br />
fatal "Size_of_SEGA_sound = $\{Size_of_SEGA_sound}, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
<br />
; ------------------------------------------------------------------------------<br />
; Music pointers<br />
; ------------------------------------------------------------------------------<br />
align $8000<br />
soundBankStart := *<br />
<br />
; loc_F8000:<br />
MusicPoint2:<br />
MusPtr_CNZ_2P: rom_ptr_z80 Mus_CNZ_2P<br />
MusPtr_EHZ: rom_ptr_z80 Mus_EHZ<br />
MusPtr_MTZ: rom_ptr_z80 Mus_MTZ<br />
MusPtr_CNZ: rom_ptr_z80 Mus_CNZ<br />
MusPtr_MCZ: rom_ptr_z80 Mus_MCZ<br />
MusPtr_MCZ_2P: rom_ptr_z80 Mus_MCZ_2P<br />
MusPtr_ARZ: rom_ptr_z80 Mus_ARZ<br />
MusPtr_DEZ: rom_ptr_z80 Mus_DEZ<br />
MusPtr_SpecStage: rom_ptr_z80 Mus_SpecStage<br />
MusPtr_Options: rom_ptr_z80 Mus_Options<br />
MusPtr_Ending: rom_ptr_z80 Mus_Ending<br />
MusPtr_EndBoss: rom_ptr_z80 Mus_EndBoss<br />
MusPtr_CPZ: rom_ptr_z80 Mus_CPZ<br />
MusPtr_Boss: rom_ptr_z80 Mus_Boss<br />
MusPtr_SCZ: rom_ptr_z80 Mus_SCZ<br />
MusPtr_OOZ: rom_ptr_z80 Mus_OOZ<br />
MusPtr_WFZ: rom_ptr_z80 Mus_WFZ<br />
MusPtr_EHZ_2P: rom_ptr_z80 Mus_EHZ_2P<br />
MusPtr_2PResult: rom_ptr_z80 Mus_2PResult<br />
MusPtr_SuperSonic: rom_ptr_z80 Mus_SuperSonic<br />
MusPtr_HTZ: rom_ptr_z80 Mus_HTZ<br />
MusPtr_ExtraLife: rom_ptr_z80 Mus_ExtraLife<br />
MusPtr_Title: rom_ptr_z80 Mus_Title<br />
MusPtr_EndLevel: rom_ptr_z80 Mus_EndLevel<br />
MusPtr_GameOver: rom_ptr_z80 Mus_GameOver<br />
MusPtr_Invincible: rom_ptr_z80 Mus_Invincible<br />
MusPtr_Emerald: rom_ptr_z80 Mus_Emerald<br />
MusPtr_HPZ: rom_ptr_z80 Mus_HPZ<br />
MusPtr_Drowning: rom_ptr_z80 Mus_Drowning<br />
MusPtr_Credits: rom_ptr_z80 Mus_Credits<br />
<br />
; loc_F803C:<br />
Mus_HPZ: BINCLUDE "sound/music/HPZ.bin"<br />
Mus_Drowning: BINCLUDE "sound/music/Drowning.bin"<br />
Mus_Invincible: BINCLUDE "sound/music/Invincible.bin"<br />
Mus_CNZ_2P: BINCLUDE "sound/music/CNZ_2p.bin"<br />
Mus_EHZ: BINCLUDE "sound/music/EHZ.bin"<br />
Mus_MTZ: BINCLUDE "sound/music/MTZ.bin"<br />
Mus_CNZ: BINCLUDE "sound/music/CNZ.bin"<br />
Mus_MCZ: BINCLUDE "sound/music/MCZ.bin"<br />
Mus_MCZ_2P: BINCLUDE "sound/music/MCZ_2p.bin"<br />
Mus_ARZ: BINCLUDE "sound/music/ARZ.bin"<br />
Mus_DEZ: BINCLUDE "sound/music/DEZ.bin"<br />
Mus_SpecStage: BINCLUDE "sound/music/SpecStg.bin"<br />
Mus_Options: BINCLUDE "sound/music/Options.bin"<br />
Mus_Ending: BINCLUDE "sound/music/Ending.bin"<br />
Mus_EndBoss: BINCLUDE "sound/music/End_Boss.bin"<br />
Mus_CPZ: BINCLUDE "sound/music/CPZ.bin"<br />
Mus_Boss: BINCLUDE "sound/music/Boss.bin"<br />
Mus_SCZ: BINCLUDE "sound/music/SCZ.bin"<br />
Mus_OOZ: BINCLUDE "sound/music/OOZ.bin"<br />
Mus_WFZ: BINCLUDE "sound/music/WFZ.bin"<br />
Mus_EHZ_2P: BINCLUDE "sound/music/EHZ_2p.bin"<br />
Mus_2PResult: BINCLUDE "sound/music/2player results screen.bin"<br />
Mus_SuperSonic: BINCLUDE "sound/music/Supersonic.bin"<br />
Mus_HTZ: BINCLUDE "sound/music/HTZ.bin"<br />
Mus_Title: BINCLUDE "sound/music/Title screen.bin"<br />
Mus_EndLevel: BINCLUDE "sound/music/End of level.bin"<br />
<br />
; The following act mostly like sound effects<br />
; despite being listed with the music.<br />
; This means they're uncompressed format with absolute pointers<br />
; instead of compressed with relative pointers.<br />
; Because they have absolute pointers,<br />
; they have to be assembled rather than BINCLUDE'd.<br />
; See below (right before Sound20) for other notes<br />
; about the sound format that apply to these too.<br />
<br />
;Mus_ExtraLife: BINCLUDE "sound/music/Extra life.bin"<br />
Mus_ExtraLife: dc.w z80_ptr(Mus_EL_Voices),$0603,$02CD<br />
dc.w z80_ptr(Mus_EL_DAC),$0000<br />
dc.w z80_ptr(Mus_EL_FM1),$E810<br />
dc.w z80_ptr(Mus_EL_FM2),$E810<br />
dc.w z80_ptr(Mus_EL_FM3),$E810<br />
dc.w z80_ptr(Mus_EL_FM4),$E810<br />
dc.w z80_ptr(Mus_EL_FM5),$E810<br />
dc.w z80_ptr(Mus_EL_PSG1),$D008,$0005<br />
dc.w z80_ptr(Mus_EL_PSG2),$DC08,$0005<br />
dc.w z80_ptr(Mus_EL_PSG3),$DC00,$0004<br />
Mus_EL_FM4: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM1: dc.b $E0,$80<br />
+ dc.b $EF,$00,$E8,$06,$D9,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$DB,$09,$D7,$D6,$06,$D9,$18,$F2<br />
Mus_EL_FM2: dc.b $EF,$01,$E8,$06,$E2,$01,$D6,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$D7,$09,$D4,$D2,$06,$D6,$18,$E2,$01,$F2<br />
Mus_EL_FM5: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM3: dc.b $E0,$80<br />
+ dc.b $EF,$02,$BA,$0C,$80,$06,$BA,$B8,$80,$03<br />
dc.b $B8,$06,$80,$03,$B8,$06,$BA,$18,$F2<br />
Mus_EL_PSG1: dc.b $E8,$06,$D6,$06,$03,$03,$06,$06,$E8,$00,$D7,$09<br />
dc.b $D4,$D2,$06,$D6,$18<br />
Mus_EL_PSG2:<br />
Mus_EL_PSG3: dc.b $F2<br />
Mus_EL_DAC: dc.b $88,$12,$06,$8B,$09,$09,$06,$88,$06,$8A,$88,$8A<br />
dc.b $88,$0C,$E4<br />
Mus_EL_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
<br />
<br />
;Mus_GameOver: BINCLUDE "sound/music/Game over.bin"<br />
Mus_GameOver: dc.w z80_ptr(MusGO_Voices),$0603,$02F2<br />
dc.w z80_ptr(MusGOver_DAC),$0000<br />
dc.w z80_ptr(MusGOver_FM1),$E80A<br />
dc.w z80_ptr(MusGOver_FM2),$F40F<br />
dc.w z80_ptr(MusGOver_FM3),$F40F<br />
dc.w z80_ptr(MusGOver_FM4),$F40D<br />
dc.w z80_ptr(MusGOver_FM5),$DC16<br />
dc.w z80_ptr(MusGOver_PSG),$D003,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC06,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC00,$0004<br />
MusGOver_FM1: dc.b $EF,$00<br />
dc.b $F0,$20,$01,$04,$05<br />
dc.b $80,$0C,$CA,$12,$80,$06,$CA,$80,$CB,$12,$C8,$1E<br />
dc.b $CA,$06,$80,$CA,$80,$CA,$80,$C6,$80,$C4,$12,$C8<br />
dc.b $0C,$80,$12,$C9,$04,$80,$C9,$C8,$06,$80,$C7,$80<br />
dc.b $C6,$80<br />
dc.b $F0,$28,$01,$18,$05<br />
dc.b $C5,$60,$F2<br />
MusGOver_FM2: dc.b $EF,$01,$80,$01,$D9,$06,$80,$D9,$80,$D6,$80,$D6<br />
dc.b $80,$D7,$15,$D7,$1B,$D9,$06,$80,$D9,$80,$D6,$80<br />
dc.b $D6,$80,$DC,$15,$DC,$1B,$F2<br />
MusGOver_FM3: dc.b $EF,$01,$D6,$0C,$D6,$D2,$D2,$D4,$15,$D4,$1B,$D6<br />
dc.b $0C,$D6,$D2,$D2,$D7,$15,$D7,$1B,$F2<br />
MusGOver_FM4: dc.b $EF,$02,$E2,$01,$AE,$06,$80,$AE,$80,$A9,$80,$A9<br />
dc.b $80,$AC,$15,$AB,$0C,$AC,$03,$AB,$0C,$AE,$06,$80<br />
dc.b $AE,$80,$A9,$80,$A9,$80,$B3,$15,$B2,$0C,$B3,$03<br />
dc.b $B2,$0C,$AE,$04,$80,$AE,$AD,$06,$80,$AC,$80,$AB<br />
dc.b $80,$AB,$60,$E2,$01,$F2<br />
MusGOver_FM5: dc.b $EF,$03,$80,$30,$D7,$12,$80,$03,$D7,$1B,$80,$30<br />
dc.b $DC,$12,$80,$03,$DC,$1B<br />
MusGOver_PSG: dc.b $F2<br />
MusGOver_DAC: dc.b $80,$18,$81<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(MusGOver_DAC)<br />
dc.b $F2<br />
MusGO_Voices: dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $3C,$33,$73,$30,$70,$94,$96,$9F,$9F,$12,$14,$00<br />
dc.b $0F,$04,$04,$0A,$0D,$2F,$4F,$0F,$2F,$33,$1A,$80,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$1C,$27,$28,$80<br />
dc.b $1F,$66,$53,$31,$22,$1C,$1F,$98,$1F,$12,$0F,$0F<br />
dc.b $0F,$00,$00,$00,$00,$FF,$0F,$0F,$0F,$8C,$8A,$8D,$8B<br />
<br />
;Mus_Emerald: BINCLUDE "sound/music/Got an emerald.bin"<br />
Mus_Emerald: dc.w z80_ptr(MusEmrldVoices),$0703,$01D5<br />
dc.w z80_ptr(MusEmeraldDAC),$0000<br />
dc.w z80_ptr(MusEmeraldFM1),$F408<br />
dc.w z80_ptr(MusEmeraldFM2),$F408<br />
dc.w z80_ptr(MusEmeraldFM3),$F407<br />
dc.w z80_ptr(MusEmeraldFM4),$F416<br />
dc.w z80_ptr(MusEmeraldFM5),$F416<br />
dc.w z80_ptr(MusEmeraldFM6),$F416<br />
dc.w z80_ptr(MusEmeraldPSG1),$F402,$0004<br />
dc.w z80_ptr(MusEmeraldPSG2),$F402,$0005<br />
dc.w z80_ptr(MusEmeraldPSG3),$F400,$0004<br />
MusEmeraldFM3: dc.b $E1,$02<br />
MusEmeraldFM1: dc.b $EF,$00,$C1,$06,$C4,$C9,$CD,$0C,$C9,$D0,$2A,$F2<br />
MusEmeraldFM2: dc.b $EF,$00,$BD,$06,$C1,$C4,$C9,$0C,$C6,$CB,$2A,$F2<br />
MusEmeraldFM4: dc.b $EF,$01,$C1,$0C,$C1,$06,$C4,$06,$80,$C4,$80,$C9<br />
dc.b $2A,$F2<br />
MusEmeraldFM5: dc.b $EF,$01,$C9,$0C,$C9,$06,$CD,$06,$80,$CD,$80,$D0<br />
dc.b $2A,$F2<br />
MusEmeraldFM6: dc.b $EF,$01,$C4,$0C,$C4,$06,$C9,$06,$80,$C9,$80,$CD<br />
dc.b $2A,$F2<br />
MusEmeraldPSG2: dc.b $80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusEmeraldPSG1: dc.b $E2,$01,$80,$02,$80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
MusEmeraldPSG3:<br />
MusEmeraldDAC: dc.b $E2,$01,$F2<br />
MusEmrldVoices: dc.b $04,$35,$54,$72,$46,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$1D,$14,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$07,$07,$1A,$16,$80,$80<br />
<br />
;Mus_Credits: BINCLUDE "sound/music/Credits.bin"<br />
Mus_Credits: dc.w z80_ptr(MusCred_Voices),$0603,$01F0<br />
dc.w z80_ptr(MusCred_DAC),$0000<br />
dc.w z80_ptr(MusCred_FM1),$000E<br />
dc.w z80_ptr(MusCred_FM2),$180A<br />
dc.w z80_ptr(MusCred_FM3),$0014<br />
dc.w z80_ptr(MusCred_FM4),$0016<br />
dc.w z80_ptr(MusCred_FM5),$0C16<br />
dc.w z80_ptr(MusCred_PSG1),$E806,$000B<br />
dc.w z80_ptr(MusCred_PSG2),$DC07,$000B<br />
dc.w z80_ptr(MusCred_PSG3),$0002,$0003<br />
MusCred_FM1: dc.b $E9,$F4,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$0C,$E6,$02<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$03,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $AE,$06,$A2,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $E6,$FD<br />
- dc.b $EF,$00,$B7,$06,$BA,$F8<br />
dc.w z80_ptr(MusCreditsDA13)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$06,$80,$80,$30,$80,$EF,$0B,$E9,$18,$E6,$02<br />
- dc.b $94,$0C,$8F,$92,$8F,$06,$94,$05,$94,$07,$06,$8F<br />
dc.b $0C,$92,$8F<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$30,$80,$EF,$0E,$E6,$FF,$E9,$E8,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$91,$94,$06,$80,$18,$96,$12,$9A,$06,$80<br />
dc.b $80,$12,$8F,$93,$08,$80,$16,$96,$06,$91,$92,$94<br />
dc.b $96,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$9D,$9A,$08,$80,$16,$96,$12,$9D,$08,$80<br />
dc.b $04,$EF,$12<br />
dc.b $F0,$18,$01,$0A,$04<br />
dc.b $80,$30,$80,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$24,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$EF,$01,$E9,$F4,$E6,$FA,$F4<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $80,$03,$80,$60,$E6,$04,$E1,$01,$EF,$1B,$E6,$06<br />
dc.b $C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80,$EF<br />
dc.b $1C,$E6,$FA,$E8,$00,$BC,$0C,$12,$06,$EF,$1B,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$80,$E8,$06,$C4,$06,$06,$C6,$C4,$E8<br />
dc.b $00,$C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80<br />
dc.b $E8,$00,$EF,$1C,$E6,$FA,$C1,$C4,$C1,$EF,$1A,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$06,$80,$80,$24,$80,$30,$80,$EF,$1F<br />
dc.b $E9,$18,$E6,$F7,$E1,$00,$80,$06,$AC,$AE,$80,$B1<br />
dc.b $80,$B3,$80,$B4,$80,$B3,$80,$B1,$B3,$80,$B1,$E9<br />
dc.b $F4,$EF,$00,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC<br />
dc.b $06,$AE,$B1,$80,$B4,$B1,$80,$B1,$E9,$0C,$EF,$1F<br />
dc.b $80,$06,$B8,$12,$B4,$06,$80,$B3,$80,$B4,$80,$B3<br />
dc.b $80,$B1,$AE,$80,$B1,$E9,$F4,$EF,$00,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$30,$80,$EF,$21,$E9,$0C,$80,$30,$80<br />
dc.b $08,$A0,$04,$9E,$0C,$9D,$9B,$99,$08,$04,$91,$0C<br />
dc.b $92,$93,$94,$98,$99,$9B,$9D,$98,$95,$93,$91,$98<br />
dc.b $9D,$91,$96,$98,$99,$98,$96,$99,$9D,$96,$95,$97<br />
dc.b $99,$97,$95,$96,$97,$98,$99,$98,$99,$9B,$9D,$08<br />
dc.b $04,$98,$0C,$91,$95,$96,$98,$99,$9D,$9E,$08,$96<br />
dc.b $10,$97,$0C,$98,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$08,$99,$04,$EF,$23,$E9,$E8,$E6,$07,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $80,$60,$E6,$FB,$80,$0C,$CD,$06,$80,$D4,$CD,$06<br />
dc.b $80,$0C,$CD,$06,$80,$D4,$CD,$06,$80,$18,$E6,$05<br />
dc.b $80,$0C,$AE,$80,$AE,$80,$24,$E1,$02,$E6,$08,$A2<br />
dc.b $6C,$F2<br />
MusCreditsD9D1: dc.b $A5,$0C,$B1,$06,$80,$B1,$0C,$AC,$B3,$12,$B1,$0C<br />
dc.b $AC,$06,$AE,$B1,$A7,$0C,$B3,$06,$80,$B3,$0C,$AE<br />
dc.b $B5,$12,$B3,$06,$80,$AE,$B0,$B3,$A3,$0C,$AF,$06<br />
dc.b $80,$AF,$0C,$AA,$B1,$12,$AF,$0C,$AA,$06,$AC,$AF<br />
dc.b $A2,$0C,$AE,$06,$A2,$A4,$0C,$B0,$06,$A4,$A5,$0C<br />
dc.b $B1,$06,$A5,$A2,$0C,$E3<br />
MusCreditsDA13: dc.b $BE,$0C,$BC,$06,$BA,$BC,$BA,$04,$E7,$08,$BA,$04<br />
dc.b $80,$0E,$EF,$07,$B7,$06,$B2,$B5,$B7,$EF,$00,$B7<br />
dc.b $BA,$BE,$0C,$BC,$06,$BA,$BC,$BA,$0C,$BC,$04,$80<br />
dc.b $08,$BA,$04,$80,$08,$BC,$04,$80,$08,$BE,$12,$BA<br />
dc.b $06,$B7,$80,$B7,$80,$24,$EF,$07,$B7,$06,$B2,$B5<br />
dc.b $B7,$80,$0C,$80,$30,$BE,$06,$BE,$BA,$04,$80,$08<br />
dc.b $BC,$06,$BE,$E3<br />
MusCreditsDA5F: dc.b $C3,$01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$02,$C3<br />
dc.b $01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01<br />
dc.b $E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$FC,$C3,$01,$E7<br />
dc.b $C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01,$E7,$C4<br />
dc.b $E7,$C5,$E7,$C6,$2D,$E7,$30,$E7,$30,$E3<br />
MusCreditsDA99: dc.b $A7,$0C,$B3,$06,$80,$B1,$80,$B3,$0C,$A7,$03,$80<br />
dc.b $06,$A7,$03,$B3,$0C,$B1,$B3,$09,$AE,$03,$AC,$06<br />
dc.b $80,$AC,$0C,$AE,$06,$80,$AE,$0C,$AF,$06,$80,$27<br />
dc.b $E3<br />
MusCreditsDABE: dc.b $80,$0C,$CA,$15,$80,$03,$CA,$06,$80,$CB,$0F,$80<br />
dc.b $03,$C8,$18,$80,$06,$CA,$80,$CA,$80,$CA,$80,$C6<br />
dc.b $80,$C4,$0F,$80,$03,$C8,$18,$80,$06<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E3<br />
MusCreditsDAE5: dc.b $80,$12,$94,$97,$06,$80,$18,$99,$12,$94,$06,$80<br />
dc.b $80,$12,$92,$96,$06,$80,$18,$97,$12,$92,$06,$80<br />
dc.b $E3<br />
MusCreditsDAFE: dc.b $80,$99,$80,$99,$80,$9E,$80,$E3<br />
MusCreditsDB06: dc.b $EF,$07,$80,$54,$C7,$04,$C8,$C9,$CA,$24,$CD,$D2<br />
dc.b $18,$D0,$24,$CF,$CB,$18,$CB,$0C,$CA,$80,$CD,$60<br />
dc.b $E7,$3C,$CA,$24,$CD,$D2,$18,$D4,$24,$D0,$D4,$18<br />
dc.b $D4,$24,$D6,$60,$E7,$3C,$E3<br />
MusCred_FM2: dc.b $80,$60,$EF,$01,$E8,$06,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $85,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8A,$87,$88,$89,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $88<br />
dc.b $F7,$00,$0B<br />
dc.w z80_ptr(-)<br />
- dc.b $8A<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$E6,$FC,$8A,$8B,$8C,$E6,$04,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$8D,$8A,$8B,$8C,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8D,$06,$99,$E8,$00,$8A,$0C,$8B,$8C,$E9,$E8,$E6<br />
dc.b $0C,$EF,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E6,$F9,$EF,$08<br />
MusCreditsDB93: dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $06,$9C,$12,$9D,$0C,$9E,$F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9D,$04,$80,$08,$9D,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $9C,$04,$80,$08,$9C,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(MusCreditsDB93)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$13,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$60,$EF,$0F,$E6,$F3<br />
dc.b $F0,$04,$02,$03,$02<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$30,$E7,$18,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$EF,$13,$E6,$F5,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$0C,$A9,$08,$A1,$10,$F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$08,$A9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E1,$02,$E9,$F4,$E6,$0A,$F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$EF,$1B,$E1,$00<br />
dc.b $E8,$06,$80,$3C,$B8,$06,$06,$BA,$BD,$BD,$BA,$EF<br />
dc.b $1D,$E6,$FA,$E8,$00,$F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $EF,$1C,$BD,$EF,$1D,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $80,$30,$80,$EF,$01,$E9,$18,$E6,$F9<br />
- dc.b $99,$0C,$A5,$06,$80,$96,$0C,$A2,$06,$80,$97,$0C<br />
dc.b $A3,$06,$80,$98,$0C,$A8,$06,$A7,$99,$06,$99,$12<br />
dc.b $96,$0C,$A2,$06,$80,$97,$0C,$A3,$06,$80,$98,$0C<br />
dc.b $A4,$06,$80<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$22,$E9,$E8,$E6,$03<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$AC,$04,$AE,$08,$B1,$04,$B5,$30,$80,$0C<br />
dc.b $B5,$08,$80,$04,$B6,$08,$B5,$10,$B9,$08,$04,$80<br />
dc.b $08,$B5,$34,$80,$0C,$B5,$BA,$08,$04,$80,$08,$B5<br />
dc.b $04,$B1,$24,$80,$0C,$B1,$08,$80,$04,$B3,$08,$B1<br />
dc.b $04,$B4,$0C,$B3,$08,$B1,$4C,$80,$0C,$B5,$08,$80<br />
dc.b $04,$B6,$08,$80,$04,$B5,$08,$80,$04,$B9,$08,$04<br />
dc.b $80,$08,$B5,$1C,$80,$0C,$BA,$18,$BC,$08,$BA,$04<br />
dc.b $BD,$18,$80,$0C,$BA,$04,$80,$08,$B8,$18,$B5,$B1<br />
dc.b $B3,$0C,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$0C,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$14,$B1,$04,$E6,$FF,$EF,$24,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $AC,$12,$AB,$0C,$AC,$06,$AB,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $B3,$12,$B2,$0C,$B3,$06,$B2,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $AC,$06,$80,$A9,$80,$AA,$80,$AB,$80,$AC,$AC,$A9<br />
dc.b $80,$AA,$80,$AC,$80,$A9,$80,$A9,$80,$AD,$80,$AD<br />
dc.b $80,$B0,$80,$B0,$80,$B3,$80,$B3,$80,$80,$0C,$A2<br />
dc.b $12,$80,$06,$A2,$12,$AD,$AE,$06,$80,$E6,$FD,$A2<br />
dc.b $6C,$F2<br />
MusCreditsDD59: dc.b $80,$0C,$C4,$06,$80,$C6,$80,$C4,$80,$C9,$80,$C9<br />
dc.b $80,$CB,$CD,$80,$0C,$80,$CB,$18,$C6,$06,$80,$C9<br />
dc.b $C9,$80,$CB,$0C,$80,$12,$80,$1E,$C7,$06,$C9,$C7<br />
dc.b $CB,$80,$C9,$80,$C7,$C9,$80,$C6,$E7,$C6,$30,$E7<br />
dc.b $18,$80,$18,$E3<br />
MusCreditsDD8D: dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
dc.b $06,$AB,$9F,$0C,$E3<br />
MusCreditsDD9D: dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$B6,$80,$18<br />
dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$30,$E7,$E3<br />
MusCreditsDDB5: dc.b $BF,$06,$BD,$BF,$12,$C2,$BF,$0C,$C1,$80,$06,$12<br />
dc.b $C4,$0C,$C2,$06,$80,$C9,$C6,$3C,$80,$06,$0C,$C7<br />
dc.b $12,$C6,$C4,$06,$C2,$C1,$18,$E3<br />
MusCreditsDDD5: dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$E3<br />
MusCreditsDDEA: dc.b $A2,$0C,$AE,$AC,$08,$AE,$04,$AC,$08,$A9,$04,$A7<br />
dc.b $08,$04,$E3<br />
MusCreditsDDF9: dc.b $80,$0C,$B1,$AE,$06,$06,$AC,$0C,$80,$B0,$AE,$06<br />
dc.b $06,$AC,$0C,$E3<br />
MusCreditsDE09: dc.b $AE,$AC,$06,$06,$AA,$0C,$80,$AC,$0C,$06,$06,$AE<br />
dc.b $AC,$E3<br />
MusCreditsDE17: dc.b $BA,$04,$80,$08,$B8,$18,$B5,$B1,$E3<br />
MusCreditsDE20: dc.b $AE,$06,$80,$AE,$80,$A9,$80,$A9,$80,$E3<br />
MusCreditsDE2A: dc.b $8A,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $E3<br />
MusCred_FM3: dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$18,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $B8,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $BD,$3C,$E9,$E8,$E6,$02,$E1,$03,$EF,$04,$E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$09,$E9,$0C,$E6,$FD,$E0,$40<br />
dc.b $F0,$06,$01,$05,$04<br />
dc.b $E1,$00<br />
- dc.b $9F,$0C,$AB,$06,$80,$A9,$80,$AB,$9F,$80,$9F,$AB<br />
dc.b $80,$A9,$80,$AB,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $9D,$0C,$A9,$06,$80,$A8,$80,$A9,$9C,$80,$9C,$A8<br />
dc.b $80,$A6,$80,$A8,$0C<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0D,$E6,$FB,$E0,$C0,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0F,$E0,$80,$E6,$0B,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$48,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$0C<br />
dc.b $F0,$18,$01,$03,$04<br />
dc.b $E6,$F3,$E0,$C0,$EF,$14,$A2,$14,$A4,$04,$A5,$04<br />
dc.b $80,$08,$A9,$04,$80,$08,$A8,$04,$80,$08,$A9,$04<br />
dc.b $80,$08,$AC,$08,$A9,$10<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$18,$E9,$F4,$E6,$08,$F4,$E0,$40,$80,$60,$80<br />
dc.b $30,$C6,$06,$80,$C2,$0C,$C4,$09,$C2,$03,$BF,$0C<br />
dc.b $80,$60,$80,$3C,$80,$60,$EF,$1B,$E6,$FB,$E0,$C0<br />
dc.b $E8,$06,$C4,$06,$06,$C6,$C9,$C9,$C6,$E8,$00,$CD<br />
dc.b $0C,$E8,$06,$C9,$06,$C6,$C9,$0C,$80,$80,$12,$EF<br />
dc.b $1C,$E8,$00,$BD,$BA,$0C,$E8,$06,$EF,$1B,$CE,$06<br />
dc.b $CE,$80,$CE,$80,$CE,$E8,$00,$CF,$0C,$D0,$80,$E8<br />
dc.b $06,$D0,$06,$06,$D2,$D0,$E8,$00,$CD,$0C,$E8,$06<br />
dc.b $C9,$06,$C6,$C9,$0C,$E8,$00,$EF,$1C,$80,$1E,$C2<br />
dc.b $0C,$C2,$BD,$06,$80,$60,$80,$60,$EF,$00,$E9,$18<br />
dc.b $80,$60,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC,$06<br />
dc.b $AE,$B1,$80,$B4,$B1,$80,$B1,$80,$60,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$60,$EF,$22,$E9,$DC,$E6,$FF,$E0,$80<br />
dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $CD,$30,$CB,$18,$CD,$0C,$CB,$C9,$30,$CE,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$FC,$80,$C4,$80,$C4,$80,$C6,$18,$08,$C4,$04<br />
dc.b $E9,$0C,$E6,$FF,$E0,$C0,$EF,$00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $CB,$12,$CB,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $D0,$12,$D0,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$CB,$12,$80,$06,$CB,$80,$CA,$12,$CB,$CA<br />
dc.b $0C,$C5,$18,$C8,$CB,$D1,$80,$0C,$CD,$80,$CD,$12<br />
dc.b $CC,$CD,$06,$80,$E6,$F8,$EF,$01,$E1,$03,$A2,$6C<br />
dc.b $F2<br />
MusCreditsDFF2: dc.b $80,$60,$BC,$06,$BD,$BC,$B8,$BA,$B6,$0C,$B8,$B3<br />
dc.b $B3,$06,$B6,$0C,$B8,$E3<br />
MusCreditsE004: dc.b $80,$0C,$CD,$04,$80,$10,$CD,$04,$80,$0C,$CD,$0C<br />
dc.b $CE,$08,$CD,$04,$80,$18,$80,$0C,$CB,$04,$80,$10<br />
dc.b $CB,$04,$80,$0C,$CB,$0C,$CD,$08,$CB,$04,$80,$18<br />
- dc.b $80,$0C,$C9,$04,$80,$10,$C9,$04,$80,$0C,$C9,$0C<br />
dc.b $CB,$08,$C9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E3<br />
MusCreditsE040: dc.b $80,$18,$B8,$0B,$80,$0D,$BA,$0C,$0B,$80,$19,$BD<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE051: dc.b $80,$0C,$C4,$80,$C4,$80,$C6,$80,$C6,$E3<br />
MusCreditsE05B: dc.b $CD,$06,$80,$CD,$80,$CA,$80,$CA,$80,$E3<br />
MusCreditsE065: dc.b $EF,$05,$E9,$F4,$C6,$60,$CB,$CD,$E7,$CD,$C6,$60<br />
dc.b $D0,$D0,$24,$D2,$60,$E7,$3C,$E3<br />
MusCred_FM4: dc.b $80,$60,$E9,$FB,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$1D,$E6,$02,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B5,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B8,$3C,$E6,$06,$EF,$05<br />
dc.b $F0,$02,$01,$FE,$04<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E9,$F4,$E6,$F7<br />
dc.b $F0,$0C,$01,$FB,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$25,$C3,$06,$C3,$80,$0C,$C3,$06,$C3,$05,$80<br />
dc.b $0D,$C3,$06,$C5,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$05,$F4,$E1,$02,$E0<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$0C,$80,$60,$EF,$10,$E6,$F7,$E1,$00,$E0<br />
dc.b $40,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $B3,$B7,$06,$AE,$0C,$B1,$B3,$B7,$06,$80,$B7,$AE<br />
dc.b $0C,$B1,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $EF,$15,$E6,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
- dc.b $EF,$14,$80,$4E,$E0,$40,$A1,$12,$A2,$06,$E0,$C0<br />
dc.b $EF,$16,$80,$30,$80,$06,$BA,$08,$B9,$04,$B8,$08<br />
dc.b $B7,$04,$B6,$08,$B5,$04<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E9,$F4,$E6,$02,$E0,$C0<br />
dc.b $F0,$01,$01,$03,$03<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$1E,$E0,$40,$E6,$FE,$E9,$F4,$F4,$E8<br />
dc.b $06,$80,$0C,$C1,$06,$12,$18,$C4,$06,$12,$0C,$EF<br />
dc.b $1C,$E0,$C0,$E6,$FA,$E8,$00,$C6,$E8,$06,$E6,$06<br />
dc.b $EF,$1E,$E0,$40,$C2,$06,$12,$18,$C4,$06,$12,$18<br />
dc.b $C1,$06,$12,$18,$C4,$06,$12,$0C,$EF,$1A,$E0,$C0<br />
dc.b $E9,$0C,$C6,$06,$C6,$80,$C6,$80,$C6,$E8,$00,$C7<br />
dc.b $0C,$C8,$06,$EF,$1E,$E0,$40,$E9,$F4,$E8,$06,$80<br />
dc.b $C4,$06,$12,$0C,$80,$60,$EF,$20,$E9,$18,$E6,$FA<br />
dc.b $E0,$C0,$E8,$00,$B4,$03,$E7,$B6,$5D,$B3,$03,$E7<br />
dc.b $B5,$5D,$B1,$03,$E7,$B3,$5D,$B3,$03,$E7,$B5,$5D<br />
dc.b $80,$60,$EF,$22,$E0,$40,$E9,$E8,$E6,$04,$80,$30<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $C9,$30,$C8,$18,$C9,$0C,$C8,$C6,$30,$C9,$80,$0C<br />
dc.b $C1,$80,$C1,$80,$C2,$80,$C2,$E6,$04,$80,$C1,$80<br />
dc.b $C1,$80,$C2,$80,$C2,$E6,$FC,$80,$C1,$80,$C1,$80<br />
dc.b $C2,$18,$08,$C1,$04,$E9,$0C,$E6,$FF,$E0,$C0,$EF<br />
dc.b $00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $C8,$12,$C8,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $CB,$12,$CB,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E1,$03,$E6,$08,$F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $E6,$F0,$EF,$01<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $A2,$6C,$F2<br />
MusCreditsE22D: dc.b $A2,$14,$A4,$04,$A5,$04,$80,$08,$A9,$04,$80,$08<br />
dc.b $A8,$04,$80,$08,$A9,$04,$80,$08,$AC,$08,$A9,$10<br />
dc.b $E3<br />
MusCreditsE246: dc.b $80,$0C<br />
dc.b $C9,$04,$80,$10<br />
dc.b $C9,$04,$80,$0C<br />
dc.b $C9,$0C<br />
dc.b $CB,$08<br />
dc.b $C9,$04,$80,$18,$80,$0C<br />
dc.b $C8,$04,$80,$10<br />
dc.b $C8,$04,$80,$0C<br />
dc.b $C8,$0C<br />
dc.b $C9,$08<br />
dc.b $C8,$04,$80,$18,$80,$0C<br />
<br />
if 1==1<br />
; this part of the original credits music (CNZ PSG) sounds buggy (dissonant)<br />
dc.b $C6,$04,$80,$10<br />
dc.b $C6,$04,$80,$0C<br />
dc.b $C6,$0C<br />
dc.b $C8,$08<br />
dc.b $C6,$04,$80,$18,$80,$0C<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $C7,$08<br />
else<br />
; replace the above block of notes with this to fix it.<br />
; (I'm not sure why, but the notes $C6 and $C7 are broken here,<br />
; so I've replaced them with pitch-shifted $C8s)<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$10 ; $C6<br />
dc.b $C8,$04,$80,$0C ; $C6<br />
dc.b $C8,$0C ; $C6<br />
dc.b $E1,0<br />
dc.b $C8,$08<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$24 ; $C6<br />
dc.b $E1,0<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $E1,-32<br />
dc.b $C8,$08 ; $C7<br />
dc.b $E1,0<br />
endif<br />
<br />
dc.b $C5,$04,$80,$18<br />
dc.b $E3<br />
MusCreditsE28F: dc.b $EF,$25,$80,$0C,$D0,$D4,$D7,$DB,$0C,$80,$06,$DB<br />
dc.b $0C,$DC,$06,$DB,$0C,$DD,$60,$DE,$0C,$80,$DE,$80<br />
dc.b $80,$06,$DD,$12,$DE,$0C,$E3<br />
MusCreditsE2AE: dc.b $80,$18,$B5,$0B,$80,$0D,$B7,$0C,$0B,$80,$19,$BA<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE2BF: dc.b $C3,$05,$80,$13,$C3,$12,$C3,$05,$E3<br />
MusCreditsE2C8: dc.b $CA,$06,$80,$CA,$80,$C6,$80,$C6,$80,$E3<br />
MusCreditsE2D2: dc.b $AF,$0C,$B3,$06,$B6,$0C,$AF,$B1,$06,$80,$B1,$0C<br />
dc.b $B5,$06,$B8,$0C,$B1,$06,$80,$B6,$0C,$BA,$06,$B1<br />
dc.b $0C,$B5,$B6,$BA,$06,$80,$BA,$AF,$0C,$B3,$B5,$B8<br />
dc.b $06,$B2,$0C,$B3,$B5,$B8,$06,$80,$B8,$B2,$0C,$B5<br />
dc.b $E3<br />
MusCred_FM5: dc.b $E9,$E8,$E6,$F8,$E1,$05,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$18,$E6,$08,$E1,$00,$EF,$02<br />
dc.b $F0,$0C,$01,$FC,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B1,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B5,$3C,$E9,$F4,$E6,$07<br />
dc.b $F0,$30,$01,$04,$04<br />
dc.b $EF,$06<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E6,$F6<br />
dc.b $F0,$0C,$01,$05,$04<br />
dc.b $E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$25,$C6,$06,$C6,$80,$0C,$C6,$06,$C6,$05,$80<br />
dc.b $0D,$C6,$06,$C8,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$E6,$05,$F4,$80,$01,$EF,$0C,$E1<br />
dc.b $FE,$E0,$40,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $23,$80,$0C,$80,$60,$EF,$11,$E9,$F4,$E6,$F4,$E1<br />
dc.b $00,$E0,$C0<br />
dc.b $F0,$06,$01,$06,$05<br />
dc.b $80,$60,$80,$30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60<br />
dc.b $80,$06,$CB,$80,$CB,$C9,$80,$C9,$80,$C7,$80,$C7<br />
dc.b $80,$C6,$03,$80,$C6,$80,$09,$80,$06,$80,$60,$80<br />
dc.b $30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60,$EF,$16,$E9<br />
dc.b $0C,$E6,$04,$F4,$E0,$80,$80,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
dc.b $80,$2F,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$30,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$60,$EF,$19,$E9,$F4,$E0,$C0,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$27,$B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$2A,$80,$60,$EF,$1E,$E9,$F4,$E8,$06<br />
- dc.b $80,$0C,$C4,$06,$12,$18,$C8,$06,$12,$0C,$80,$C6<br />
dc.b $06,$12,$18,$C8,$06,$12,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$20,$E8,$00,$E9,$18,$E6,$FA,$B8,$03<br />
dc.b $E7,$BA,$5D,$B6,$03,$E7,$B8,$5D,$B4,$03,$E7,$B6<br />
dc.b $5D,$B6,$03,$E7,$B8,$5D,$80,$60,$EF,$22,$E9,$F4<br />
dc.b $E6,$05<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$A7,$04,$A9,$08,$AC,$04,$B1,$30,$80,$0C<br />
dc.b $B1,$08,$80,$04,$B3,$08,$B1,$10,$B5,$08,$B5,$04<br />
dc.b $80,$08,$B0,$34,$80,$0C,$B0,$B5,$08,$04,$80,$08<br />
dc.b $B1,$04,$AE,$24,$80,$0C,$AE,$08,$80,$04,$B0,$08<br />
dc.b $AE,$04,$B1,$0C,$AF,$08,$AD,$4C,$80,$0C,$B1,$08<br />
dc.b $80,$04,$B3,$08,$80,$04,$B1,$08,$80,$04,$B5,$08<br />
dc.b $B5,$04,$80,$08,$B0,$1C,$80,$0C,$B5,$18,$B8,$08<br />
dc.b $B5,$04,$BA,$18,$80,$0C,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$04,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$F8,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$AA,$14,$A9,$04,$E6,$0C,$EF,$23,$E1,$03<br />
dc.b $E6,$F7,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E6,$09<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $F2<br />
MusCreditsE4CD: dc.b $80,$1E,$EF,$14,$A4,$12,$A5,$06,$EF,$16,$80,$30<br />
dc.b $80,$06,$BD,$08,$BC,$04,$BB,$08,$BA,$04,$B9,$08<br />
dc.b $B8,$04,$E3<br />
MusCreditsE4E8: dc.b $80,$18,$B1,$0B,$80,$0D,$B3,$0C,$0B,$80,$19,$B6<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE4F9: dc.b $C6,$05,$80,$13,$C6,$12,$C6,$05,$E3<br />
MusCreditsE502: dc.b $80,$60,$AC,$06,$80,$AC,$0C,$AE,$06,$80,$AE,$0C<br />
dc.b $AF,$06,$E3<br />
MusCred_PSG1: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG1)<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$F4,$E6,$FE,$F5,$01,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $AE,$B3,$06,$AC,$0C,$AE,$AE,$B3,$06,$80,$B3,$AB<br />
dc.b $0C,$AE,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $F5,$0B,$80,$04,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$20,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$F5,$00,$E8,$06,$E9,$F4,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$80,$C2,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$04,$80,$C2,$80,$0C,$C2,$80,$60,$F5,$08,$E9<br />
dc.b $04,$EC,$02,$E8,$06<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F0,$EC,$FF,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $E9,$18,$EC,$02,$B5,$30,$B3,$18,$B5,$0C,$B3,$B1<br />
dc.b $30,$B6,$EC,$FE,$80,$0C,$B8,$80,$B8,$80,$BA,$80<br />
dc.b $BA,$EC,$03,$C4,$18,$C1,$BD,$BF,$0C,$80,$EC,$FC<br />
dc.b $80,$B8,$80,$B8,$80,$BA,$18,$08,$B8,$04,$E9,$F4<br />
dc.b $EC,$01,$F5,$05<br />
- dc.b $80,$60<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$C8,$12,$80,$06,$C8,$80,$C6,$12,$C8,$C6<br />
dc.b $0C,$C1,$18,$C5,$C8,$CB,$80,$0C,$CA,$80,$CA,$12<br />
dc.b $C9,$CA,$06,$80,$09,$E9,$30,$EC,$FC,$F6<br />
dc.w z80_ptr(MusCreditsE770)<br />
dc.b $F2<br />
MusCreditsE618: dc.b $80,$0C,$BD,$06,$12,$18,$C4,$06,$12,$0C,$80,$C2<br />
dc.b $06,$12,$18,$C4,$06,$12,$0C,$E3<br />
MusCreditsE62C: dc.b $80,$60,$80,$0C,$C2,$80,$C2,$80,$E3<br />
MusCreditsE635: dc.b $AC,$0C,$AF,$06,$B3,$0C,$AC,$AC,$06,$80,$AC,$0C<br />
dc.b $AF,$06,$B5,$0C,$AC,$06,$80,$06,$B1,$0C,$B6,$06<br />
dc.b $AE,$0C,$B1,$B3,$B6,$06,$80,$B6,$AA,$0C,$AF,$AF<br />
dc.b $B5,$06,$AC,$0C,$AF,$B2,$B5,$06,$80,$B5,$AE,$0C<br />
dc.b $B2,$E3<br />
MusCred_PSG2: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG2)<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$0C,$EC,$FD,$F5,$04,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
dc.b $F0,$03,$02,$01,$05<br />
dc.b $F5,$0A,$E9,$E8,$EC,$02,$80,$30,$80,$80,$BD,$06<br />
dc.b $BF,$C6,$C2,$1E,$80,$60,$80,$06,$C6,$80,$C6,$C4<br />
dc.b $80,$C4,$80,$C3,$80,$C3,$80,$BF,$03,$80,$BF,$80<br />
dc.b $09,$80,$06,$80,$30,$80,$80,$BD,$06,$BF,$C6,$C2<br />
dc.b $1E,$80,$60,$F4<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$00,$EC,$FE,$E8,$06,$80,$60,$80,$0C,$BF,$80<br />
dc.b $BF,$80,$BF,$80,$BF,$80,$60,$80,$0C,$BF,$80,$BF<br />
dc.b $80,$BF,$04,$80,$BF,$80,$0C,$BF,$80,$60,$EC,$02<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F4,$EC,$FF,$E9,$E8,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $E9,$18,$EC,$02,$B1,$30,$B0,$18,$B1,$0C,$B0,$AE<br />
dc.b $30,$B1,$EC,$FE,$80,$0C,$B5,$80,$B5,$80,$B6,$80<br />
dc.b $B6,$EC,$03,$80,$B1,$80,$B1,$80,$B1,$80,$B1,$EC<br />
dc.b $FC,$80,$B1,$80,$B1,$80,$B1,$18,$08,$B1,$04,$EC<br />
dc.b $01,$E9,$18,$F5,$05,$E1,$01,$80,$60,$80,$80,$80<br />
dc.b $80,$80,$80,$0C,$CD,$06,$80,$D4,$CD,$80,$0C,$CD<br />
dc.b $06,$80,$D4,$CD,$80,$18,$80,$54,$E9,$24,$EC,$FD<br />
MusCreditsE770: dc.b $F5,$03,$80,$06<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$FF<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$01<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusCred_PSG3: dc.b $F3,$E7,$80,$60,$F5,$02<br />
- dc.b $C6,$0C,$0C,$0C,$06,$06,$0C,$0C,$06,$06,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$1F<br />
dc.w z80_ptr(-)<br />
dc.b $0C,$F5,$03,$C6,$F5,$02<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $06,$06,$06,$06<br />
dc.b $F7,$01,$04<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$04,$EC,$02<br />
- dc.b $E8,$03,$C6,$06,$06,$E8,$00,$0C<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$02,$EC,$FD<br />
- dc.b $80,$0C,$C6,$06,$80,$07,$C6,$06,$80,$11,$C6,$0C<br />
dc.b $80,$06,$C6,$0C,$80,$06,$C6,$80<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$02<br />
- dc.b $C6,$0C,$08,$04<br />
dc.b $F7,$00,$18<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$0C,$0C,$08,$04<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$04,$EC,$02<br />
- dc.b $C6,$06,$06,$0C<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EC,$FF<br />
- dc.b $F5,$01,$C6,$0C,$F5,$02,$EC,$FF,$08,$F5,$01,$EC<br />
dc.b $01,$04<br />
dc.b $F7,$00,$27<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$FF,$F5,$04<br />
- dc.b $E8,$03,$C6,$0C,$E8,$0C,$0C<br />
dc.b $F7,$00,$1E<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$03,$C6,$06,$E8,$0E,$12,$E8,$03,$0C,$E8,$0F<br />
dc.b $0C,$F2<br />
MusCred_DAC: dc.b $82,$06,$82,$82,$82,$82,$0C,$06,$0C,$06,$0C,$0C<br />
dc.b $0C<br />
- dc.b $81,$18,$82<br />
dc.b $F7,$00,$0E<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C<br />
- dc.b $82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EA,$EA,$F8<br />
dc.w z80_ptr(MusCreditsEA6E)<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$82,$06,$82,$82,$82,$81,$0C,$82,$06,$82<br />
dc.b $81,$81,$82,$82,$82,$82<br />
- dc.b $81,$18,$82,$81,$82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$82,$82,$82,$06,$82,$8C,$8C,$8D,$8D<br />
dc.b $8E,$8E,$F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$18,$82,$0C,$81,$18,$82,$0C,$82,$82,$06,$82<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$0C,$82,$82,$82,$8D,$06,$8D,$8E,$8E,$82,$06<br />
dc.b $82,$8D,$0C,$82,$0C,$82,$06,$82,$80,$82,$82,$0C<br />
MusCreditsE8E5: dc.b $82,$0C,$82,$82,$06,$82,$8D,$8D<br />
- dc.b $81,$0C,$8F,$06,$90,$82,$0C,$90,$06,$91,$81,$0C<br />
dc.b $8F,$06,$91,$82,$0C,$8F,$06,$91<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$8F,$06,$91,$82,$0C,$8F,$06,$91,$8C,$06<br />
dc.b $03,$03,$8D,$06,$8D,$8D,$8E,$8E,$8E,$81,$06,$0C<br />
dc.b $82,$06,$80,$0C,$81,$82,$8E,$82,$06,$82,$82,$82<br />
- dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$12,$8C,$06<br />
dc.b $82,$0C,$83,$06,$81,$80<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$06,$82,$06<br />
dc.b $81,$0C,$06,$82,$0C,$08,$04,$EA,$CD,$82,$30,$82<br />
dc.b $0C,$82,$82,$82,$08,$04,$F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$04,$82,$08,$04<br />
dc.b $08,$04,$04,$04,$04,$08,$04,$EA,$C5<br />
- dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82,$0C,$06<br />
dc.b $06,$81,$0C,$82,$06,$82,$82,$82,$8D,$0C,$82,$0C<br />
dc.b $0C,$0C,$06,$06<br />
- dc.b $81,$0C,$81,$82,$80,$81,$81,$82,$83<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$82,$82,$82,$82,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $81,$06,$81,$82,$82,$81,$82,$81,$81,$82,$02,$82<br />
dc.b $04,$81,$0C,$06,$82,$0C,$06,$06,$81,$18,$82,$0C<br />
dc.b $81,$81,$18,$82,$81,$06,$81,$12,$82,$0C,$81,$81<br />
dc.b $18,$82,$81,$18,$82,$0C,$81,$81,$18,$82,$81,$06<br />
dc.b $81,$12,$82,$0C,$0C,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $82,$02,$04,$81,$0C,$06,$0C,$82,$02,$04,$81,$0C<br />
dc.b $06,$0C,$82,$06,$82,$82,$82,$EA,$C0,$81,$0C,$82<br />
dc.b $81,$82,$81,$82,$81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$0F<br />
dc.w z80_ptr(-)<br />
dc.b $81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$13<br />
dc.w z80_ptr(-)<br />
dc.b $82,$08,$0C,$04,$81,$0C,$82,$81,$82,$81,$0C,$82<br />
dc.b $81,$06,$80,$02,$82,$82,$82,$09,$82,$03<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$06,$80,$02,$82,$82,$82,$09,$82<br />
dc.b $03<br />
dc.b $F7,$01,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$82,$81,$06,$82,$12,$82,$0C,$81<br />
dc.b $F2<br />
MusCreditsEA6E: dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$83,$E3<br />
MusCreditsEA84: dc.b $81,$18,$82,$0C,$81,$18,$0C,$82,$81,$81,$18,$82<br />
dc.b $0C,$81,$12,$81,$82,$18,$81,$82,$0C,$81,$18,$0C<br />
dc.b $82,$81,$E3<br />
MusCreditsEA9F: dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$0C,$82,$04,$81<br />
dc.b $0C,$82,$81,$81,$08,$0C,$04,$82,$0C,$81,$08,$0C<br />
dc.b $82,$04,$81,$0C,$82,$82,$08,$04,$E3,$81,$06,$80<br />
dc.b $03,$81,$81,$06,$82,$81,$06,$80,$03,$81,$81,$06<br />
dc.b $82,$03,$82,$81,$06,$80,$03,$81,$81,$06,$82,$E3<br />
MusCred_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$01,$1F,$1F,$FF,$0F,$17,$27,$28,$80<br />
dc.b $08,$09,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$25,$0E,$30,$84<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$0B,$0D,$19,$0B,$80,$80<br />
dc.b $08,$0A,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$24,$13,$2D,$80<br />
dc.b $3D,$01,$51,$21,$01,$12,$14,$14,$0F,$0A,$05,$05<br />
dc.b $05,$00,$00,$00,$00,$2B,$2B,$2B,$1B,$19,$80,$80,$80<br />
dc.b $04,$57,$70,$02,$50,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$06,$00,$0A,$0A,$00,$00,$0F,$0F,$1A,$10,$80,$80<br />
dc.b $35,$01,$13,$01,$00,$1F,$18,$1D,$19,$00,$06,$09<br />
dc.b $0D,$00,$02,$00,$03,$00,$15,$06,$16,$1E,$83,$80,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1A,$16,$88,$88<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$14,$0F,$37,$80<br />
dc.b $3B,$0F,$01,$06,$02,$DF,$1F,$1F,$DF,$0C,$0A,$00<br />
dc.b $03,$0F,$00,$00,$01,$F3,$55,$05,$5C,$22,$22,$20,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1C,$14,$84,$80<br />
dc.b $3A,$69,$50,$70,$60,$1C,$1A,$18,$18,$10,$02,$0C<br />
dc.b $09,$08,$06,$06,$03,$F9,$06,$56,$06,$28,$14,$15,$00<br />
dc.b $3D,$00,$02,$01,$01,$4C,$50,$0F,$12,$0C,$00,$02<br />
dc.b $05,$01,$00,$00,$00,$28,$2A,$29,$19,$1A,$06,$00,$00<br />
dc.b $2C,$71,$31,$71,$31,$1F,$1F,$16,$16,$00,$00,$0F<br />
dc.b $0F,$00,$00,$0F,$0F,$00,$00,$FA,$FA,$15,$14,$00,$00<br />
dc.b $18,$37,$31,$32,$31,$9E,$1C,$DC,$9C,$0D,$04,$06<br />
dc.b $01,$08,$03,$0A,$05,$B6,$36,$B6,$28,$2C,$14,$22,$00<br />
dc.b $3D,$01,$02,$02,$02,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$24,$18,$18,$18,$1C,$82,$82,$82<br />
dc.b $32,$71,$33,$0D,$01,$5F,$5F,$99,$94,$05,$05,$05<br />
dc.b $07,$02,$02,$02,$02,$11,$11,$11,$72,$23,$26,$2D,$80<br />
dc.b $3A,$32,$52,$01,$31,$1F,$1F,$1F,$18,$01,$00,$1F<br />
dc.b $00,$00,$00,$0F,$00,$5A,$03,$0F,$1A,$3B,$4F,$30,$00<br />
dc.b $3C,$42,$32,$41,$41,$12,$12,$12,$12,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$06,$06,$08,$08,$24,$24,$08,$08<br />
dc.b $31,$34,$30,$35,$31,$DF,$9F,$DF,$9F,$0C,$0C,$07<br />
dc.b $09,$07,$07,$07,$08,$2F,$1F,$1F,$2F,$17,$14,$32,$80<br />
dc.b $3D,$01,$01,$01,$01,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$20,$1A,$1A,$1A,$19,$84,$84,$84<br />
dc.b $24,$70,$30,$74,$38,$12,$1F,$1F,$1F,$05,$05,$03<br />
dc.b $03,$05,$05,$03,$03,$36,$26,$2C,$2C,$0A,$06,$08,$08<br />
dc.b $3A,$01,$01,$01,$02,$8D,$07,$07,$52,$09,$00,$00<br />
dc.b $03,$01,$02,$02,$00,$5F,$0F,$0F,$2F,$18,$18,$22,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$03,$03,$08,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$17,$20,$28,$80<br />
dc.b $20,$7A,$00,$31,$00,$9F,$DC,$D8,$DF,$10,$04,$0A<br />
dc.b $04,$0F,$08,$08,$08,$5F,$BF,$5F,$BF,$14,$17,$2B,$80<br />
dc.b $3A,$61,$51,$08,$02,$5D,$5D,$5D,$50,$04,$1F,$0F<br />
dc.b $1F,$00,$00,$00,$00,$1F,$0F,$5F,$0F,$22,$22,$1E,$80<br />
dc.b $02,$01,$02,$55,$04,$92,$8E,$8D,$54,$0D,$00,$0C<br />
dc.b $03,$00,$00,$00,$00,$FF,$0F,$2F,$5F,$16,$1D,$2A,$80<br />
dc.b $02,$75,$73,$71,$31,$1F,$96,$58,$9F,$01,$03,$1B<br />
dc.b $08,$01,$01,$04,$05,$FF,$3F,$2F,$2F,$24,$30,$29,$80<br />
dc.b $20,$66,$60,$65,$60,$DF,$9F,$DF,$1F,$00,$09,$06<br />
dc.b $0C,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$1C,$16,$3A,$80<br />
dc.b $0D,$32,$06,$08,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$86,$80,$8D<br />
dc.b $38,$3A,$11,$0A,$02,$D4,$50,$14,$0E,$05,$02,$08<br />
dc.b $88,$00,$00,$00,$00,$99,$09,$09,$1A,$2D,$19,$2C,$86<br />
dc.b $0D,$32,$02,$04,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$8B,$86,$93<br />
dc.b $3A,$20,$60,$23,$01,$1E,$1F,$1F,$1F,$0A,$0B,$0A<br />
dc.b $0A,$05,$0A,$07,$08,$A4,$96,$85,$78,$21,$28,$25,$00<br />
dc.b $3A,$32,$32,$56,$42,$8D,$15,$4F,$52,$06,$07,$08<br />
dc.b $04,$02,$00,$00,$00,$18,$28,$18,$28,$19,$2A,$20,$00<br />
dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$19,$13,$37,$80<br />
dc.b $3D,$01,$02,$02,$02,$14,$8C,$0E,$0E,$08,$02,$05<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$1A,$80,$80,$80<br />
; end of Mus_Credits<br />
<br />
; ------------------------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ------------------------------------------------------------------------------------------<br />
; WARNING the sound driver treats certain sounds specially<br />
; going by the ID of the sound.<br />
; SndID_Ring, SndID_RingLeft, SndID_Gloop, SndID_SpindashRev<br />
; are referenced by the sound driver directly.<br />
; If needed you can change this in s2.sounddriver.asm<br />
<br />
<br />
; NOTE: the exact order of this list determines the priority of each sound, since it determines the sound's SndID.<br />
; a sound can get dropped if a higher-priority sound is already playing.<br />
; the rules for sound priority are currently unknown, but you can generally swap pointer lines around to resolve priority conflicts.<br />
; loc_FEE91: SoundPoint:<br />
SoundIndex:<br />
SndPtr_Jump: rom_ptr_z80 Sound20 ; jumping sound<br />
SndPtr_Checkpoint: rom_ptr_z80 Sound21 ; checkpoint ding-dong sound<br />
SndPtr_SpikeSwitch: rom_ptr_z80 Sound22 ; spike switch sound<br />
SndPtr_Hurt: rom_ptr_z80 Sound23 ; hurt sound<br />
SndPtr_Skidding: rom_ptr_z80 Sound24 ; skidding sound<br />
SndPtr_BlockPush: rom_ptr_z80 Sound25 ; block push sound<br />
SndPtr_HurtBySpikes: rom_ptr_z80 Sound26 ; spiky impalement sound<br />
SndPtr_Sparkle: rom_ptr_z80 Sound27 ; sparkling sound<br />
SndPtr_Beep: rom_ptr_z80 Sound28 ; short beep<br />
SndPtr_Bwoop: rom_ptr_z80 Sound29 ; bwoop<br />
SndPtr_Splash: rom_ptr_z80 Sound2A ; splash sound<br />
SndPtr_Swish: rom_ptr_z80 Sound2B ; swish<br />
SndPtr_BossHit: rom_ptr_z80 Sound2C ; boss hit<br />
SndPtr_InhalingBubble: rom_ptr_z80 Sound2D ; inhaling a bubble<br />
SndPtr_ArrowFiring:<br />
SndPtr_LavaBall: rom_ptr_z80 Sound2E ; arrow firing<br />
SndPtr_Shield: rom_ptr_z80 Sound2F ; shield sound<br />
SndPtr_LaserBeam: rom_ptr_z80 Sound30 ; laser beam<br />
SndPtr_Zap: rom_ptr_z80 Sound31 ; zap<br />
SndPtr_Drown: rom_ptr_z80 Sound32 ; drownage<br />
SndPtr_FireBurn: rom_ptr_z80 Sound33 ; fire + burn<br />
SndPtr_Bumper: rom_ptr_z80 Sound34 ; bumper bing<br />
SndPtr_Ring:<br />
SndPtr_RingRight: rom_ptr_z80 Sound35 ; ring sound<br />
SndPtr_SpikesMove: rom_ptr_z80 Sound36<br />
SndPtr_Rumbling: rom_ptr_z80 Sound37 ; rumbling<br />
rom_ptr_z80 Sound38<br />
SndPtr_Smash: rom_ptr_z80 Sound39 ; smash/breaking<br />
rom_ptr_z80 Sound3A ; nondescript ding<br />
SndPtr_DoorSlam: rom_ptr_z80 Sound3B ; door slamming shut<br />
SndPtr_SpindashRelease: rom_ptr_z80 Sound3C ; spindash unleashed<br />
SndPtr_Hammer: rom_ptr_z80 Sound3D ; slide-thunk<br />
SndPtr_Roll: rom_ptr_z80 Sound3E ; rolling sound<br />
SndPtr_ContinueJingle: rom_ptr_z80 Sound3F ; got continue<br />
SndPtr_CasinoBonus: rom_ptr_z80 Sound40 ; short bonus ding<br />
SndPtr_Explosion: rom_ptr_z80 Sound41 ; badnik bust<br />
SndPtr_WaterWarning: rom_ptr_z80 Sound42 ; warning ding-ding<br />
SndPtr_EnterGiantRing: rom_ptr_z80 Sound43 ; special stage ring flash (unused)<br />
SndPtr_BossExplosion: rom_ptr_z80 Sound44 ; thunk<br />
SndPtr_TallyEnd: rom_ptr_z80 Sound45 ; cha-ching<br />
SndPtr_RingSpill: rom_ptr_z80 Sound46 ; losing rings<br />
rom_ptr_z80 Sound47 ; chain pull chink-chink<br />
SndPtr_Flamethrower: rom_ptr_z80 Sound48 ; flamethrower<br />
SndPtr_Bonus: rom_ptr_z80 Sound49 ; bonus pwoieeew (unused)<br />
SndPtr_SpecStageEntry: rom_ptr_z80 Sound4A ; special stage entry<br />
SndPtr_SlowSmash: rom_ptr_z80 Sound4B ; slower smash/crumble<br />
SndPtr_Spring: rom_ptr_z80 Sound4C ; spring boing<br />
SndPtr_Blip: rom_ptr_z80 Sound4D ; selection blip<br />
SndPtr_RingLeft: rom_ptr_z80 Sound4E ; another ring sound (only plays in the left speaker?)<br />
SndPtr_Signpost: rom_ptr_z80 Sound4F ; signpost spin sound<br />
SndPtr_CNZBossZap: rom_ptr_z80 Sound50 ; mosquito zapper<br />
rom_ptr_z80 Sound51<br />
rom_ptr_z80 Sound52<br />
SndPtr_Signpost2P: rom_ptr_z80 Sound53<br />
SndPtr_OOZLidPop: rom_ptr_z80 Sound54 ; OOZ lid pop sound<br />
SndPtr_SlidingSpike: rom_ptr_z80 Sound55<br />
SndPtr_CNZElevator: rom_ptr_z80 Sound56<br />
SndPtr_PlatformKnock: rom_ptr_z80 Sound57<br />
SndPtr_BonusBumper: rom_ptr_z80 Sound58 ; CNZ bonusy bumper sound<br />
SndPtr_LargeBumper: rom_ptr_z80 Sound59 ; CNZ baaang bumper sound<br />
SndPtr_Gloop: rom_ptr_z80 Sound5A ; CNZ gloop / water droplet sound<br />
SndPtr_PreArrowFiring: rom_ptr_z80 Sound5B<br />
SndPtr_Fire: rom_ptr_z80 Sound5C<br />
SndPtr_ArrowStick: rom_ptr_z80 Sound5D ; chain clink<br />
SndPtr_Helicopter:<br />
SndPtr_WingFortress: rom_ptr_z80 Sound5E ; helicopter<br />
SndPtr_SuperTransform: rom_ptr_z80 Sound5F<br />
SndPtr_SpindashRev: rom_ptr_z80 Sound60 ; spindash charge<br />
SndPtr_Rumbling2: rom_ptr_z80 Sound61 ; rumbling<br />
SndPtr_CNZLaunch: rom_ptr_z80 Sound62<br />
SndPtr_Flipper: rom_ptr_z80 Sound63 ; CNZ blooing bumper<br />
SndPtr_HTZLiftClick: rom_ptr_z80 Sound64 ; HTZ track click sound<br />
SndPtr_Leaves: rom_ptr_z80 Sound65 ; kicking up leaves sound<br />
SndPtr_MegaMackDrop: rom_ptr_z80 Sound66 ; leaf splash?<br />
SndPtr_DrawbridgeMove: rom_ptr_z80 Sound67<br />
SndPtr_QuickDoorSlam: rom_ptr_z80 Sound68 ; door slamming quickly (seems unused)<br />
SndPtr_DrawbridgeDown: rom_ptr_z80 Sound69<br />
SndPtr_LaserBurst: rom_ptr_z80 Sound6A ; robotic laser burst<br />
SndPtr_Scatter:<br />
SndPtr_LaserFloor: rom_ptr_z80 Sound6B ; scatter<br />
SndPtr_Teleport: rom_ptr_z80 Sound6C<br />
SndPtr_Error: rom_ptr_z80 Sound6D ; error sound<br />
SndPtr_MechaSonicBuzz: rom_ptr_z80 Sound6E ; silver sonic buzz saw<br />
SndPtr_LargeLaser: rom_ptr_z80 Sound6F<br />
SndPtr_OilSlide: rom_ptr_z80 Sound70<br />
SndPtr__End:<br />
<br />
; There are many non-relative pointers in these sound effects,<br />
; so the sounds shouldn't simply be BINCLUDE'd.<br />
; They could be included as separate .asm files using "include" instead of "binclude",<br />
; but I wanted to minimize the number of included asm files.<br />
<br />
; some comments on what the various script commands do (after the header):<br />
; 0x00-0x7F sets the note duration (of the previous note and following notes)<br />
; 0x81-0xDF plays a note (the valid range may be smaller for PSG or DAC)<br />
; 0x80 plays silence<br />
; 0xE0-0xFF does special things. I won't list them here... search for "Coordination flags" sonic 2.<br />
<br />
; the FM voices (poorly named "ssamp" or "samples" below)<br />
; are 25 bytes each and go directly to YM2612 registers.<br />
; they can be hard to edit (there's an art to it)<br />
; but search for sonic "Voice editing" for more info if you want to try.<br />
<br />
; jumping sound<br />
Sound20: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$F400<br />
+ dc.b $F5,$00,$9E,$05,$F0,$02,$01,$F8,$65,$A3,$15,$F2<br />
<br />
; checkpoint ding-dong sound<br />
Sound21: dc.w z80_ptr(ssamp21),$0101<br />
dc.w $8005,z80_ptr(+),$0001<br />
ssamp21: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
+ dc.b $EF,$00,$BD,$06,$BA,$16,$F2<br />
<br />
; spike switch sound<br />
Sound22: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C0,$04,$CA,$04<br />
- dc.b $C0,$01,$EC<br />
dc.w $01F7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; hurt sound<br />
Sound23: dc.w z80_ptr(ssamp23),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B0,$07,$E7,$AD<br />
- dc.b $01,$E6<br />
dc.w $01F7,$002F,z80_ptr(-)<br />
dc.b $F2<br />
ssamp23: dc.b $30,$30,$30,$30,$30,$9E,$DC,$D8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$14,$14,$3C,$80<br />
<br />
; skidding sound<br />
Sound24: dc.w $0000,$0102 ; sound header... no sample and 2 script entries<br />
dc.w $80A0,z80_ptr(+),$F400 ; entry 1 header<br />
dc.w $80C0,z80_ptr(++),$F400 ; entry 2 header<br />
+ dc.b $F5,$00,$AF,$01,$80,$AF,$80,$03 ; script entry 1<br />
- dc.b $AF,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 1 end<br />
+ dc.b $F5,$00,$80,$01,$AD,$80,$AD,$80,$03 ; script entry 2<br />
- dc.b $AD,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 2 end<br />
<br />
; block push sound<br />
Sound25: dc.w z80_ptr(ssamp25),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$01,$8B,$0A,$80,$02,$F2<br />
ssamp25: dc.b $FA,$21,$10,$30,$32,$2F,$2F,$1F,$2F,$05,$09,$08<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
; spiky impalement sound<br />
Sound26: dc.w z80_ptr(ssamp26),$0101<br />
dc.w $8005,z80_ptr(+),$F200<br />
+ dc.b $EF,$00,$F0,$01,$01,$10,$FF,$CF,$05,$D7,$25,$F2<br />
ssamp26: dc.b $3B,$3C,$30,$39,$31,$DF,$1F,$1F,$DF,$04,$04,$05<br />
dc.b $01,$04,$04,$04,$02,$FF,$1F,$0F,$AF,$29,$0F,$20,$80<br />
<br />
; sparkling sound<br />
Sound27: dc.w z80_ptr(ssamp27),$0101<br />
dc.w $8004,z80_ptr(+),$0C1C<br />
+ dc.b $EF,$00,$C1,$05,$C4,$05,$C9,$2B,$F2<br />
ssamp27: dc.b $07,$73,$33,$33,$73,$0F,$19,$14,$1A,$0A,$0A,$0A<br />
dc.b $0A,$0A,$0A,$0A,$0A,$57,$57,$57,$57,$00,$00,$00,$00<br />
<br />
; short beep<br />
Sound28: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$E803<br />
+ dc.b $F5,$04,$CB,$04,$F2<br />
<br />
; bwoop<br />
Sound29: dc.w $0000,$0101<br />
dc.w $80A0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$E6,$35,$8E,$06,$F2<br />
<br />
; splash sound<br />
Sound2A: dc.w z80_ptr(ssamp2A),$0102<br />
dc.w $80C0,z80_ptr(+),$0000<br />
dc.w $8005,z80_ptr(++),$0003<br />
+ dc.b $F5,$00,$F3,$E7,$C2,$05,$C6,$05,$E7<br />
- dc.b $07,$EC,$01<br />
dc.w $E7F7,$000F,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$A6,$14,$F2<br />
ssamp2A: dc.b $00,$00,$02,$03,$00,$D9,$1F,$DF,$1F,$12,$14,$11<br />
dc.b $0F,$0A,$0A,$00,$0D,$FF,$FF,$FF,$FF,$22,$27,$07,$80<br />
<br />
; swish<br />
Sound2B: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$C6,$03,$80,$03,$C6,$01,$E7<br />
- dc.b $01,$EC,$01<br />
dc.w $E7F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; boss hit<br />
Sound2C: dc.w z80_ptr(smashsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$0C,$01<br />
- dc.b $81,$0A,$E6<br />
dc.w $10F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
smashsamp: dc.b $F9,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
<br />
; inhaling a bubble<br />
Sound2D: dc.w z80_ptr(ssamp2D),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$21,$6E,$A6,$07<br />
dc.b $80,$06,$F0,$01,$01,$44,$1E,$AD,$08,$F2<br />
ssamp2D: dc.b $35,$05,$08,$09,$07,$1E,$0D,$0D,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$1F,$2F,$1F,$15,$12,$12,$80<br />
<br />
; arrow firing<br />
Sound2E: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$C6,$01,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp2E: dc.b $FA,$02,$00,$03,$05,$12,$0F,$11,$13,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$2F,$0E,$1A,$80<br />
<br />
; shield sound<br />
Sound2F: dc.w z80_ptr(ssamp2F),$0101<br />
dc.w $8005,z80_ptr(+),$0C00<br />
+ dc.b $EF,$00,$80,$01,$A3,$05,$E7,$A4,$26,$F2<br />
ssamp2F: dc.b $30,$30,$30,$30,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$04,$14,$2C,$80<br />
<br />
; laser beam<br />
Sound30: dc.w z80_ptr(ssamp30),$0101 ; sound header... a voice and 1 script entry<br />
dc.w $8005,z80_ptr(+),$FB05 ; script entry header<br />
+ dc.b $EF,$00,$DF,$7F ; script start<br />
- dc.b $DF,$02,$E6 ; script continued<br />
dc.w $01F7,$001B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script end<br />
ssamp30: dc.b $83,$1F,$1F,$15,$1F,$1F,$1F,$1F,$1F,$00,$00,$00 ; voice<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$0B,$01,$16,$82 ; (fixed length)<br />
<br />
; zap<br />
Sound31: dc.w z80_ptr(ssamp31),$0101<br />
dc.w $8005,z80_ptr(+),$FB02<br />
+ dc.b $EF,$00,$B3,$05,$80,$01,$B3,$09,$F2<br />
ssamp31: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$05,$34,$10,$87<br />
<br />
; drownage<br />
Sound32: dc.w z80_ptr(ssamp32),$0102<br />
dc.w $8004,z80_ptr(++),$0C04<br />
dc.w $8005,z80_ptr(+),$0E02<br />
+ dc.b $EF,$00,$F0,$01,$01,$83,$0C<br />
- dc.b $8A,$05,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $80,$06,$EF,$00,$F0,$01,$01,$6F,$0E<br />
- dc.b $8D,$04,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp32: dc.b $35,$14,$04,$1A,$09,$0E,$11,$10,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$4F,$2F,$4F,$2F,$12,$12,$80<br />
<br />
; fire + burn<br />
Sound33: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$A7,$25,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; bumper bing<br />
Sound34: dc.w z80_ptr(ssamp34),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $8002,z80_ptr(+++),$0002<br />
+ dc.b $EF,$00,$F6<br />
dc.w z80_ptr(Sound34_3)<br />
+ dc.b $EF,$00,$E1,$07,$80,$01<br />
Sound34_3:<br />
dc.b $BA,$20,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
ssamp34: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$1F,$2B,$80,$80<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; ring sound<br />
Sound35: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$40,$C1,$05,$C4,$05,$C9,$1B,$F2<br />
<br />
<br />
Sound36: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C1,$07<br />
- dc.b $D0,$01,$EC<br />
dc.w $01F7,$000C,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; rumbling<br />
Sound37: dc.w z80_ptr(ssamp37),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$20,$08<br />
- dc.b $8B<br />
dc.w $0AF7,$0008,z80_ptr(-)<br />
- dc.b $8B,$10,$E6<br />
dc.w $03F7,$0009,z80_ptr(-)<br />
dc.b $F2<br />
ssamp37: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
<br />
Sound38: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$B4,$08<br />
- dc.b $B0,$02,$EC<br />
dc.w $01F7,$0003,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; smash/breaking<br />
Sound39: dc.w z80_ptr(smashsamp),$0104<br />
dc.w $8002,z80_ptr(+),$1000<br />
dc.w $8004,z80_ptr(+++),$0000<br />
dc.w $8005,z80_ptr(++),$1000<br />
dc.w $80C0,z80_ptr(s39s4),$0000<br />
+ dc.b $E0,$40,$80,$02,$F6<br />
dc.w z80_ptr(++)<br />
+ dc.b $E0,$80,$80,$01<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
s39s4: dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; nondescript ding<br />
Sound3A: dc.w z80_ptr(ssamp3A),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$AE,$08,$F2<br />
ssamp3A: dc.b $1C,$2E,$0F,$02,$02,$1F,$1F,$1F,$1F,$18,$14,$0F<br />
dc.b $0E,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$20,$1B,$80,$80<br />
<br />
; door slamming shut<br />
Sound3B: dc.w z80_ptr(ssamp3B),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$80,$A0,$06,$F2<br />
ssamp3B: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; spindash unleashed<br />
Sound3C: dc.w z80_ptr(ssamp3C),$0102<br />
dc.w $8005,z80_ptr(+),$9000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$F2<br />
+ dc.b $F5,$07,$80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$4F,$F2<br />
ssamp3C: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
<br />
; slide-thunk<br />
Sound3D: dc.w z80_ptr(ssamp3D),$0102<br />
dc.w $8005,z80_ptr(+),$100A<br />
dc.w $8004,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$60,$01,$A7,$08,$F2<br />
+ dc.b $80,$08,$EF,$01,$84,$22,$F2<br />
ssamp3D: dc.b $FA,$21,$19,$3A,$30,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
dc.b $FA,$31,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$1F,$2F,$2F,$0D,$01,$00,$80<br />
<br />
; rolling sound<br />
Sound3E: dc.w z80_ptr(ssamp3E),$0101<br />
dc.w $8004,z80_ptr(+),$0C05<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$09,$FF,$CA,$25,$F4<br />
- dc.b $E7,$E6,$01,$D0<br />
dc.w $02F7,$002A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3E: dc.b $3C,$00,$02,$44,$02,$1F,$1F,$1F,$15,$00,$00,$1F<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0D,$28,$00,$00<br />
<br />
; got continue<br />
Sound3F: dc.w z80_ptr(ssamp3F),$0103<br />
dc.w $8002,z80_ptr(+),$F406<br />
dc.w $8004,z80_ptr(++),$F406<br />
dc.w $8005,z80_ptr(+++),$F406<br />
+ dc.b $EF,$00,$C9,$07,$CD,$D0,$CB,$CE,$D2,$CD,$D0,$D4,$CE,$D2,$D5<br />
- dc.b $D0,$07,$D4,$D7,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$80,$07,$CD,$15,$CE,$D0,$D2<br />
- dc.b $D4,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$C9,$15,$CB,$CD,$CE<br />
- dc.b $D0,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3F: dc.b $14,$25,$36,$33,$11,$1F,$1F,$1F,$1F,$15,$1C,$18<br />
dc.b $13,$0B,$0D,$08,$09,$0F,$8F,$9F,$0F,$24,$0A,$05,$80<br />
<br />
; short bonus ding<br />
Sound40: dc.w z80_ptr(ssamp3F),$0102<br />
dc.w $8005,z80_ptr(++),$0008<br />
dc.w $8004,z80_ptr(+),$0008<br />
+ dc.b $E1,$03,$80,$02<br />
+ dc.b $EF,$00,$C4,$16,$F2<br />
<br />
; badnik bust<br />
Sound41: dc.w z80_ptr(ssamp41),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0002<br />
+ dc.b $F0,$03,$01,$72,$0B,$EF,$00,$BA,$16,$F2<br />
+ dc.b $F5,$01,$F3,$E7,$B0,$1B,$F2<br />
ssamp41: dc.b $3C,$0F,$03,$01,$01,$1F,$1F,$1F,$1F,$19,$19,$12<br />
dc.b $0E,$05,$00,$12,$0F,$0F,$FF,$7F,$FF,$00,$00,$80,$80<br />
<br />
; warning ding-ding<br />
Sound42: dc.w z80_ptr(ssamp3F),$0101<br />
dc.w $8005,z80_ptr(+),$0C08<br />
+ dc.b $EF,$00,$BA,$08,$BA,$25,$F2<br />
<br />
; special stage ring flash (unused)<br />
Sound43: dc.w z80_ptr(ssamp43),$0102<br />
dc.w $8004,z80_ptr(+),$0C00<br />
dc.w $8005,z80_ptr(++),$0013<br />
+ dc.b $EF,$01,$80,$01,$A2,$08,$EF,$00,$E7,$AD,$26,$F2<br />
+ dc.b $EF,$02,$F0,$06,$01,$03,$FF,$80,$0A<br />
- dc.b $C3<br />
dc.w $06F7,$0005,z80_ptr(-)<br />
dc.b $C3,$17,$F2<br />
ssamp43: dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$1C,$80<br />
dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$2C,$80<br />
dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$13,$13,$81,$88<br />
<br />
; thunk<br />
Sound44: dc.w z80_ptr(ssamp44),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$8A,$22,$F2<br />
ssamp44: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$4F,$2F,$2F,$0D,$04,$07,$80<br />
<br />
; cha-ching<br />
Sound45: dc.w z80_ptr(ssamp45),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$8A,$08,$80,$02,$8A,$08,$F2<br />
+ dc.b $EF,$01,$80,$12,$C6,$55,$F2<br />
+ dc.b $F5,$02,$F3,$E7,$80,$02,$C2,$05,$C4,$04,$C2,$05,$C4,$04,$F2<br />
ssamp45: dc.b $3B,$03,$02,$02,$06,$18,$1A,$1A,$96,$17,$0A,$0E<br />
dc.b $10,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$39,$28,$80<br />
ringsamp: dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$23,$80,$80<br />
<br />
; losing rings (scatter)<br />
Sound46: dc.w z80_ptr(ringsamp),$0102<br />
dc.w $8004,z80_ptr(+),$0005<br />
dc.w $8005,z80_ptr(++),$0008<br />
+ dc.b $EF,$00,$C6,$02,$05,$05,$05,$05,$05,$05,$3A,$F2<br />
+ dc.b $EF,$00,$80,$02,$C4,$02,$05,$15,$02,$05,$32,$F2<br />
<br />
; chain pull chink-chink<br />
Sound47: dc.w z80_ptr(ssamp47),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$BE,$05,$80,$04,$BE,$04,$80,$04,$F2<br />
ssamp47: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; flamethrower<br />
Sound48: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$25,$F2<br />
<br />
; bonus pwoieeew (unused)<br />
Sound49: dc.w z80_ptr(ssamp49),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$33,$18,$B9,$1A,$F2<br />
ssamp49: dc.b $3B,$0A,$05,$31,$02,$5F,$5F,$5F,$5F,$04,$16,$14<br />
dc.b $0C,$00,$00,$04,$00,$1F,$D8,$6F,$FF,$03,$00,$25,$80<br />
<br />
; special stage entry<br />
Sound4A: dc.w z80_ptr(ssamp4A),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$F0,$01,$01,$5B,$02,$CC,$65,$F2<br />
ssamp4A: dc.b $20,$36,$30,$35,$31,$41,$3B,$49,$4B,$09,$09,$06<br />
dc.b $08,$01,$02,$03,$A9,$0F,$0F,$0F,$0F,$29,$23,$27,$80<br />
<br />
; slower smash/crumble<br />
Sound4B: dc.w z80_ptr(smashsamp),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; spring boing<br />
Sound4C: dc.w z80_ptr(ssamp4C),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$5D,$0F,$B0,$0C,$F4<br />
- dc.b $E7,$E6,$02,$BD<br />
dc.w $02F7,$0019,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4C: dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$16,$13,$30,$80<br />
<br />
; selection blip<br />
Sound4D: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $BB,$02,$F2<br />
<br />
; another ring sound (only plays in the left speaker?)<br />
Sound4E: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8004,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$80,$C1,$04,$C4,$05,$C9,$1B,$F2<br />
<br />
; signpost spin sound<br />
Sound4F: dc.w z80_ptr(ssamp4F),$0102<br />
dc.w $8004,z80_ptr(+),$2703<br />
dc.w $8005,z80_ptr(++),$2700<br />
+ dc.b $80,$04<br />
+ dc.b $EF,$00<br />
- dc.b $B4,$05,$E6<br />
dc.w $02F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4F: dc.b $F4,$06,$0F,$04,$0E,$1F,$1F,$1F,$1F,$00,$0B,$00<br />
dc.b $0B,$00,$05,$00,$08,$0F,$FF,$0F,$FF,$0C,$03,$8B,$80<br />
<br />
; mosquito zapper<br />
Sound50: dc.w z80_ptr(ssamp50),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B3,$04,$80,$01<br />
- dc.b $B4,$04,$80<br />
dc.w $01F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
ssamp50: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$06,$34,$10,$87<br />
<br />
<br />
Sound51: dc.w z80_ptr(ssamp51),$0102<br />
dc.w $80C0,z80_ptr(+),$0001<br />
dc.w $8005,z80_ptr(++),$000B<br />
+ dc.b $F5,$02,$F3,$E4,$B0,$04,$85,$02,$F2<br />
+ dc.b $EF,$00,$E8,$04,$A5,$06,$F2<br />
ssamp51: dc.b $3C,$02,$01,$00,$01,$1F,$1F,$1F,$1F,$00,$19,$0E<br />
dc.b $10,$00,$00,$0C,$0F,$0F,$FF,$EF,$FF,$05,$00,$80,$80<br />
<br />
<br />
Sound52: dc.w z80_ptr(ssamp52),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $F0,$01,$01,$2A,$07,$EF,$00<br />
- dc.b $A5,$03<br />
dc.w $E7F7,$0013,z80_ptr(-)<br />
- dc.b $A5,$03,$E7,$E6<br />
dc.w $02F7,$0013,z80_ptr(-)<br />
dc.b $F2<br />
ssamp52: dc.b $28,$21,$21,$21,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$29,$20,$29,$80<br />
<br />
<br />
Sound53: dc.w z80_ptr(ssamp53),$0101<br />
dc.w $8005,z80_ptr(+),$F503<br />
+ dc.b $EF,$00,$F0,$01,$01,$46,$09,$A7,$14,$E7,$14,$E7,$E6,$04<br />
dc.b $14,$E7,$E6,$04,$14,$E7,$E6,$04,$0A,$E7,$E6,$04,$0A,$F2<br />
ssamp53: dc.b $07,$0A,$0C,$0C,$0C,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$2A,$0F,$0F,$80<br />
<br />
; OOZ lid pop sound<br />
Sound54: dc.w z80_ptr(ssamp54),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0006<br />
+ dc.b $EF,$00,$B6,$15,$F2<br />
+ dc.b $F3,$E7,$F5,$04,$C6,$03,$E7,$C5,$E7<br />
dc.b $C4,$E7,$C3,$E7,$C2,$E7,$C1,$E7,$C0,$F2<br />
ssamp54: dc.b $07,$03,$02,$03,$00,$FF,$6F,$6F,$3F,$12,$14,$11<br />
dc.b $0E,$1A,$0A,$03,$0D,$FF,$FF,$FF,$FF,$03,$07,$07,$80<br />
<br />
<br />
Sound55: dc.w z80_ptr(ssamp55),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$AA,$07,$B6,$15,$F2<br />
ssamp55: dc.b $42,$20,$0E,$0F,$0F,$1F,$1F,$1F,$1F,$1F,$1F,$1F<br />
dc.b $1F,$0F,$0E,$0F,$0E,$0F,$0F,$0F,$0F,$2E,$80,$20,$80<br />
<br />
<br />
Sound56: dc.w z80_ptr(ssamp56),$0101<br />
dc.w $8005,z80_ptr(+),$100E<br />
+ dc.b $EF,$00,$F0,$01,$01,$1E,$FF,$8F,$1C,$F4<br />
- dc.b $E7,$9A<br />
dc.w $05F7,$0009,z80_ptr(-)<br />
- dc.b $E7,$9A,$04,$E6,$02,$E7,$9A,$04,$E6<br />
dc.w $02F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp56: dc.b $0D,$06,$00,$00,$E5,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$27,$80,$80,$80<br />
<br />
<br />
Sound57: dc.w z80_ptr(ssamp57),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$CA,$15,$F2<br />
ssamp57: dc.b $04,$09,$70,$00,$30,$1C,$1F,$DF,$1F,$15,$12,$0B<br />
dc.b $0F,$0C,$0D,$00,$0D,$07,$2F,$FA,$FA,$00,$29,$00,$00<br />
<br />
; CNZ bonusy bumper sound<br />
Sound58: dc.w z80_ptr(ssamp58),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$B3,$06,$B3,$15,$F2<br />
ssamp58: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
<br />
; CNZ baaang bumper sound<br />
Sound59: dc.w z80_ptr(ssamp59),$0103<br />
dc.w $8004,z80_ptr(+),$0000<br />
dc.w $8002,z80_ptr(++),$0002<br />
dc.w $8005,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$E1,$0C,$B5,$14,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
+ dc.b $EF,$00,$B6,$14,$F2<br />
ssamp59: dc.b $32,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $0D,$00,$01,$01,$0C,$00,$23,$C3,$F6,$08,$07,$1C,$03<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; CNZ gloop / water droplet sound<br />
Sound5A: dc.w z80_ptr(ssamp5A),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$7F,$F1,$AA,$0A,$F2<br />
ssamp5A: dc.b $47,$03,$02,$02,$04,$5F,$5F,$5F,$5F,$0E,$1A,$11<br />
dc.b $0A,$09,$0A,$0A,$0A,$4F,$3F,$3F,$3F,$7F,$80,$80,$A3<br />
<br />
<br />
Sound5B: dc.w z80_ptr(ssamp5B),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$02,$A5,$01,$E7<br />
- dc.b $01,$E7,$E6<br />
dc.w $02F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5B: dc.b $38,$0F,$0F,$0F,$0F,$1F,$1F,$1F,$0E,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$1F,$00,$00,$00,$80<br />
<br />
<br />
Sound5C: dc.w z80_ptr(ssamp5C),$0102<br />
dc.w $8004,z80_ptr(+),$000E<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$85,$40<br />
- dc.b $E7,$04,$E6<br />
dc.w $04F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$40<br />
- dc.b $E7,$08,$E6<br />
dc.w $01F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5C: dc.b $FA,$12,$01,$01,$01,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$81,$8E,$14,$80<br />
<br />
; chain clink<br />
Sound5D: dc.w z80_ptr(ssamp5D),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$C0,$04,$F2<br />
ssamp5D: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; helicopter<br />
Sound5E: dc.w z80_ptr(ssamp5E),$0101<br />
dc.w $8002,z80_ptr(+),$1405<br />
+ dc.b $EF,$00<br />
- dc.b $95,$02,$95<br />
dc.w $01F7,$0013,z80_ptr(-)<br />
- dc.b $95,$02,$95,$01,$E6<br />
dc.w $01F7,$001B,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5E: dc.b $35,$30,$44,$40,$51,$1F,$1F,$1F,$1F,$10,$00,$13<br />
dc.b $15,$1F,$00,$1F,$1A,$7F,$0F,$7F,$5F,$02,$A8,$80,$80<br />
<br />
<br />
Sound5F: dc.w z80_ptr(ssamp5F),$0103<br />
dc.w $8005,z80_ptr(s5Fs1),$0000<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
s5Fs1 dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$E6,$0A,$80<br />
dc.b $06,$EF,$01,$F0,$01,$01,$11,$FF,$A2,$28<br />
- dc.b $E7,$03,$E6<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs2 dc.b $80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$1D<br />
- dc.b $E7,$07,$EC<br />
dc.w $01F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs3 dc.b $80,$16,$F5,$03<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $FFF7,$0005,z80_ptr(-)<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $01F7,$0007,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5F: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
dc.b $3A,$70,$30,$04,$01,$0F,$14,$19,$16,$08,$0A,$0B<br />
dc.b $05,$03,$03,$03,$05,$1F,$6F,$8F,$5F,$1F,$22,$1F,$80<br />
<br />
; spindash charge<br />
Sound60: dc.w z80_ptr(ssamp60),$0101<br />
dc.w $8005,z80_ptr(+),$FE00<br />
+ dc.b $EF,$00,$F0,$00,$01,$20,$F6,$C4,$16,$E7,$F4,$D0,$18,$E7<br />
- dc.b $04,$E7,$E6<br />
dc.w $03F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp60: dc.b $34,$00,$03,$0C,$09,$9F,$8C,$8F,$95,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$00,$1D,$00,$00<br />
<br />
; rumbling<br />
Sound61: dc.w z80_ptr(ssamp61),$0101<br />
dc.w $8004,z80_ptr(+),$0004<br />
+ dc.b $80,$01,$EF,$00,$F0,$00,$01,$70,$06,$82,$06,$85,$08,$83<br />
dc.b $01,$82,$05,$86,$06,$89,$03,$82,$08,$88,$04,$82,$06,$E6<br />
dc.b $02,$85,$08,$E6,$02,$83,$01,$E6,$02,$82,$05,$E6,$02,$86<br />
dc.b $06,$E6,$02,$89,$03,$E6,$02,$82,$08,$E6,$02,$88,$04,$E6,$02,$F2<br />
ssamp61: dc.b $32,$30,$30,$50,$30,$1F,$0E,$19,$0E,$07,$12,$15<br />
dc.b $09,$0A,$09,$1D,$06,$E8,$03,$0A,$17,$07,$00,$00,$00<br />
<br />
<br />
Sound62: dc.w z80_ptr(ssamp62),$0101<br />
dc.w $8005,z80_ptr(+),$FF00<br />
+ dc.b $EF,$00,$A6,$05,$F0,$01,$01,$E7,$40<br />
- dc.b $C4,$02,$E7,$E6<br />
dc.w $01F7,$0012,z80_ptr(-)<br />
dc.b $F2<br />
ssamp62: dc.b $34,$0C,$10,$73,$0C,$AF,$AC,$FF,$D5,$06,$00,$02<br />
dc.b $01,$02,$0A,$04,$08,$BF,$BF,$BF,$BF,$00,$08,$80,$80<br />
<br />
; CNZ blooing bumper<br />
Sound63: dc.w z80_ptr(ssamp63),$0101<br />
dc.w $8005,z80_ptr(+),$0907<br />
+ dc.b $EF,$00,$F0,$01,$01,$04,$56,$92,$03,$9A,$25,$F2<br />
ssamp63: dc.b $3D,$12,$10,$77,$30,$5F,$5F,$5F,$5F,$0F,$0A,$00<br />
dc.b $01,$0A,$0A,$0D,$0D,$4F,$0F,$0F,$0F,$13,$80,$80,$80<br />
<br />
; HTZ track click sound<br />
Sound64: dc.w z80_ptr(ssamp64),$0101<br />
dc.w $8005,z80_ptr(+),$1100<br />
+ dc.b $EF,$00,$C7,$02,$F2<br />
ssamp64: dc.b $24,$2A,$02,$05,$01,$1A,$1F,$10,$1F,$0F,$1F,$1F<br />
dc.b $1F,$0C,$0D,$11,$11,$0C,$09,$09,$0F,$0E,$04,$80,$80<br />
<br />
; kicking up leaves sound<br />
Sound65: dc.w z80_ptr(ssamp65),$0101<br />
dc.w $80C0,z80_ptr(+),$F800<br />
+ dc.b $F5,$03,$F3,$E7,$CE,$03,$F5,$06,$CE,$04,$EC<br />
dc.b $02,$CE,$02,$F5,$03,$EC,$FE,$CE,$08,$CE,$18,$F2<br />
ssamp65: ; uhm... apparently they forgot to null out the pointer to here.<br />
; luckily, sound 65 doesn't really use its sample<br />
<br />
; leaf splash?<br />
Sound66: dc.w z80_ptr(ssamp66),$0102<br />
dc.w $8005,z80_ptr(++),$EE08<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$F5,$09,$C6,$36,$F2<br />
+ dc.b $EF,$00,$80,$01,$92,$02,$02,$02,$30,$F2<br />
ssamp66: dc.b $32,$33,$17,$34,$13,$0F,$0D,$1B,$17,$00,$04,$02<br />
dc.b $0B,$08,$00,$08,$09,$6F,$5F,$4F,$6F,$05,$00,$00,$80<br />
<br />
<br />
Sound67: dc.w z80_ptr(ssamp67),$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$06,$F3,$E7,$90,$0A,$94,$0A,$98,$0A,$9C<br />
dc.b $0A,$A0,$0A,$A4,$08,$A8,$08,$AC,$08,$B0,$08,$F2<br />
ssamp67: ; another not-really-used sample (like Sound65)<br />
<br />
; door slamming quickly (seems unused)<br />
Sound68: dc.w z80_ptr(ssamp68),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$A5,$06,$F2<br />
ssamp68: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
<br />
Sound69: dc.w z80_ptr(ssamp69),$0102<br />
dc.w $8005,z80_ptr(+),$F400<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$9B,$03,$A8,$06,$9E,$08,$F2<br />
+ dc.b $F5,$04,$F3,$E7,$C6,$03,$C6,$06,$C6,$08,$F2<br />
ssamp69: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; robotic laser burst<br />
Sound6A: dc.w z80_ptr(ssamp6A),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$DF,$14,$E6,$18,$06,$F2<br />
ssamp6A: dc.b $3D,$09,$34,$34,$28,$1F,$16,$16,$16,$00,$00,$00<br />
dc.b $04,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$15,$02,$02,$00<br />
<br />
; scatter<br />
Sound6B: dc.w z80_ptr(ssamp6B),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$81,$04,$80,$0C,$F2<br />
ssamp6B: dc.b $3A,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $07,$00,$01,$01,$03,$00,$23,$C3,$46,$08,$07,$1C,$03<br />
<br />
<br />
Sound6C: dc.w z80_ptr(ssamp6C),$0104<br />
dc.w $8005,z80_ptr(++),$0010<br />
dc.w $8004,z80_ptr(+),$0010<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
+ dc.b $E1,$10<br />
+ dc.b $EF,$01,$F0,$01,$01,$EC,$56,$C0,$24,$F4,$EF,$00,$E6,$F0<br />
- dc.b $BB,$02,$E7,$E6,$02,$E9<br />
dc.w $01F7,$0020,z80_ptr(-)<br />
dc.b $F2<br />
ssamp6C: dc.b $00,$53,$30,$03,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$06,$23,$80<br />
dc.b $3C,$72,$32,$32,$72,$14,$14,$0F,$0F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$02,$02,$08,$08,$35,$14,$00,$00<br />
<br />
; error sound<br />
Sound6D: dc.w z80_ptr(ssamp6D),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$B0,$06,$80,$06,$B0,$18,$F2<br />
ssamp6D: dc.b $38,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$1F,$0C,$17,$00<br />
<br />
; silver sonic buzz saw<br />
Sound6E: dc.w z80_ptr(ssamp6E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$C6,$24,$E7<br />
- dc.b $C6,$04,$E7,$E6<br />
dc.w $04F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F3,$E7,$C7,$44,$F2<br />
ssamp6E: dc.b $33,$00,$10,$00,$31,$1F,$1D,$1E,$0E,$00,$0C,$1D<br />
dc.b $00,$00,$00,$01,$00,$0F,$0F,$0F,$0F,$08,$06,$07,$80<br />
<br />
<br />
Sound6F: dc.w z80_ptr(ssamp6A),$0103<br />
dc.w $8005,z80_ptr(++),$000B<br />
dc.w $8004,z80_ptr(+),$0012<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $E1,$02,$80,$02<br />
+ dc.b $EF,$00,$E6,$0C,$DF,$06,$E7,$E6,$F4,$06,$E7<br />
dc.b $E6,$F4,$12,$E7,$E6,$0C,$06,$E7,$E6,$0C,$06,$F2<br />
+ dc.b $F3,$E7,$C6,$04,$C0,$BA,$B4,$AE,$E6<br />
dc.b $01,$AE,$E6,$01,$AE,$E6,$01,$AE,$F2<br />
<br />
<br />
Sound70: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$C6,$18<br />
- dc.b $E7,$03,$E6<br />
dc.w $01F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to the other bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
; share these symbols externally (WARNING: don't rename, move or remove these labels!)<br />
shared movewZ80CompSize<br />
</asm><br />
<br />
We want to replace it with this optimized code:<br />
<asm><br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
nop<br />
move.w #$100,($A11100).l ; Z80 bus request - Start<br />
move.w #$100,($A11200).l ; Z80 stop reset<br />
lea (DriverData).l,a0<br />
lea ($A00000).l,a1<br />
move.w #DriverDataEnd-DriverData,d0<br />
<br />
DriverLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverLoadLoop<br />
lea (DriverPointers).l,a0<br />
lea ($A01300).l,a1<br />
move.w #DriverPointersEnd-DriverPointers,d0<br />
<br />
DriverPointersLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0, DriverPointersLoadLoop<br />
lea (UniversalVoiceBank).l,a0<br />
lea ($A017D8).l,a1<br />
move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0<br />
<br />
UniversalVoiceBankLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,UniversalVoiceBankLoadLoop<br />
lea (DriverResetData).l,a0<br />
lea ($A01C00).l,a1<br />
move.w #DriverResetDataEnd-DriverResetData,d0<br />
<br />
DriverResetDataLoadLoop:<br />
move.b (a0)+,(a1)+<br />
dbf d0,DriverResetDataLoadLoop<br />
btst #6,($FFFFFFF8).w<br />
beq.s DriverAlreadyInitialized<br />
move.b #1,($A01C02).l<br />
<br />
DriverAlreadyInitialized:<br />
move.w #0,($A11200).l<br />
nop<br />
nop<br />
nop<br />
nop<br />
move.w #$100,($A11200).l ; Z80 start reset<br />
move.w #0,($A11100).l ; Z80 bus request - Stop<br />
rts<br />
; End of function SoundDriverLoad<br />
<br />
<br />
DriverResetData:<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
DriverResetDataEnd:<br />
<br />
align $8000<br />
DriverData:<br />
dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00<br />
dc.b $2A,$15<br />
dc.b $00,$06,$00,$09,$08,$7E<br />
dc.b $23,$66,$6F,$08,$C9<br />
dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00<br />
dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32<br />
dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20<br />
dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21<br />
dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E<br />
Z80_0x006E:<br />
dc.b $C3,$4C,$11<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
Z80_0x0082:<br />
dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00<br />
dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF<br />
dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04<br />
dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD<br />
dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40<br />
dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9<br />
Z80_0x00DC:<br />
Dac_Sample_Selector:<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F))<br />
dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F))<br />
dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) <br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F))<br />
dc.b ((DacBank2>>$F))<br />
dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08<br />
dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32<br />
dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A<br />
dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3<br />
dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04<br />
Z80_0x016E:<br />
dc.b $3A,$3E,$1C<br />
dc.b $FE,$00<br />
dc.b $C2<br />
dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF<br />
dc.b $18,$03<br />
Z80DefaultBankSwitch:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00<br />
Z80_0x0183:<br />
dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD<br />
dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C<br />
dc.b $18,$1A,$3E,$01,$32,$19,$1C<br />
Z80_0x01A7:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00<br />
dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7<br />
dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27<br />
dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03<br />
dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04<br />
dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A<br />
dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04<br />
dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00<br />
dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00<br />
dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23<br />
dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C<br />
dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD<br />
dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB<br />
dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB<br />
dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44<br />
dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E<br />
dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18<br />
dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74<br />
dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13<br />
dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06<br />
dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13<br />
dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72<br />
dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25<br />
dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02<br />
dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD<br />
dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6<br />
dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E<br />
dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8<br />
dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE<br />
dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F<br />
dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8<br />
dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00<br />
dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD<br />
dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD<br />
dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20<br />
dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77<br />
dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD<br />
dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E<br />
dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD<br />
dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04<br />
dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F<br />
dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD<br />
dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F<br />
dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD<br />
dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9<br />
dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF<br />
dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58<br />
dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48<br />
dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5<br />
dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75<br />
dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A<br />
dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06<br />
dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA<br />
dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29<br />
dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09<br />
dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19<br />
dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10<br />
dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29<br />
dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C<br />
dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B<br />
dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C<br />
dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C<br />
dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09<br />
dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24<br />
dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09<br />
dc.b $F1,$F5<br />
Z80_0x05D2:<br />
dc.b $21,$48,$0B<br />
dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B<br />
dc.b $32,$3E,$1C<br />
Z80_0x05E3:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40<br />
dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E<br />
dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85<br />
dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35<br />
dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E<br />
dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD<br />
dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A<br />
dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2<br />
dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80<br />
dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A<br />
dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08<br />
Z80_0x06A8:<br />
dc.b $3E, ((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x06B7:<br />
dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78<br />
dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4<br />
dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31<br />
dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5<br />
dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C<br />
dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46<br />
dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5<br />
dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02<br />
dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0<br />
dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE<br />
dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28<br />
dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B<br />
dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28<br />
dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB<br />
dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C<br />
dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF<br />
dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24<br />
dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E<br />
dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C<br />
dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9<br />
dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2<br />
dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB<br />
dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD<br />
dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD<br />
dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00<br />
dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32<br />
dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3<br />
dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C<br />
dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C<br />
dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C<br />
Z80_0x088A:<br />
dc.b $21,$00,$60<br />
dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77<br />
Z80_0x089C:<br />
dc.b $DD,$21,$40,$1C<br />
dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00<br />
dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30<br />
dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C<br />
Z80_0x08CE:<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x08E0:<br />
dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05<br />
dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD<br />
dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06<br />
dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8<br />
dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01<br />
dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06<br />
dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07<br />
dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32<br />
dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3<br />
dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8<br />
dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10<br />
dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1<br />
dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80<br />
dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00<br />
dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED<br />
dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40<br />
dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06<br />
dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01<br />
dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A<br />
dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C<br />
Z80_0x0A1B:<br />
dc.b $3A,$2D,$1C,$32,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0A33:<br />
dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40<br />
dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6<br />
dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD<br />
dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD<br />
dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E<br />
dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03<br />
dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03<br />
dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02<br />
dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01<br />
dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00<br />
dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00<br />
dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00<br />
dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00<br />
dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00<br />
dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00<br />
dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00<br />
dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03<br />
dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04<br />
BankSelector:<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F))<br />
dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) <br />
dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F))<br />
dc.b ((Bank3>>$0F)),((Bank3>>$0F))<br />
dc.b $CD,$37,$03,$C0,$DD,$5E<br />
dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B<br />
dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD<br />
dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4<br />
dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD<br />
dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21<br />
dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33<br />
dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3<br />
dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F<br />
dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56<br />
dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E<br />
dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32<br />
dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F<br />
dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77<br />
dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C<br />
dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB<br />
dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77<br />
dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C<br />
dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04<br />
dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06<br />
dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00<br />
dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28<br />
dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77<br />
dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD<br />
dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD<br />
dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9<br />
dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C<br />
dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF<br />
dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80<br />
dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD<br />
dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB<br />
dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32<br />
dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C<br />
dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00<br />
dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD<br />
dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9<br />
dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5<br />
Z80_0x0DBF:<br />
dc.b $3A,$3E,$1C<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
Z80_0x0DD4:<br />
dc.b $E1,$CD,$8F,$04,$CD,$B6,$04<br />
Z80_0x0DDB:<br />
dc.b $3E,((SndBank>>$0F))<br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $DD,$7E,$18,$B7,$F2,$FA<br />
dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD<br />
dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18<br />
dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD<br />
dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9<br />
dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13<br />
dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13<br />
dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35<br />
dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9<br />
dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD<br />
dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9<br />
dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13<br />
dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3<br />
dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9<br />
dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06<br />
dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED<br />
dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD<br />
dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34<br />
dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24<br />
dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D<br />
dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE<br />
dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5<br />
dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10<br />
dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED<br />
dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10<br />
dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06<br />
dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18<br />
dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20<br />
dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E<br />
dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03<br />
dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D<br />
dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00<br />
dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0<br />
dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD<br />
dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD<br />
dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE<br />
dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD<br />
dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9<br />
dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD<br />
dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11<br />
dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2<br />
dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00<br />
dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF<br />
dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23<br />
dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07<br />
dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06<br />
dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10<br />
dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10<br />
dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01<br />
dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD<br />
dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40<br />
Z80_0x110D:<br />
dc.b $3E,((SegaPCMBank>>$0F)) <br />
dc.b $CD<br />
dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF <br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00<br />
dc.b $21<br />
dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF<br />
dc.b $11,$2F,$5E<br />
dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE<br />
dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32<br />
dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF<br />
Z80_0x114C:<br />
dc.b $21,$00,$60<br />
dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77<br />
dc.b $AF,$77<br />
dc.b $C3,$82,$00<br />
Z80BankSwitch0:<br />
Z80_0x1170:<br />
dc.b $21,$00,$60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $AF<br />
dc.b $16,$01<br />
dc.b $72<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $77<br />
dc.b $C9<br />
Z80BankSwitch:<br />
dc.b $21, $00, $60<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $1F<br />
dc.b $77<br />
dc.b $C9<br />
DriverDataEnd:<br />
<br />
;------------------------------------------------------------------------------- <br />
; Filler to align pointers at 1300h in Z80 Ram<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0<br />
dc.b 0,0,0,0,0<br />
DriverPointers:<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF<br />
dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF<br />
dc.w $3300<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGNoisePointers:<br />
dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF<br />
<br />
PSGN_1: binclude sound/PSGN1.bin<br />
PSGN_0: binclude sound/PSGN0.bin<br />
PSGN_2: binclude sound/PSGN2.bin<br />
PSGN_3: binclude sound/PSGN3.bin<br />
PSGN_4: binclude sound/PSGN4.bin<br />
PSGN_5: binclude sound/PSGN5.bin<br />
PSGN_6: binclude sound/PSGN6.bin<br />
PSGN_7: binclude sound/PSGN7.bin<br />
<br />
;credit goes to Varion Icaria for finding this index<br />
PSGTonePointers:<br />
dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF<br />
dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF<br />
<br />
PSGT_00: binclude sound/PSGT00.bin<br />
PSGT_01: binclude sound/PSGT01.bin<br />
PSGT_02: binclude sound/PSGT02.bin<br />
PSGT_03: binclude sound/PSGT03.bin<br />
PSGT_04: binclude sound/PSGT04.bin<br />
PSGT_05: binclude sound/PSGT05.bin<br />
PSGT_06: binclude sound/PSGT06.bin<br />
PSGT_07: binclude sound/PSGT07.bin<br />
PSGT_08: binclude sound/PSGT08.bin<br />
PSGT_09: binclude sound/PSGT09.bin<br />
PSGT_0A: binclude sound/PSGT0A.bin<br />
PSGT_0B: binclude sound/PSGT0B.bin<br />
PSGT_0C: binclude sound/PSGT0C.bin<br />
PSGT_0D: binclude sound/PSGT0D.bin<br />
PSGT_0E: binclude sound/PSGT0E.bin<br />
PSGT_0F: binclude sound/PSGT0F.bin<br />
PSGT_10: binclude sound/PSGT10.bin<br />
PSGT_11: binclude sound/PSGT11.bin<br />
PSGT_12: binclude sound/PSGT12.bin<br />
PSGT_13: binclude sound/PSGT13.bin<br />
PSGT_14: binclude sound/PSGT14.bin<br />
PSGT_15: binclude sound/PSGT15.bin<br />
PSGT_16: binclude sound/PSGT16.bin<br />
PSGT_17: binclude sound/PSGT17.bin<br />
PSGT_18: binclude sound/PSGT18.bin<br />
PSGT_19: binclude sound/PSGT19.bin<br />
PSGT_1A: binclude sound/PSGT1A.bin<br />
PSGT_1B: binclude sound/PSGT1B.bin<br />
PSGT_1C: binclude sound/PSGT1C.bin<br />
PSGT_1D: binclude sound/PSGT1D.bin<br />
PSGT_1E: binclude sound/PSGT1E.bin<br />
PSGT_1F: binclude sound/PSGT1F.bin<br />
PSGT_20: binclude sound/PSGT20.bin<br />
PSGT_21: binclude sound/PSGT21.bin<br />
PSGT_22: binclude sound/PSGT22.bin<br />
PSGT_23: binclude sound/PSGT23.bin<br />
PSGT_24: binclude sound/PSGT24.bin<br />
PSGT_25: binclude sound/PSGT25.bin<br />
PSGT_26: binclude sound/PSGT26.bin<br />
<br />
MusicPointers: <br />
rom_ptr_z80 Angel_Island_1_Snd<br />
rom_ptr_z80 Angel_Island_2_Snd<br />
rom_ptr_z80 Hidrocity_1_Snd<br />
rom_ptr_z80 Hidrocity_2_Snd<br />
rom_ptr_z80 Marble_Garden_1_Snd<br />
rom_ptr_z80 Marble_Garden_2_Snd<br />
rom_ptr_z80 Carnival_Night_1_Snd<br />
rom_ptr_z80 Carnival_Night_2_Snd<br />
rom_ptr_z80 Flying_Battery_1_Snd<br />
rom_ptr_z80 Flying_Battery_2_Snd<br />
rom_ptr_z80 Icecap_1_Snd<br />
rom_ptr_z80 Icecap_2_Snd<br />
rom_ptr_z80 Launch_Base_1_Snd<br />
rom_ptr_z80 Launch_Base_2_Snd<br />
rom_ptr_z80 Mushroom_Hill_1_Snd<br />
rom_ptr_z80 Mushroom_Hill_2_Snd<br />
rom_ptr_z80 Sandopolis_1_Snd<br />
rom_ptr_z80 Sandopolis_2_Snd<br />
rom_ptr_z80 Lava_Reef_1_Snd<br />
rom_ptr_z80 Lava_Reef_2_Snd<br />
rom_ptr_z80 Sky_Sanctuary_Snd<br />
rom_ptr_z80 Death_Egg_1_Snd<br />
rom_ptr_z80 Death_Egg_2_Snd<br />
rom_ptr_z80 Mini_Boss_SK_Snd<br />
rom_ptr_z80 Boss_Snd<br />
rom_ptr_z80 The_Doomsday_Snd<br />
rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd<br />
rom_ptr_z80 Special_Stage_Snd<br />
rom_ptr_z80 Slot_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd<br />
rom_ptr_z80 Knuckles_Theme_Snd<br />
rom_ptr_z80 Azure_Lake_Snd<br />
rom_ptr_z80 Balloon_Park_Snd<br />
rom_ptr_z80 Desert_Palace_Snd<br />
rom_ptr_z80 Chrome_Gadget_Snd<br />
rom_ptr_z80 Endless_Mine_Snd<br />
rom_ptr_z80 Title_Screen_Snd<br />
rom_ptr_z80 Credits_Snd<br />
rom_ptr_z80 Time_Game_Over_Snd<br />
rom_ptr_z80 Continue_Snd<br />
rom_ptr_z80 Level_Results_Snd<br />
rom_ptr_z80 Extra_Life_Snd<br />
rom_ptr_z80 Emerald_Snd<br />
rom_ptr_z80 Invencibility_Snd<br />
rom_ptr_z80 Competition_Menu_Snd<br />
rom_ptr_z80 Mini_Boss_Snd<br />
rom_ptr_z80 Menu_Snd<br />
rom_ptr_z80 Final_Boss_Snd<br />
rom_ptr_z80 Underwater_Timming_Snd<br />
rom_ptr_z80 Presented_by_SEGA_Snd<br />
<br />
SndPointers:<br />
rom_ptr_z80 Sfx_33_Snd<br />
rom_ptr_z80 Sfx_34_Snd<br />
rom_ptr_z80 Sfx_35_Snd<br />
rom_ptr_z80 Sfx_36_Snd<br />
rom_ptr_z80 Sfx_37_Snd<br />
rom_ptr_z80 Sfx_38_Snd<br />
rom_ptr_z80 Sfx_39_Snd<br />
rom_ptr_z80 Sfx_3A_Snd<br />
rom_ptr_z80 Sfx_3B_Snd<br />
rom_ptr_z80 Sfx_3C_Snd<br />
rom_ptr_z80 Sfx_3D_Snd<br />
rom_ptr_z80 Sfx_3E_Snd<br />
rom_ptr_z80 Sfx_3F_Snd<br />
rom_ptr_z80 Sfx_40_Snd<br />
rom_ptr_z80 Sfx_41_Snd<br />
rom_ptr_z80 Sfx_42_Snd<br />
rom_ptr_z80 Sfx_43_Snd<br />
rom_ptr_z80 Sfx_44_Snd<br />
rom_ptr_z80 Sfx_45_Snd<br />
rom_ptr_z80 Sfx_46_Snd<br />
rom_ptr_z80 Sfx_47_Snd<br />
rom_ptr_z80 Sfx_48_Snd<br />
rom_ptr_z80 Sfx_49_Snd<br />
rom_ptr_z80 Sfx_4A_Snd<br />
rom_ptr_z80 Sfx_4B_Snd<br />
rom_ptr_z80 Sfx_4C_Snd<br />
rom_ptr_z80 Sfx_4D_Snd<br />
rom_ptr_z80 Sfx_4E_Snd<br />
rom_ptr_z80 Sfx_4F_Snd<br />
rom_ptr_z80 Sfx_50_Snd<br />
rom_ptr_z80 Sfx_51_Snd<br />
rom_ptr_z80 Sfx_52_Snd<br />
rom_ptr_z80 Sfx_53_Snd<br />
rom_ptr_z80 Sfx_54_Snd<br />
rom_ptr_z80 Sfx_55_Snd<br />
rom_ptr_z80 Sfx_56_Snd<br />
rom_ptr_z80 Sfx_57_Snd<br />
rom_ptr_z80 Sfx_58_Snd<br />
rom_ptr_z80 Sfx_59_Snd<br />
rom_ptr_z80 Sfx_5A_Snd<br />
rom_ptr_z80 Sfx_5B_Snd<br />
rom_ptr_z80 Sfx_5C_Snd<br />
rom_ptr_z80 Sfx_5D_Snd<br />
rom_ptr_z80 Sfx_5E_Snd<br />
rom_ptr_z80 Sfx_5F_Snd<br />
rom_ptr_z80 Sfx_60_Snd<br />
rom_ptr_z80 Sfx_61_Snd<br />
rom_ptr_z80 Sfx_62_Snd<br />
rom_ptr_z80 Sfx_63_Snd<br />
rom_ptr_z80 Sfx_64_Snd<br />
rom_ptr_z80 Sfx_65_Snd<br />
rom_ptr_z80 Sfx_66_Snd<br />
rom_ptr_z80 Sfx_67_Snd<br />
rom_ptr_z80 Sfx_68_Snd<br />
rom_ptr_z80 Sfx_69_Snd<br />
rom_ptr_z80 Sfx_6A_Snd<br />
rom_ptr_z80 Sfx_6B_Snd<br />
rom_ptr_z80 Sfx_6C_Snd<br />
rom_ptr_z80 Sfx_6D_Snd<br />
rom_ptr_z80 Sfx_6E_Snd<br />
rom_ptr_z80 Sfx_6F_Snd<br />
rom_ptr_z80 Sfx_70_Snd<br />
rom_ptr_z80 Sfx_71_Snd<br />
rom_ptr_z80 Sfx_72_Snd<br />
rom_ptr_z80 Sfx_73_Snd<br />
rom_ptr_z80 Sfx_74_Snd<br />
rom_ptr_z80 Sfx_75_Snd<br />
rom_ptr_z80 Sfx_76_Snd<br />
rom_ptr_z80 Sfx_77_Snd<br />
rom_ptr_z80 Sfx_78_Snd<br />
rom_ptr_z80 Sfx_79_Snd<br />
rom_ptr_z80 Sfx_7A_Snd<br />
rom_ptr_z80 Sfx_7B_Snd<br />
rom_ptr_z80 Sfx_7C_Snd<br />
rom_ptr_z80 Sfx_7D_Snd<br />
rom_ptr_z80 Sfx_7E_Snd<br />
rom_ptr_z80 Sfx_7F_Snd<br />
rom_ptr_z80 Sfx_80_Snd<br />
rom_ptr_z80 Sfx_81_Snd<br />
rom_ptr_z80 Sfx_82_Snd<br />
rom_ptr_z80 Sfx_83_Snd<br />
rom_ptr_z80 Sfx_84_Snd<br />
rom_ptr_z80 Sfx_85_Snd<br />
rom_ptr_z80 Sfx_86_Snd<br />
rom_ptr_z80 Sfx_87_Snd<br />
rom_ptr_z80 Sfx_88_Snd<br />
rom_ptr_z80 Sfx_89_Snd<br />
rom_ptr_z80 Sfx_8A_Snd<br />
rom_ptr_z80 Sfx_8B_Snd<br />
rom_ptr_z80 Sfx_8C_Snd<br />
rom_ptr_z80 Sfx_8D_Snd<br />
rom_ptr_z80 Sfx_8E_Snd<br />
rom_ptr_z80 Sfx_8F_Snd<br />
rom_ptr_z80 Sfx_90_Snd<br />
rom_ptr_z80 Sfx_91_Snd<br />
rom_ptr_z80 Sfx_92_Snd<br />
rom_ptr_z80 Sfx_93_Snd<br />
rom_ptr_z80 Sfx_94_Snd<br />
rom_ptr_z80 Sfx_95_Snd<br />
rom_ptr_z80 Sfx_96_Snd<br />
rom_ptr_z80 Sfx_97_Snd<br />
rom_ptr_z80 Sfx_98_Snd<br />
rom_ptr_z80 Sfx_99_Snd<br />
rom_ptr_z80 Sfx_9A_Snd<br />
rom_ptr_z80 Sfx_9B_Snd<br />
rom_ptr_z80 Sfx_9C_Snd<br />
rom_ptr_z80 Sfx_9D_Snd<br />
rom_ptr_z80 Sfx_9E_Snd<br />
rom_ptr_z80 Sfx_9F_Snd<br />
rom_ptr_z80 Sfx_A0_Snd<br />
rom_ptr_z80 Sfx_A1_Snd<br />
rom_ptr_z80 Sfx_A2_Snd<br />
rom_ptr_z80 Sfx_A3_Snd<br />
rom_ptr_z80 Sfx_A4_Snd<br />
rom_ptr_z80 Sfx_A5_Snd<br />
rom_ptr_z80 Sfx_A6_Snd<br />
rom_ptr_z80 Sfx_A7_Snd<br />
rom_ptr_z80 Sfx_A8_Snd<br />
rom_ptr_z80 Sfx_A9_Snd<br />
rom_ptr_z80 Sfx_AA_Snd<br />
rom_ptr_z80 Sfx_AB_Snd<br />
rom_ptr_z80 Sfx_AC_Snd<br />
rom_ptr_z80 Sfx_AD_Snd<br />
rom_ptr_z80 Sfx_AE_Snd<br />
rom_ptr_z80 Sfx_AF_Snd<br />
rom_ptr_z80 Sfx_B0_Snd<br />
rom_ptr_z80 Sfx_B1_Snd<br />
rom_ptr_z80 Sfx_B2_Snd<br />
rom_ptr_z80 Sfx_B3_Snd<br />
rom_ptr_z80 Sfx_B4_Snd<br />
rom_ptr_z80 Sfx_B5_Snd<br />
rom_ptr_z80 Sfx_B6_Snd<br />
rom_ptr_z80 Sfx_B7_Snd<br />
rom_ptr_z80 Sfx_B8_Snd<br />
rom_ptr_z80 Sfx_B9_Snd<br />
rom_ptr_z80 Sfx_BA_Snd<br />
rom_ptr_z80 Sfx_BB_Snd<br />
rom_ptr_z80 Sfx_BC_Snd<br />
rom_ptr_z80 Sfx_BD_Snd<br />
rom_ptr_z80 Sfx_BE_Snd<br />
rom_ptr_z80 Sfx_BF_Snd<br />
rom_ptr_z80 Sfx_C0_Snd<br />
rom_ptr_z80 Sfx_C1_Snd<br />
rom_ptr_z80 Sfx_C2_Snd<br />
rom_ptr_z80 Sfx_C3_Snd<br />
rom_ptr_z80 Sfx_C4_Snd<br />
rom_ptr_z80 Sfx_C5_Snd<br />
rom_ptr_z80 Sfx_C6_Snd<br />
rom_ptr_z80 Sfx_C7_Snd<br />
rom_ptr_z80 Sfx_C8_Snd<br />
rom_ptr_z80 Sfx_C9_Snd<br />
rom_ptr_z80 Sfx_CA_Snd<br />
rom_ptr_z80 Sfx_CB_Snd<br />
rom_ptr_z80 Sfx_CC_Snd<br />
rom_ptr_z80 Sfx_CD_Snd<br />
rom_ptr_z80 Sfx_CE_Snd<br />
rom_ptr_z80 Sfx_CF_Snd<br />
rom_ptr_z80 Sfx_D0_Snd<br />
rom_ptr_z80 Sfx_D1_Snd<br />
rom_ptr_z80 Sfx_D2_Snd<br />
rom_ptr_z80 Sfx_D3_Snd<br />
rom_ptr_z80 Sfx_D4_Snd<br />
rom_ptr_z80 Sfx_D5_Snd<br />
rom_ptr_z80 Sfx_D6_Snd<br />
rom_ptr_z80 Sfx_D7_Snd<br />
rom_ptr_z80 Sfx_D8_Snd<br />
rom_ptr_z80 Sfx_D9_Snd<br />
rom_ptr_z80 Sfx_DA_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
rom_ptr_z80 Sfx_DB_Snd<br />
DriverPointersEnd:<br />
<br />
UniversalVoiceBank:<br />
binclude "sound/uvb.bin"<br />
UniversalVoiceBankEnd:<br />
<br />
align $8000<br />
dacBank0Start := *<br />
DacBank0:<br />
binclude "sound/dac_0.bin"<br />
if * > dacBank0Start + $8000<br />
fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
DacBank1:<br />
binclude "sound/dac_1.bin"<br />
align $8000<br />
if * > dacBank1Start + $8000<br />
fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
DacBank2:<br />
binclude "sound/dac_2.bin"<br />
if * > dacBank2Start + $8000<br />
fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."<br />
else<br />
;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank0Start := *<br />
Bank0:<br />
binclude "sound/filler.bin"<br />
Mini_Boss_Snd:<br />
binclude "sound/miniboss.snd"<br />
Final_Boss_Snd:<br />
binclude "sound/f_boss.snd"<br />
if * > bank0Start + $8000<br />
fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."<br />
else<br />
;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank1Start := *<br />
Bank1:<br />
Angel_Island_1_Snd:<br />
binclude "sound/aiz1.snd"<br />
Angel_Island_2_Snd:<br />
binclude "sound/aiz2.snd"<br />
Hidrocity_1_Snd:<br />
binclude "sound/hcz1.snd"<br />
Hidrocity_2_Snd:<br />
binclude "sound/hcz2.snd"<br />
Marble_Garden_1_Snd:<br />
binclude "sound/mgz1.snd"<br />
Marble_Garden_2_Snd:<br />
binclude "sound/mgz2.snd"<br />
Carnival_Night_2_Snd:<br />
binclude "sound/cnz2.snd"<br />
Carnival_Night_1_Snd:<br />
binclude "sound/cnz1.snd"<br />
Flying_Battery_1_Snd:<br />
binclude "sound/fbz1.snd"<br />
Flying_Battery_2_Snd:<br />
binclude "sound/fbz2.snd"<br />
The_Doomsday_Snd:<br />
binclude "sound/tdz.snd"<br />
if * > bank1Start + $8000<br />
fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."<br />
else<br />
;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank2Start := *<br />
Bank2:<br />
Icecap_2_Snd:<br />
binclude "sound/iz2.snd"<br />
Icecap_1_Snd:<br />
binclude "sound/iz1.snd"<br />
Launch_Base_2_Snd:<br />
binclude "sound/lbz2.snd"<br />
Launch_Base_1_Snd:<br />
binclude "sound/lbz1.snd"<br />
Mushroom_Hill_1_Snd:<br />
binclude "sound/mhz1.snd"<br />
Mushroom_Hill_2_Snd:<br />
binclude "sound/mhz2.snd"<br />
Sandopolis_1_Snd:<br />
binclude "sound/sz1.snd"<br />
Sandopolis_2_Snd:<br />
binclude "sound/sz2.snd"<br />
Lava_Reef_1_Snd:<br />
binclude "sound/lrz1.snd"<br />
Lava_Reef_2_Snd:<br />
binclude "sound/lrz2.snd"<br />
Sky_Sanctuary_Snd:<br />
binclude "sound/scz.snd"<br />
Death_Egg_1_Snd:<br />
binclude "sound/dez1.snd"<br />
Death_Egg_2_Snd:<br />
binclude "sound/dez2.snd"<br />
Mini_Boss_SK_Snd:<br />
binclude "sound/mb_sk.snd"<br />
Boss_Snd:<br />
binclude "sound/boss.snd"<br />
Glowing_Spheres_Bonus_Stage_snd:<br />
binclude "sound/gs_bs.snd"<br />
Special_Stage_Snd:<br />
binclude "sound/ss.snd"<br />
Level_Results_Snd:<br />
binclude "sound/lr.snd"<br />
Menu_Snd: <br />
binclude "sound/menu.snd"<br />
if * > bank2Start + $8000<br />
fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."<br />
else<br />
;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
bank3Start := *<br />
Bank3:<br />
Slot_Machine_Bonus_Stage_snd:<br />
binclude "sound/sm_bs.snd"<br />
Gum_Ball_Machine_Bonus_Stage_snd:<br />
binclude "sound/gbm_bs.snd"<br />
Knuckles_Theme_Snd:<br />
binclude "sound/kte.snd"<br />
Azure_Lake_Snd:<br />
binclude "sound/alz.snd"<br />
Balloon_Park_Snd:<br />
binclude "sound/bpz.snd"<br />
Desert_Palace_Snd:<br />
binclude "sound/dpz.snd"<br />
Chrome_Gadget_Snd:<br />
binclude "sound/cgz.snd"<br />
Endless_Mine_Snd:<br />
binclude "sound/emz.snd"<br />
Title_Screen_Snd:<br />
binclude "sound/ts.snd"<br />
Credits_Snd: <br />
binclude "sound/credits.snd"<br />
Time_Game_Over_Snd:<br />
binclude "sound/tgovr.snd"<br />
Continue_Snd:<br />
binclude "sound/continue.snd"<br />
Extra_Life_Snd:<br />
binclude "sound/1up.snd"<br />
Emerald_Snd:<br />
binclude "sound/emerald.snd"<br />
Invencibility_Snd:<br />
binclude "sound/invcblty.snd"<br />
Competition_Menu_Snd:<br />
binclude "sound/2p_menu.snd" <br />
Underwater_Timming_Snd:<br />
binclude "sound/panic.snd"<br />
Presented_by_SEGA_Snd:<br />
binclude "sound/p_sega.snd"<br />
if * > bank3Start + $8000<br />
fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."<br />
else<br />
;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."<br />
endif<br />
<br />
align $8000<br />
soundBankStart := *<br />
SndBank:<br />
SegaPCMBank:<br />
SegaSnd:<br />
binclude "sound/sega.snd"<br />
Sfx_33_Snd:<br />
binclude "sound/sfx_34.snd"<br />
Sfx_34_Snd:<br />
binclude "sound/sfx_35.snd"<br />
Sfx_35_Snd:<br />
binclude "sound/sfx_36.snd"<br />
Sfx_36_Snd:<br />
binclude "sound/sfx_37.snd"<br />
Sfx_37_Snd:<br />
binclude "sound/sfx_38.snd"<br />
Sfx_38_Snd:<br />
binclude "sound/sfx_39.snd"<br />
Sfx_39_Snd:<br />
binclude "sound/sfx_3A.snd"<br />
Sfx_3A_Snd:<br />
binclude "sound/sfx_3B.snd"<br />
Sfx_3B_Snd:<br />
binclude "sound/sfx_3C.snd"<br />
Sfx_3C_Snd:<br />
binclude "sound/sfx_3D.snd"<br />
Sfx_3D_Snd:<br />
binclude "sound/sfx_3E.snd"<br />
Sfx_3E_Snd:<br />
binclude "sound/sfx_3F.snd"<br />
Sfx_3F_Snd:<br />
binclude "sound/sfx_40.snd"<br />
Sfx_40_Snd:<br />
binclude "sound/sfx_41.snd"<br />
Sfx_41_Snd:<br />
binclude "sound/sfx_42.snd"<br />
Sfx_42_Snd:<br />
binclude "sound/sfx_43.snd"<br />
Sfx_43_Snd:<br />
binclude "sound/sfx_44.snd"<br />
Sfx_44_Snd:<br />
binclude "sound/sfx_45.snd"<br />
Sfx_45_Snd:<br />
binclude "sound/sfx_46.snd"<br />
Sfx_46_Snd:<br />
binclude "sound/sfx_47.snd"<br />
Sfx_47_Snd:<br />
binclude "sound/sfx_48.snd"<br />
Sfx_48_Snd:<br />
binclude "sound/sfx_49.snd"<br />
Sfx_49_Snd:<br />
binclude "sound/sfx_4A.snd"<br />
Sfx_4A_Snd:<br />
binclude "sound/sfx_4B.snd"<br />
Sfx_4B_Snd:<br />
binclude "sound/sfx_4C.snd"<br />
Sfx_4C_Snd:<br />
binclude "sound/sfx_4D.snd"<br />
Sfx_4D_Snd:<br />
binclude "sound/sfx_4E.snd"<br />
Sfx_4E_Snd:<br />
binclude "sound/sfx_4F.snd"<br />
Sfx_4F_Snd:<br />
binclude "sound/sfx_50.snd"<br />
Sfx_50_Snd:<br />
binclude "sound/sfx_51.snd"<br />
Sfx_51_Snd:<br />
binclude "sound/sfx_52.snd"<br />
Sfx_52_Snd:<br />
binclude "sound/sfx_53.snd"<br />
Sfx_53_Snd:<br />
binclude "sound/sfx_54.snd"<br />
Sfx_54_Snd:<br />
binclude "sound/sfx_55.snd"<br />
Sfx_55_Snd:<br />
binclude "sound/sfx_56.snd"<br />
Sfx_56_Snd:<br />
binclude "sound/sfx_57.snd"<br />
Sfx_57_Snd:<br />
binclude "sound/sfx_58.snd"<br />
Sfx_58_Snd:<br />
binclude "sound/sfx_59.snd"<br />
Sfx_59_Snd:<br />
binclude "sound/sfx_5A.snd"<br />
Sfx_5A_Snd:<br />
binclude "sound/sfx_5B.snd"<br />
Sfx_5B_Snd:<br />
binclude "sound/sfx_5C.snd"<br />
Sfx_5C_Snd:<br />
binclude "sound/sfx_5D.snd"<br />
Sfx_5D_Snd:<br />
binclude "sound/sfx_5E.snd"<br />
Sfx_5E_Snd:<br />
binclude "sound/sfx_5F.snd"<br />
Sfx_5F_Snd:<br />
binclude "sound/sfx_60.snd"<br />
Sfx_60_Snd:<br />
binclude "sound/sfx_61.snd"<br />
Sfx_61_Snd:<br />
binclude "sound/sfx_62.snd"<br />
Sfx_62_Snd:<br />
binclude "sound/sfx_63.snd"<br />
Sfx_63_Snd:<br />
binclude "sound/sfx_64.snd"<br />
Sfx_64_Snd:<br />
binclude "sound/sfx_65.snd"<br />
Sfx_65_Snd:<br />
binclude "sound/sfx_66.snd"<br />
Sfx_66_Snd:<br />
binclude "sound/sfx_67.snd"<br />
Sfx_67_Snd:<br />
binclude "sound/sfx_68.snd"<br />
Sfx_68_Snd:<br />
binclude "sound/sfx_69.snd"<br />
Sfx_69_Snd:<br />
binclude "sound/sfx_6A.snd"<br />
Sfx_6A_Snd:<br />
binclude "sound/sfx_6B.snd"<br />
Sfx_6B_Snd:<br />
binclude "sound/sfx_6C.snd"<br />
Sfx_6C_Snd:<br />
binclude "sound/sfx_6D.snd"<br />
Sfx_6D_Snd:<br />
binclude "sound/sfx_6E.snd"<br />
Sfx_6E_Snd:<br />
binclude "sound/sfx_6F.snd"<br />
Sfx_6F_Snd:<br />
binclude "sound/sfx_70.snd"<br />
Sfx_70_Snd:<br />
binclude "sound/sfx_71.snd"<br />
Sfx_71_Snd:<br />
binclude "sound/sfx_72.snd"<br />
Sfx_72_Snd:<br />
binclude "sound/sfx_73.snd"<br />
Sfx_73_Snd:<br />
binclude "sound/sfx_74.snd"<br />
Sfx_74_Snd:<br />
binclude "sound/sfx_75.snd"<br />
Sfx_75_Snd:<br />
binclude "sound/sfx_76.snd"<br />
Sfx_76_Snd:<br />
binclude "sound/sfx_77.snd"<br />
Sfx_77_Snd:<br />
binclude "sound/sfx_78.snd"<br />
Sfx_78_Snd:<br />
binclude "sound/sfx_79.snd"<br />
Sfx_79_Snd:<br />
binclude "sound/sfx_7A.snd"<br />
Sfx_7A_Snd:<br />
binclude "sound/sfx_7B.snd"<br />
Sfx_7B_Snd:<br />
binclude "sound/sfx_7C.snd"<br />
Sfx_7C_Snd:<br />
binclude "sound/sfx_7D.snd"<br />
Sfx_7D_Snd:<br />
binclude "sound/sfx_7E.snd"<br />
Sfx_7E_Snd:<br />
binclude "sound/sfx_7F.snd"<br />
Sfx_7F_Snd:<br />
binclude "sound/sfx_80.snd"<br />
Sfx_80_Snd:<br />
binclude "sound/sfx_81.snd"<br />
Sfx_81_Snd:<br />
binclude "sound/sfx_82.snd"<br />
Sfx_82_Snd:<br />
binclude "sound/sfx_83.snd"<br />
Sfx_83_Snd:<br />
binclude "sound/sfx_84.snd"<br />
Sfx_84_Snd:<br />
binclude "sound/sfx_85.snd"<br />
Sfx_85_Snd:<br />
binclude "sound/sfx_86.snd"<br />
Sfx_86_Snd:<br />
binclude "sound/sfx_87.snd"<br />
Sfx_87_Snd:<br />
binclude "sound/sfx_88.snd"<br />
Sfx_88_Snd:<br />
binclude "sound/sfx_89.snd"<br />
Sfx_89_Snd:<br />
binclude "sound/sfx_8A.snd"<br />
Sfx_8A_Snd:<br />
binclude "sound/sfx_8B.snd"<br />
Sfx_8B_Snd:<br />
binclude "sound/sfx_8C.snd"<br />
Sfx_8C_Snd:<br />
binclude "sound/sfx_8D.snd"<br />
Sfx_8D_Snd:<br />
binclude "sound/sfx_8E.snd"<br />
Sfx_8E_Snd:<br />
binclude "sound/sfx_8F.snd"<br />
Sfx_8F_Snd:<br />
binclude "sound/sfx_90.snd"<br />
Sfx_90_Snd:<br />
binclude "sound/sfx_91.snd"<br />
Sfx_91_Snd:<br />
binclude "sound/sfx_92.snd"<br />
Sfx_92_Snd:<br />
binclude "sound/sfx_93.snd"<br />
Sfx_93_Snd:<br />
binclude "sound/sfx_94.snd"<br />
Sfx_94_Snd:<br />
binclude "sound/sfx_95.snd"<br />
Sfx_95_Snd:<br />
binclude "sound/sfx_96.snd"<br />
Sfx_96_Snd:<br />
binclude "sound/sfx_97.snd"<br />
Sfx_97_Snd:<br />
binclude "sound/sfx_98.snd"<br />
Sfx_98_Snd:<br />
binclude "sound/sfx_99.snd"<br />
Sfx_99_Snd:<br />
binclude "sound/sfx_9A.snd"<br />
Sfx_9A_Snd:<br />
binclude "sound/sfx_9B.snd"<br />
Sfx_9B_Snd:<br />
binclude "sound/sfx_9C.snd"<br />
Sfx_9C_Snd:<br />
binclude "sound/sfx_9D.snd"<br />
Sfx_9D_Snd:<br />
binclude "sound/sfx_9E.snd"<br />
Sfx_9E_Snd:<br />
binclude "sound/sfx_9F.snd"<br />
Sfx_9F_Snd:<br />
binclude "sound/sfx_A0.snd"<br />
Sfx_A0_Snd:<br />
binclude "sound/sfx_A1.snd"<br />
Sfx_A1_Snd:<br />
binclude "sound/sfx_A2.snd"<br />
Sfx_A2_Snd:<br />
binclude "sound/sfx_A3.snd"<br />
Sfx_A3_Snd:<br />
binclude "sound/sfx_A4.snd"<br />
Sfx_A4_Snd:<br />
binclude "sound/sfx_A5.snd"<br />
Sfx_A5_Snd:<br />
binclude "sound/sfx_A6.snd"<br />
Sfx_A6_Snd:<br />
binclude "sound/sfx_A7.snd"<br />
Sfx_A7_Snd:<br />
binclude "sound/sfx_A8.snd"<br />
Sfx_A8_Snd:<br />
binclude "sound/sfx_A9.snd"<br />
Sfx_A9_Snd:<br />
binclude "sound/sfx_AA.snd"<br />
Sfx_AA_Snd:<br />
binclude "sound/sfx_AB.snd"<br />
Sfx_AB_Snd:<br />
binclude "sound/sfx_AC.snd"<br />
Sfx_AC_Snd:<br />
binclude "sound/sfx_AD.snd"<br />
Sfx_AD_Snd:<br />
binclude "sound/sfx_AE.snd"<br />
Sfx_AE_Snd:<br />
binclude "sound/sfx_AF.snd"<br />
Sfx_AF_Snd:<br />
binclude "sound/sfx_B0.snd"<br />
Sfx_B0_Snd:<br />
binclude "sound/sfx_B1.snd"<br />
Sfx_B1_Snd:<br />
binclude "sound/sfx_B2.snd"<br />
Sfx_B2_Snd:<br />
binclude "sound/sfx_B3.snd"<br />
Sfx_B3_Snd:<br />
binclude "sound/sfx_B4.snd"<br />
Sfx_B4_Snd:<br />
binclude "sound/sfx_B5.snd"<br />
Sfx_B5_Snd:<br />
binclude "sound/sfx_B6.snd"<br />
Sfx_B6_Snd:<br />
binclude "sound/sfx_B7.snd"<br />
Sfx_B7_Snd:<br />
binclude "sound/sfx_B8.snd"<br />
Sfx_B8_Snd:<br />
binclude "sound/sfx_B9.snd"<br />
Sfx_B9_Snd:<br />
binclude "sound/sfx_BA.snd"<br />
Sfx_BA_Snd:<br />
binclude "sound/sfx_BB.snd"<br />
Sfx_BB_Snd:<br />
binclude "sound/sfx_BC.snd"<br />
Sfx_BC_Snd:<br />
binclude "sound/sfx_BD.snd"<br />
Sfx_BD_Snd:<br />
binclude "sound/sfx_BE.snd"<br />
Sfx_BE_Snd:<br />
binclude "sound/sfx_BF.snd"<br />
Sfx_BF_Snd:<br />
binclude "sound/sfx_C0.snd"<br />
Sfx_C0_Snd:<br />
binclude "sound/sfx_C1.snd"<br />
Sfx_C1_Snd:<br />
binclude "sound/sfx_C2.snd"<br />
Sfx_C2_Snd:<br />
binclude "sound/sfx_C3.snd"<br />
Sfx_C3_Snd:<br />
binclude "sound/sfx_C4.snd"<br />
Sfx_C4_Snd:<br />
binclude "sound/sfx_C5.snd"<br />
Sfx_C5_Snd:<br />
binclude "sound/sfx_C6.snd"<br />
Sfx_C6_Snd:<br />
binclude "sound/sfx_C7.snd"<br />
Sfx_C7_Snd:<br />
binclude "sound/sfx_C8.snd"<br />
Sfx_C8_Snd:<br />
binclude "sound/sfx_C9.snd"<br />
Sfx_C9_Snd:<br />
binclude "sound/sfx_CA.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CB.snd"<br />
Sfx_CA_Snd:<br />
binclude "sound/sfx_CC.snd"<br />
Sfx_CB_Snd:<br />
binclude "sound/sfx_CD.snd"<br />
Sfx_CD_Snd:<br />
binclude "sound/sfx_CE.snd"<br />
Sfx_CE_Snd:<br />
binclude "sound/sfx_CF.snd"<br />
Sfx_CF_Snd:<br />
binclude "sound/sfx_D0.snd"<br />
Sfx_D0_Snd:<br />
binclude "sound/sfx_D1.snd"<br />
Sfx_D1_Snd:<br />
binclude "sound/sfx_D2.snd"<br />
Sfx_D2_Snd:<br />
binclude "sound/sfx_D3.snd"<br />
Sfx_D3_Snd:<br />
binclude "sound/sfx_D4.snd"<br />
Sfx_D4_Snd:<br />
binclude "sound/sfx_D5.snd"<br />
Sfx_D5_Snd:<br />
binclude "sound/sfx_D6.snd"<br />
Sfx_D6_Snd:<br />
binclude "sound/sfx_D7.snd"<br />
Sfx_D7_Snd:<br />
binclude "sound/sfx_D8.snd"<br />
Sfx_D8_Snd:<br />
binclude "sound/sfx_D9.snd"<br />
Sfx_D9_Snd:<br />
binclude "sound/sfx_DA.snd"<br />
Sfx_DA_Snd:<br />
binclude "sound/sfx_DB.snd"<br />
Sfx_DB_Snd:<br />
binclude "sound/sfx_DC.snd"<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
</asm></div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208726
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-24T21:03:30Z
<p>Kram1024: /* Upgrading the Load Driver Routine */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==<br />
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><br />
; ---------------------------------------------------------------------------<br />
; Subroutine to load the sound driver<br />
; ---------------------------------------------------------------------------<br />
; sub_EC000:<br />
SoundDriverLoad:<br />
move sr,-(sp)<br />
movem.l d0-a6,-(sp)<br />
move #$2700,sr<br />
lea (Z80_Bus_Request).l,a3<br />
lea (Z80_Reset).l,a2<br />
moveq #0,d2<br />
move.w #$100,d1<br />
move.w d1,(a3) ; get Z80 bus<br />
move.w d1,(a2) ; release Z80 reset (was held high by console on startup)<br />
- btst d2,(a3)<br />
bne.s - ; wait until the 68000 has the bus<br />
jsr DecompressSoundDriver(pc)<br />
btst #0,(VDP_control_port+1).l ; check video mode<br />
sne (Z80_RAM+zPalModeByte).l ; set if PAL<br />
move.w d2,(a2) ; hold Z80 reset<br />
move.w d2,(a3) ; release Z80 bus<br />
moveq #$E6,d0<br />
- dbf d0,- ; wait for 2,314 cycles<br />
move.w d1,(a2) ; release Z80 reset<br />
movem.l (sp)+,d0-a6<br />
move (sp)+,sr<br />
rts<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
; slightly modified Saxman decompression of the sound driver<br />
; a4 == $A00000 (start of Z80 RAM)<br />
; a5 == current position in Z80 RAM?<br />
; a6 == current position in compressed sound driver?<br />
; d0 == data to decompress? (byte)<br />
; d4 == ???<br />
; d5 == ???<br />
; d6 == ???<br />
; d7 == bytes left to decompress<br />
; loc_EC04A:<br />
DecompressSoundDriver:<br />
lea Snd_Driver(pc),a6<br />
; WARNING: the build script needs editing if you rename this label<br />
movewZ80CompSize: move.w #Snd_Driver_End-Snd_Driver,d7 ; patched (by fixpointer.exe) after compression since the exact size can't be known beforehand<br />
moveq #0,d6<br />
lea (Z80_RAM).l,a5<br />
moveq #0,d5<br />
lea (Z80_RAM).l,a4<br />
<br />
loc_EC062:<br />
lsr.w #1,d6<br />
btst #8,d6<br />
bne.s +<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d6<br />
ori.w #$FF00,d6<br />
+<br />
btst #0,d6<br />
beq.s loc_EC086<br />
jsr sub_EC0DE(pc)<br />
move.b d0,(a5)+<br />
addq.w #1,d5<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC086:<br />
jsr sub_EC0DE(pc)<br />
moveq #0,d4<br />
move.b d0,d4<br />
jsr sub_EC0DE(pc)<br />
move.b d0,d3<br />
andi.w #$F,d3<br />
addq.w #2,d3<br />
andi.w #$F0,d0<br />
lsl.w #4,d0<br />
add.w d0,d4<br />
addi.w #$12,d4<br />
andi.w #$FFF,d4<br />
move.w d5,d0<br />
andi.w #$F000,d0<br />
add.w d0,d4<br />
cmp.w d4,d5<br />
bhs.s loc_EC0CC<br />
subi.w #$1000,d4<br />
bcc.s loc_EC0CC<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b #0,(a5)+<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_EC0CC:<br />
add.w d3,d5<br />
addq.w #1,d5<br />
<br />
- move.b (a4,d4.w),(a5)+<br />
addq.w #1,d4<br />
dbf d3,-<br />
<br />
bra.w loc_EC062<br />
; End of function DecompressSoundDriver<br />
<br />
<br />
; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||<br />
<br />
<br />
sub_EC0DE:<br />
move.b (a6)+,d0<br />
subq.w #1,d7<br />
bne.s +<br />
addq.w #4,sp<br />
+<br />
rts<br />
; End of function sub_EC0DE<br />
<br />
; ===========================================================================<br />
; ---------------------------------------------------------------------------<br />
; S2 sound driver (Sound driver compression (slightly modified Saxman))<br />
; ---------------------------------------------------------------------------<br />
; loc_EC0E8:<br />
Snd_Driver:<br />
save<br />
include "s2.sounddriver.asm" ; CPU Z80<br />
restore<br />
padding off<br />
!org (Snd_Driver+Size_of_Snd_driver_guess) ; don't worry; I know what I'm doing<br />
<br />
<br />
; loc_ED04C:<br />
Snd_Driver_End:<br />
<br />
<br />
<br />
<br />
; ---------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ---------------------------------------------------------------------------<br />
; the DAC data has to line up with the end of the bank.<br />
<br />
; actually it only has to fit within one bank, but we'll line it up to the end anyway<br />
; because the padding gives the sound driver some room to grow<br />
cnop -Size_of_DAC_samples, $8000<br />
<br />
; ---------------------------------------------------------------------------<br />
; DAC samples<br />
; ---------------------------------------------------------------------------<br />
; loc_ED100:<br />
SndDAC_Start:<br />
<br />
SndDAC_Sample1:<br />
BINCLUDE "sound/DAC/Sample 1.bin"<br />
SndDAC_Sample1_End<br />
<br />
SndDAC_Sample2:<br />
BINCLUDE "sound/DAC/Sample 2.bin"<br />
SndDAC_Sample2_End<br />
<br />
SndDAC_Sample5:<br />
BINCLUDE "sound/DAC/Sample 5.bin"<br />
SndDAC_Sample5_End<br />
<br />
SndDAC_Sample6:<br />
BINCLUDE "sound/DAC/Sample 6.bin"<br />
SndDAC_Sample6_End<br />
<br />
SndDAC_Sample3:<br />
BINCLUDE "sound/DAC/Sample 3.bin"<br />
SndDAC_Sample3_End<br />
<br />
SndDAC_Sample4:<br />
BINCLUDE "sound/DAC/Sample 4.bin"<br />
SndDAC_Sample4_End<br />
<br />
SndDAC_Sample7:<br />
BINCLUDE "sound/DAC/Sample 7.bin"<br />
SndDAC_Sample7_End<br />
<br />
SndDAC_End<br />
<br />
if SndDAC_End - SndDAC_Start > $8000<br />
fatal "DAC samples must fit within $8000 bytes, but you have $\{SndDAC_End-SndDAC_Start } bytes of DAC samples."<br />
endif<br />
if SndDAC_End - SndDAC_Start > Size_of_DAC_samples<br />
fatal "Size_of_DAC_samples = $\{Size_of_DAC_samples}, but you have $\{SndDAC_End-SndDAC_Start} bytes of DAC samples."<br />
endif<br />
<br />
; ---------------------------------------------------------------------------<br />
; Music pointers<br />
; ---------------------------------------------------------------------------<br />
align $8000<br />
<br />
; loc_F0000:<br />
MusicPoint1:<br />
MusPtr_Continue: rom_ptr_z80 Mus_Continue-MusicPoint2<br />
<br />
<br />
Mus_Continue: BINCLUDE "sound/music/Continue.bin"<br />
<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Buzzer's fireball<br />
ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Waterfall tiles<br />
ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Another fireball<br />
ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Bridge in EHZ<br />
ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (48 blocks)<br />
; Diagonally moving lift in HTZ<br />
ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; One way barrier from HTZ<br />
ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; See-saw in HTZ<br />
ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (24 blocks)<br />
; Unused Fireball<br />
;ArtNem_F0B06:<br />
BINCLUDE "art/nemesis/Fireball 3.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Rock from HTZ<br />
ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Orbit badnik from HTZ ; ArtNem_HtzSol:<br />
ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (120 blocks)<br />
; Large spinning wheel from MTZ<br />
ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Indent in large spinning wheel from MTZ<br />
ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike block from MTZ<br />
ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (15 blocks)<br />
; Steam from MTZ<br />
ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; Spike from MTZ<br />
ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (54 blocks)<br />
; Similarly shaded blocks from MTZ<br />
ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (9 blocks)<br />
; Lava bubble from MTZ<br />
ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Lava cup<br />
ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (8 blocks)<br />
; End of a bolt and rope from MTZ<br />
ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (12 blocks)<br />
; Small cog from MTZ<br />
ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (4 blocks)<br />
; Unknown. Four blocks that are all the same colour from MTZ.<br />
ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (32 blocks)<br />
; Large wooden box from MCZ ; ArtNem_F187C:<br />
ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (26 blocks)<br />
; Collapsing platform from MCZ ; ArtNem_F1ABA:<br />
ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (16 blocks)<br />
; Switch that you pull on from MCZ ; ArtNem_F1C64:<br />
ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (10 blocks)<br />
; Vine that lowers in MCZ ; ArtNem_F1D5C:<br />
ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"<br />
; --------------------------------------------------------------------<br />
; Nemesis compressed art (20 blocks)<br />
; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:<br />
ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"<br />
<br />
; ----------------------------------------------------------------------------------<br />
; Filler (free space)<br />
; ----------------------------------------------------------------------------------<br />
; the PCM data has to line up with the end of the bank.<br />
cnop -Size_of_SEGA_sound, $8000<br />
<br />
; -------------------------------------------------------------------------------<br />
; Sega Intro Sound<br />
; 8-bit unsigned raw audio at 16Khz<br />
; -------------------------------------------------------------------------------<br />
; loc_F1E8C:<br />
Snd_Sega: BINCLUDE "sound/PCM/SEGA.bin"<br />
Snd_Sega_End:<br />
<br />
if Snd_Sega_End - Snd_Sega > $8000<br />
fatal "Sega sound must fit within $8000 bytes, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
if Snd_Sega_End - Snd_Sega > Size_of_SEGA_sound<br />
fatal "Size_of_SEGA_sound = $\{Size_of_SEGA_sound}, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."<br />
endif<br />
<br />
; ------------------------------------------------------------------------------<br />
; Music pointers<br />
; ------------------------------------------------------------------------------<br />
align $8000<br />
soundBankStart := *<br />
<br />
; loc_F8000:<br />
MusicPoint2:<br />
MusPtr_CNZ_2P: rom_ptr_z80 Mus_CNZ_2P<br />
MusPtr_EHZ: rom_ptr_z80 Mus_EHZ<br />
MusPtr_MTZ: rom_ptr_z80 Mus_MTZ<br />
MusPtr_CNZ: rom_ptr_z80 Mus_CNZ<br />
MusPtr_MCZ: rom_ptr_z80 Mus_MCZ<br />
MusPtr_MCZ_2P: rom_ptr_z80 Mus_MCZ_2P<br />
MusPtr_ARZ: rom_ptr_z80 Mus_ARZ<br />
MusPtr_DEZ: rom_ptr_z80 Mus_DEZ<br />
MusPtr_SpecStage: rom_ptr_z80 Mus_SpecStage<br />
MusPtr_Options: rom_ptr_z80 Mus_Options<br />
MusPtr_Ending: rom_ptr_z80 Mus_Ending<br />
MusPtr_EndBoss: rom_ptr_z80 Mus_EndBoss<br />
MusPtr_CPZ: rom_ptr_z80 Mus_CPZ<br />
MusPtr_Boss: rom_ptr_z80 Mus_Boss<br />
MusPtr_SCZ: rom_ptr_z80 Mus_SCZ<br />
MusPtr_OOZ: rom_ptr_z80 Mus_OOZ<br />
MusPtr_WFZ: rom_ptr_z80 Mus_WFZ<br />
MusPtr_EHZ_2P: rom_ptr_z80 Mus_EHZ_2P<br />
MusPtr_2PResult: rom_ptr_z80 Mus_2PResult<br />
MusPtr_SuperSonic: rom_ptr_z80 Mus_SuperSonic<br />
MusPtr_HTZ: rom_ptr_z80 Mus_HTZ<br />
MusPtr_ExtraLife: rom_ptr_z80 Mus_ExtraLife<br />
MusPtr_Title: rom_ptr_z80 Mus_Title<br />
MusPtr_EndLevel: rom_ptr_z80 Mus_EndLevel<br />
MusPtr_GameOver: rom_ptr_z80 Mus_GameOver<br />
MusPtr_Invincible: rom_ptr_z80 Mus_Invincible<br />
MusPtr_Emerald: rom_ptr_z80 Mus_Emerald<br />
MusPtr_HPZ: rom_ptr_z80 Mus_HPZ<br />
MusPtr_Drowning: rom_ptr_z80 Mus_Drowning<br />
MusPtr_Credits: rom_ptr_z80 Mus_Credits<br />
<br />
; loc_F803C:<br />
Mus_HPZ: BINCLUDE "sound/music/HPZ.bin"<br />
Mus_Drowning: BINCLUDE "sound/music/Drowning.bin"<br />
Mus_Invincible: BINCLUDE "sound/music/Invincible.bin"<br />
Mus_CNZ_2P: BINCLUDE "sound/music/CNZ_2p.bin"<br />
Mus_EHZ: BINCLUDE "sound/music/EHZ.bin"<br />
Mus_MTZ: BINCLUDE "sound/music/MTZ.bin"<br />
Mus_CNZ: BINCLUDE "sound/music/CNZ.bin"<br />
Mus_MCZ: BINCLUDE "sound/music/MCZ.bin"<br />
Mus_MCZ_2P: BINCLUDE "sound/music/MCZ_2p.bin"<br />
Mus_ARZ: BINCLUDE "sound/music/ARZ.bin"<br />
Mus_DEZ: BINCLUDE "sound/music/DEZ.bin"<br />
Mus_SpecStage: BINCLUDE "sound/music/SpecStg.bin"<br />
Mus_Options: BINCLUDE "sound/music/Options.bin"<br />
Mus_Ending: BINCLUDE "sound/music/Ending.bin"<br />
Mus_EndBoss: BINCLUDE "sound/music/End_Boss.bin"<br />
Mus_CPZ: BINCLUDE "sound/music/CPZ.bin"<br />
Mus_Boss: BINCLUDE "sound/music/Boss.bin"<br />
Mus_SCZ: BINCLUDE "sound/music/SCZ.bin"<br />
Mus_OOZ: BINCLUDE "sound/music/OOZ.bin"<br />
Mus_WFZ: BINCLUDE "sound/music/WFZ.bin"<br />
Mus_EHZ_2P: BINCLUDE "sound/music/EHZ_2p.bin"<br />
Mus_2PResult: BINCLUDE "sound/music/2player results screen.bin"<br />
Mus_SuperSonic: BINCLUDE "sound/music/Supersonic.bin"<br />
Mus_HTZ: BINCLUDE "sound/music/HTZ.bin"<br />
Mus_Title: BINCLUDE "sound/music/Title screen.bin"<br />
Mus_EndLevel: BINCLUDE "sound/music/End of level.bin"<br />
<br />
; The following act mostly like sound effects<br />
; despite being listed with the music.<br />
; This means they're uncompressed format with absolute pointers<br />
; instead of compressed with relative pointers.<br />
; Because they have absolute pointers,<br />
; they have to be assembled rather than BINCLUDE'd.<br />
; See below (right before Sound20) for other notes<br />
; about the sound format that apply to these too.<br />
<br />
;Mus_ExtraLife: BINCLUDE "sound/music/Extra life.bin"<br />
Mus_ExtraLife: dc.w z80_ptr(Mus_EL_Voices),$0603,$02CD<br />
dc.w z80_ptr(Mus_EL_DAC),$0000<br />
dc.w z80_ptr(Mus_EL_FM1),$E810<br />
dc.w z80_ptr(Mus_EL_FM2),$E810<br />
dc.w z80_ptr(Mus_EL_FM3),$E810<br />
dc.w z80_ptr(Mus_EL_FM4),$E810<br />
dc.w z80_ptr(Mus_EL_FM5),$E810<br />
dc.w z80_ptr(Mus_EL_PSG1),$D008,$0005<br />
dc.w z80_ptr(Mus_EL_PSG2),$DC08,$0005<br />
dc.w z80_ptr(Mus_EL_PSG3),$DC00,$0004<br />
Mus_EL_FM4: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM1: dc.b $E0,$80<br />
+ dc.b $EF,$00,$E8,$06,$D9,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$DB,$09,$D7,$D6,$06,$D9,$18,$F2<br />
Mus_EL_FM2: dc.b $EF,$01,$E8,$06,$E2,$01,$D6,$06,$03,$03,$06,$06<br />
dc.b $E8,$00,$D7,$09,$D4,$D2,$06,$D6,$18,$E2,$01,$F2<br />
Mus_EL_FM5: dc.b $E1,$03,$E0,$40,$F6<br />
dc.w z80_ptr(+)<br />
Mus_EL_FM3: dc.b $E0,$80<br />
+ dc.b $EF,$02,$BA,$0C,$80,$06,$BA,$B8,$80,$03<br />
dc.b $B8,$06,$80,$03,$B8,$06,$BA,$18,$F2<br />
Mus_EL_PSG1: dc.b $E8,$06,$D6,$06,$03,$03,$06,$06,$E8,$00,$D7,$09<br />
dc.b $D4,$D2,$06,$D6,$18<br />
Mus_EL_PSG2:<br />
Mus_EL_PSG3: dc.b $F2<br />
Mus_EL_DAC: dc.b $88,$12,$06,$8B,$09,$09,$06,$88,$06,$8A,$88,$8A<br />
dc.b $88,$0C,$E4<br />
Mus_EL_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$18,$27,$28,$80<br />
<br />
<br />
;Mus_GameOver: BINCLUDE "sound/music/Game over.bin"<br />
Mus_GameOver: dc.w z80_ptr(MusGO_Voices),$0603,$02F2<br />
dc.w z80_ptr(MusGOver_DAC),$0000<br />
dc.w z80_ptr(MusGOver_FM1),$E80A<br />
dc.w z80_ptr(MusGOver_FM2),$F40F<br />
dc.w z80_ptr(MusGOver_FM3),$F40F<br />
dc.w z80_ptr(MusGOver_FM4),$F40D<br />
dc.w z80_ptr(MusGOver_FM5),$DC16<br />
dc.w z80_ptr(MusGOver_PSG),$D003,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC06,$0005<br />
dc.w z80_ptr(MusGOver_PSG),$DC00,$0004<br />
MusGOver_FM1: dc.b $EF,$00<br />
dc.b $F0,$20,$01,$04,$05<br />
dc.b $80,$0C,$CA,$12,$80,$06,$CA,$80,$CB,$12,$C8,$1E<br />
dc.b $CA,$06,$80,$CA,$80,$CA,$80,$C6,$80,$C4,$12,$C8<br />
dc.b $0C,$80,$12,$C9,$04,$80,$C9,$C8,$06,$80,$C7,$80<br />
dc.b $C6,$80<br />
dc.b $F0,$28,$01,$18,$05<br />
dc.b $C5,$60,$F2<br />
MusGOver_FM2: dc.b $EF,$01,$80,$01,$D9,$06,$80,$D9,$80,$D6,$80,$D6<br />
dc.b $80,$D7,$15,$D7,$1B,$D9,$06,$80,$D9,$80,$D6,$80<br />
dc.b $D6,$80,$DC,$15,$DC,$1B,$F2<br />
MusGOver_FM3: dc.b $EF,$01,$D6,$0C,$D6,$D2,$D2,$D4,$15,$D4,$1B,$D6<br />
dc.b $0C,$D6,$D2,$D2,$D7,$15,$D7,$1B,$F2<br />
MusGOver_FM4: dc.b $EF,$02,$E2,$01,$AE,$06,$80,$AE,$80,$A9,$80,$A9<br />
dc.b $80,$AC,$15,$AB,$0C,$AC,$03,$AB,$0C,$AE,$06,$80<br />
dc.b $AE,$80,$A9,$80,$A9,$80,$B3,$15,$B2,$0C,$B3,$03<br />
dc.b $B2,$0C,$AE,$04,$80,$AE,$AD,$06,$80,$AC,$80,$AB<br />
dc.b $80,$AB,$60,$E2,$01,$F2<br />
MusGOver_FM5: dc.b $EF,$03,$80,$30,$D7,$12,$80,$03,$D7,$1B,$80,$30<br />
dc.b $DC,$12,$80,$03,$DC,$1B<br />
MusGOver_PSG: dc.b $F2<br />
MusGOver_DAC: dc.b $80,$18,$81<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(MusGOver_DAC)<br />
dc.b $F2<br />
MusGO_Voices: dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $3C,$33,$73,$30,$70,$94,$96,$9F,$9F,$12,$14,$00<br />
dc.b $0F,$04,$04,$0A,$0D,$2F,$4F,$0F,$2F,$33,$1A,$80,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$1C,$27,$28,$80<br />
dc.b $1F,$66,$53,$31,$22,$1C,$1F,$98,$1F,$12,$0F,$0F<br />
dc.b $0F,$00,$00,$00,$00,$FF,$0F,$0F,$0F,$8C,$8A,$8D,$8B<br />
<br />
;Mus_Emerald: BINCLUDE "sound/music/Got an emerald.bin"<br />
Mus_Emerald: dc.w z80_ptr(MusEmrldVoices),$0703,$01D5<br />
dc.w z80_ptr(MusEmeraldDAC),$0000<br />
dc.w z80_ptr(MusEmeraldFM1),$F408<br />
dc.w z80_ptr(MusEmeraldFM2),$F408<br />
dc.w z80_ptr(MusEmeraldFM3),$F407<br />
dc.w z80_ptr(MusEmeraldFM4),$F416<br />
dc.w z80_ptr(MusEmeraldFM5),$F416<br />
dc.w z80_ptr(MusEmeraldFM6),$F416<br />
dc.w z80_ptr(MusEmeraldPSG1),$F402,$0004<br />
dc.w z80_ptr(MusEmeraldPSG2),$F402,$0005<br />
dc.w z80_ptr(MusEmeraldPSG3),$F400,$0004<br />
MusEmeraldFM3: dc.b $E1,$02<br />
MusEmeraldFM1: dc.b $EF,$00,$C1,$06,$C4,$C9,$CD,$0C,$C9,$D0,$2A,$F2<br />
MusEmeraldFM2: dc.b $EF,$00,$BD,$06,$C1,$C4,$C9,$0C,$C6,$CB,$2A,$F2<br />
MusEmeraldFM4: dc.b $EF,$01,$C1,$0C,$C1,$06,$C4,$06,$80,$C4,$80,$C9<br />
dc.b $2A,$F2<br />
MusEmeraldFM5: dc.b $EF,$01,$C9,$0C,$C9,$06,$CD,$06,$80,$CD,$80,$D0<br />
dc.b $2A,$F2<br />
MusEmeraldFM6: dc.b $EF,$01,$C4,$0C,$C4,$06,$C9,$06,$80,$C9,$80,$CD<br />
dc.b $2A,$F2<br />
MusEmeraldPSG2: dc.b $80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusEmeraldPSG1: dc.b $E2,$01,$80,$02,$80,$2D<br />
- dc.b $C4,$06,$C2,$C1,$BF,$EC,$03<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
MusEmeraldPSG3:<br />
MusEmeraldDAC: dc.b $E2,$01,$F2<br />
MusEmrldVoices: dc.b $04,$35,$54,$72,$46,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$1D,$14,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$07,$07,$1A,$16,$80,$80<br />
<br />
;Mus_Credits: BINCLUDE "sound/music/Credits.bin"<br />
Mus_Credits: dc.w z80_ptr(MusCred_Voices),$0603,$01F0<br />
dc.w z80_ptr(MusCred_DAC),$0000<br />
dc.w z80_ptr(MusCred_FM1),$000E<br />
dc.w z80_ptr(MusCred_FM2),$180A<br />
dc.w z80_ptr(MusCred_FM3),$0014<br />
dc.w z80_ptr(MusCred_FM4),$0016<br />
dc.w z80_ptr(MusCred_FM5),$0C16<br />
dc.w z80_ptr(MusCred_PSG1),$E806,$000B<br />
dc.w z80_ptr(MusCred_PSG2),$DC07,$000B<br />
dc.w z80_ptr(MusCred_PSG3),$0002,$0003<br />
MusCred_FM1: dc.b $E9,$F4,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$0C,$E6,$02<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$03,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $AE,$06,$A2,$F8<br />
dc.w z80_ptr(MusCreditsD9D1)<br />
dc.b $E6,$FD<br />
- dc.b $EF,$00,$B7,$06,$BA,$F8<br />
dc.w z80_ptr(MusCreditsDA13)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$06,$80,$80,$30,$80,$EF,$0B,$E9,$18,$E6,$02<br />
- dc.b $94,$0C,$8F,$92,$8F,$06,$94,$05,$94,$07,$06,$8F<br />
dc.b $0C,$92,$8F<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$30,$80,$EF,$0E,$E6,$FF,$E9,$E8,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$91,$94,$06,$80,$18,$96,$12,$9A,$06,$80<br />
dc.b $80,$12,$8F,$93,$08,$80,$16,$96,$06,$91,$92,$94<br />
dc.b $96,$F8<br />
dc.w z80_ptr(MusCreditsDAE5)<br />
dc.b $80,$12,$9D,$9A,$08,$80,$16,$96,$12,$9D,$08,$80<br />
dc.b $04,$EF,$12<br />
dc.b $F0,$18,$01,$0A,$04<br />
dc.b $80,$30,$80,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$24,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$EF,$01,$E9,$F4,$E6,$FA,$F4<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsDA99)<br />
dc.b $80,$03,$80,$60,$E6,$04,$E1,$01,$EF,$1B,$E6,$06<br />
dc.b $C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80,$EF<br />
dc.b $1C,$E6,$FA,$E8,$00,$BC,$0C,$12,$06,$EF,$1B,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$80,$E8,$06,$C4,$06,$06,$C6,$C4,$E8<br />
dc.b $00,$C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80<br />
dc.b $E8,$00,$EF,$1C,$E6,$FA,$C1,$C4,$C1,$EF,$1A,$E6<br />
dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00<br />
dc.b $C3,$0C,$C4,$06,$80,$80,$24,$80,$30,$80,$EF,$1F<br />
dc.b $E9,$18,$E6,$F7,$E1,$00,$80,$06,$AC,$AE,$80,$B1<br />
dc.b $80,$B3,$80,$B4,$80,$B3,$80,$B1,$B3,$80,$B1,$E9<br />
dc.b $F4,$EF,$00,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC<br />
dc.b $06,$AE,$B1,$80,$B4,$B1,$80,$B1,$E9,$0C,$EF,$1F<br />
dc.b $80,$06,$B8,$12,$B4,$06,$80,$B3,$80,$B4,$80,$B3<br />
dc.b $80,$B1,$AE,$80,$B1,$E9,$F4,$EF,$00,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$30,$80,$EF,$21,$E9,$0C,$80,$30,$80<br />
dc.b $08,$A0,$04,$9E,$0C,$9D,$9B,$99,$08,$04,$91,$0C<br />
dc.b $92,$93,$94,$98,$99,$9B,$9D,$98,$95,$93,$91,$98<br />
dc.b $9D,$91,$96,$98,$99,$98,$96,$99,$9D,$96,$95,$97<br />
dc.b $99,$97,$95,$96,$97,$98,$99,$98,$99,$9B,$9D,$08<br />
dc.b $04,$98,$0C,$91,$95,$96,$98,$99,$9D,$9E,$08,$96<br />
dc.b $10,$97,$0C,$98,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDAFE)<br />
dc.b $9E,$08,$99,$04,$EF,$23,$E9,$E8,$E6,$07,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $80,$60,$E6,$FB,$80,$0C,$CD,$06,$80,$D4,$CD,$06<br />
dc.b $80,$0C,$CD,$06,$80,$D4,$CD,$06,$80,$18,$E6,$05<br />
dc.b $80,$0C,$AE,$80,$AE,$80,$24,$E1,$02,$E6,$08,$A2<br />
dc.b $6C,$F2<br />
MusCreditsD9D1: dc.b $A5,$0C,$B1,$06,$80,$B1,$0C,$AC,$B3,$12,$B1,$0C<br />
dc.b $AC,$06,$AE,$B1,$A7,$0C,$B3,$06,$80,$B3,$0C,$AE<br />
dc.b $B5,$12,$B3,$06,$80,$AE,$B0,$B3,$A3,$0C,$AF,$06<br />
dc.b $80,$AF,$0C,$AA,$B1,$12,$AF,$0C,$AA,$06,$AC,$AF<br />
dc.b $A2,$0C,$AE,$06,$A2,$A4,$0C,$B0,$06,$A4,$A5,$0C<br />
dc.b $B1,$06,$A5,$A2,$0C,$E3<br />
MusCreditsDA13: dc.b $BE,$0C,$BC,$06,$BA,$BC,$BA,$04,$E7,$08,$BA,$04<br />
dc.b $80,$0E,$EF,$07,$B7,$06,$B2,$B5,$B7,$EF,$00,$B7<br />
dc.b $BA,$BE,$0C,$BC,$06,$BA,$BC,$BA,$0C,$BC,$04,$80<br />
dc.b $08,$BA,$04,$80,$08,$BC,$04,$80,$08,$BE,$12,$BA<br />
dc.b $06,$B7,$80,$B7,$80,$24,$EF,$07,$B7,$06,$B2,$B5<br />
dc.b $B7,$80,$0C,$80,$30,$BE,$06,$BE,$BA,$04,$80,$08<br />
dc.b $BC,$06,$BE,$E3<br />
MusCreditsDA5F: dc.b $C3,$01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$02,$C3<br />
dc.b $01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01<br />
dc.b $E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$FC,$C3,$01,$E7<br />
dc.b $C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01,$E7,$C4<br />
dc.b $E7,$C5,$E7,$C6,$2D,$E7,$30,$E7,$30,$E3<br />
MusCreditsDA99: dc.b $A7,$0C,$B3,$06,$80,$B1,$80,$B3,$0C,$A7,$03,$80<br />
dc.b $06,$A7,$03,$B3,$0C,$B1,$B3,$09,$AE,$03,$AC,$06<br />
dc.b $80,$AC,$0C,$AE,$06,$80,$AE,$0C,$AF,$06,$80,$27<br />
dc.b $E3<br />
MusCreditsDABE: dc.b $80,$0C,$CA,$15,$80,$03,$CA,$06,$80,$CB,$0F,$80<br />
dc.b $03,$C8,$18,$80,$06,$CA,$80,$CA,$80,$CA,$80,$C6<br />
dc.b $80,$C4,$0F,$80,$03,$C8,$18,$80,$06<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E3<br />
MusCreditsDAE5: dc.b $80,$12,$94,$97,$06,$80,$18,$99,$12,$94,$06,$80<br />
dc.b $80,$12,$92,$96,$06,$80,$18,$97,$12,$92,$06,$80<br />
dc.b $E3<br />
MusCreditsDAFE: dc.b $80,$99,$80,$99,$80,$9E,$80,$E3<br />
MusCreditsDB06: dc.b $EF,$07,$80,$54,$C7,$04,$C8,$C9,$CA,$24,$CD,$D2<br />
dc.b $18,$D0,$24,$CF,$CB,$18,$CB,$0C,$CA,$80,$CD,$60<br />
dc.b $E7,$3C,$CA,$24,$CD,$D2,$18,$D4,$24,$D0,$D4,$18<br />
dc.b $D4,$24,$D6,$60,$E7,$3C,$E3<br />
MusCred_FM2: dc.b $80,$60,$EF,$01,$E8,$06,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $85,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8A,$87,$88,$89,$F8<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
- dc.b $88<br />
dc.b $F7,$00,$0B<br />
dc.w z80_ptr(-)<br />
- dc.b $8A<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$E6,$FC,$8A,$8B,$8C,$E6,$04,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$00,$8D,$8A,$8B,$8C,$E8,$09<br />
- dc.b $8D,$0C<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $8D,$06,$99,$E8,$00,$8A,$0C,$8B,$8C,$E9,$E8,$E6<br />
dc.b $0C,$EF,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E6,$F9,$EF,$08<br />
MusCreditsDB93: dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $06,$9C,$12,$9D,$0C,$9E,$F8<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
- dc.b $9D,$04,$80,$08,$9D,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $9C,$04,$80,$08,$9C,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(MusCreditsDB93)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$13,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$60,$EF,$0F,$E6,$F3<br />
dc.b $F0,$04,$02,$03,$02<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$30,$E7,$18,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$EF,$13,$E6,$F5,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$0C,$A9,$08,$A1,$10,$F8<br />
dc.w z80_ptr(MusCreditsDDEA)<br />
dc.b $A8,$08,$A9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E1,$02,$E9,$F4,$E6,$0A,$F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$EF,$1B,$E1,$00<br />
dc.b $E8,$06,$80,$3C,$B8,$06,$06,$BA,$BD,$BD,$BA,$EF<br />
dc.b $1D,$E6,$FA,$E8,$00,$F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDF9)<br />
dc.b $EF,$1C,$BD,$EF,$1D,$F8<br />
dc.w z80_ptr(MusCreditsDE09)<br />
dc.b $80,$30,$80,$EF,$01,$E9,$18,$E6,$F9<br />
- dc.b $99,$0C,$A5,$06,$80,$96,$0C,$A2,$06,$80,$97,$0C<br />
dc.b $A3,$06,$80,$98,$0C,$A8,$06,$A7,$99,$06,$99,$12<br />
dc.b $96,$0C,$A2,$06,$80,$97,$0C,$A3,$06,$80,$98,$0C<br />
dc.b $A4,$06,$80<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$22,$E9,$E8,$E6,$03<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$AC,$04,$AE,$08,$B1,$04,$B5,$30,$80,$0C<br />
dc.b $B5,$08,$80,$04,$B6,$08,$B5,$10,$B9,$08,$04,$80<br />
dc.b $08,$B5,$34,$80,$0C,$B5,$BA,$08,$04,$80,$08,$B5<br />
dc.b $04,$B1,$24,$80,$0C,$B1,$08,$80,$04,$B3,$08,$B1<br />
dc.b $04,$B4,$0C,$B3,$08,$B1,$4C,$80,$0C,$B5,$08,$80<br />
dc.b $04,$B6,$08,$80,$04,$B5,$08,$80,$04,$B9,$08,$04<br />
dc.b $80,$08,$B5,$1C,$80,$0C,$BA,$18,$BC,$08,$BA,$04<br />
dc.b $BD,$18,$80,$0C,$BA,$04,$80,$08,$B8,$18,$B5,$B1<br />
dc.b $B3,$0C,$E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$0C,$E6,$FC,$F8<br />
dc.w z80_ptr(MusCreditsDE17)<br />
dc.b $B3,$14,$B1,$04,$E6,$FF,$EF,$24,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $AC,$12,$AB,$0C,$AC,$06,$AB,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDE20)<br />
dc.b $B3,$12,$B2,$0C,$B3,$06,$B2,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $AC,$06,$80,$A9,$80,$AA,$80,$AB,$80,$AC,$AC,$A9<br />
dc.b $80,$AA,$80,$AC,$80,$A9,$80,$A9,$80,$AD,$80,$AD<br />
dc.b $80,$B0,$80,$B0,$80,$B3,$80,$B3,$80,$80,$0C,$A2<br />
dc.b $12,$80,$06,$A2,$12,$AD,$AE,$06,$80,$E6,$FD,$A2<br />
dc.b $6C,$F2<br />
MusCreditsDD59: dc.b $80,$0C,$C4,$06,$80,$C6,$80,$C4,$80,$C9,$80,$C9<br />
dc.b $80,$CB,$CD,$80,$0C,$80,$CB,$18,$C6,$06,$80,$C9<br />
dc.b $C9,$80,$CB,$0C,$80,$12,$80,$1E,$C7,$06,$C9,$C7<br />
dc.b $CB,$80,$C9,$80,$C7,$C9,$80,$C6,$E7,$C6,$30,$E7<br />
dc.b $18,$80,$18,$E3<br />
MusCreditsDD8D: dc.b $9F,$04,$80,$08,$9F,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(MusCreditsDD8D)<br />
dc.b $06,$AB,$9F,$0C,$E3<br />
MusCreditsDD9D: dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$B6,$80,$18<br />
dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$30,$E7,$E3<br />
MusCreditsDDB5: dc.b $BF,$06,$BD,$BF,$12,$C2,$BF,$0C,$C1,$80,$06,$12<br />
dc.b $C4,$0C,$C2,$06,$80,$C9,$C6,$3C,$80,$06,$0C,$C7<br />
dc.b $12,$C6,$C4,$06,$C2,$C1,$18,$E3<br />
MusCreditsDDD5: dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80<br />
dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$E3<br />
MusCreditsDDEA: dc.b $A2,$0C,$AE,$AC,$08,$AE,$04,$AC,$08,$A9,$04,$A7<br />
dc.b $08,$04,$E3<br />
MusCreditsDDF9: dc.b $80,$0C,$B1,$AE,$06,$06,$AC,$0C,$80,$B0,$AE,$06<br />
dc.b $06,$AC,$0C,$E3<br />
MusCreditsDE09: dc.b $AE,$AC,$06,$06,$AA,$0C,$80,$AC,$0C,$06,$06,$AE<br />
dc.b $AC,$E3<br />
MusCreditsDE17: dc.b $BA,$04,$80,$08,$B8,$18,$B5,$B1,$E3<br />
MusCreditsDE20: dc.b $AE,$06,$80,$AE,$80,$A9,$80,$A9,$80,$E3<br />
MusCreditsDE2A: dc.b $8A,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(MusCreditsDE2A)<br />
dc.b $E3<br />
MusCred_FM3: dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$18,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $B8,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE040)<br />
dc.b $BD,$3C,$E9,$E8,$E6,$02,$E1,$03,$EF,$04,$E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDD59)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$09,$E9,$0C,$E6,$FD,$E0,$40<br />
dc.b $F0,$06,$01,$05,$04<br />
dc.b $E1,$00<br />
- dc.b $9F,$0C,$AB,$06,$80,$A9,$80,$AB,$9F,$80,$9F,$AB<br />
dc.b $80,$A9,$80,$AB,$0C<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $9D,$0C,$A9,$06,$80,$A8,$80,$A9,$9C,$80,$9C,$A8<br />
dc.b $80,$A6,$80,$A8,$0C<br />
dc.b $F7,$01,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0D,$E6,$FB,$E0,$C0,$F4,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$0F,$E0,$80,$E6,$0B,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $C4,$18,$C3,$48,$80,$0C,$F8<br />
dc.w z80_ptr(MusCreditsDDB5)<br />
dc.b $BE,$0C<br />
dc.b $F0,$18,$01,$03,$04<br />
dc.b $E6,$F3,$E0,$C0,$EF,$14,$A2,$14,$A4,$04,$A5,$04<br />
dc.b $80,$08,$A9,$04,$80,$08,$A8,$04,$80,$08,$A9,$04<br />
dc.b $80,$08,$AC,$08,$A9,$10<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$18,$E9,$F4,$E6,$08,$F4,$E0,$40,$80,$60,$80<br />
dc.b $30,$C6,$06,$80,$C2,$0C,$C4,$09,$C2,$03,$BF,$0C<br />
dc.b $80,$60,$80,$3C,$80,$60,$EF,$1B,$E6,$FB,$E0,$C0<br />
dc.b $E8,$06,$C4,$06,$06,$C6,$C9,$C9,$C6,$E8,$00,$CD<br />
dc.b $0C,$E8,$06,$C9,$06,$C6,$C9,$0C,$80,$80,$12,$EF<br />
dc.b $1C,$E8,$00,$BD,$BA,$0C,$E8,$06,$EF,$1B,$CE,$06<br />
dc.b $CE,$80,$CE,$80,$CE,$E8,$00,$CF,$0C,$D0,$80,$E8<br />
dc.b $06,$D0,$06,$06,$D2,$D0,$E8,$00,$CD,$0C,$E8,$06<br />
dc.b $C9,$06,$C6,$C9,$0C,$E8,$00,$EF,$1C,$80,$1E,$C2<br />
dc.b $0C,$C2,$BD,$06,$80,$60,$80,$60,$EF,$00,$E9,$18<br />
dc.b $80,$60,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC,$06<br />
dc.b $AE,$B1,$80,$B4,$B1,$80,$B1,$80,$60,$80,$06,$AF<br />
dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1<br />
dc.b $80,$B1,$80,$60,$EF,$22,$E9,$DC,$E6,$FF,$E0,$80<br />
dc.b $80,$60,$F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $CD,$30,$CB,$18,$CD,$0C,$CB,$C9,$30,$CE,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$04,$F8<br />
dc.w z80_ptr(MusCreditsE051)<br />
dc.b $E6,$FC,$80,$C4,$80,$C4,$80,$C6,$18,$08,$C4,$04<br />
dc.b $E9,$0C,$E6,$FF,$E0,$C0,$EF,$00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $CB,$12,$CB,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE05B)<br />
dc.b $D0,$12,$D0,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$CB,$12,$80,$06,$CB,$80,$CA,$12,$CB,$CA<br />
dc.b $0C,$C5,$18,$C8,$CB,$D1,$80,$0C,$CD,$80,$CD,$12<br />
dc.b $CC,$CD,$06,$80,$E6,$F8,$EF,$01,$E1,$03,$A2,$6C<br />
dc.b $F2<br />
MusCreditsDFF2: dc.b $80,$60,$BC,$06,$BD,$BC,$B8,$BA,$B6,$0C,$B8,$B3<br />
dc.b $B3,$06,$B6,$0C,$B8,$E3<br />
MusCreditsE004: dc.b $80,$0C,$CD,$04,$80,$10,$CD,$04,$80,$0C,$CD,$0C<br />
dc.b $CE,$08,$CD,$04,$80,$18,$80,$0C,$CB,$04,$80,$10<br />
dc.b $CB,$04,$80,$0C,$CB,$0C,$CD,$08,$CB,$04,$80,$18<br />
- dc.b $80,$0C,$C9,$04,$80,$10,$C9,$04,$80,$0C,$C9,$0C<br />
dc.b $CB,$08,$C9,$04,$80,$18<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E3<br />
MusCreditsE040: dc.b $80,$18,$B8,$0B,$80,$0D,$BA,$0C,$0B,$80,$19,$BD<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE051: dc.b $80,$0C,$C4,$80,$C4,$80,$C6,$80,$C6,$E3<br />
MusCreditsE05B: dc.b $CD,$06,$80,$CD,$80,$CA,$80,$CA,$80,$E3<br />
MusCreditsE065: dc.b $EF,$05,$E9,$F4,$C6,$60,$CB,$CD,$E7,$CD,$C6,$60<br />
dc.b $D0,$D0,$24,$D2,$60,$E7,$3C,$E3<br />
MusCred_FM4: dc.b $80,$60,$E9,$FB,$E6,$FE,$F8<br />
dc.w z80_ptr(MusCreditsE065)<br />
dc.b $E9,$1D,$E6,$02,$EF,$02,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B5,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE2AE)<br />
dc.b $B8,$3C,$E6,$06,$EF,$05<br />
dc.b $F0,$02,$01,$FE,$04<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E9,$F4,$E6,$F7<br />
dc.b $F0,$0C,$01,$FB,$04<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$25,$C3,$06,$C3,$80,$0C,$C3,$06,$C3,$05,$80<br />
dc.b $0D,$C3,$06,$C5,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE2BF)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$EF,$0C,$E6,$05,$F4,$E1,$02,$E0<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $24,$80,$0C,$80,$60,$EF,$10,$E6,$F7,$E1,$00,$E0<br />
dc.b $40,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $B3,$B7,$06,$AE,$0C,$B1,$B3,$B7,$06,$80,$B7,$AE<br />
dc.b $0C,$B1,$F8<br />
dc.w z80_ptr(MusCreditsE2D2)<br />
dc.b $EF,$15,$E6,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
- dc.b $EF,$14,$80,$4E,$E0,$40,$A1,$12,$A2,$06,$E0,$C0<br />
dc.b $EF,$16,$80,$30,$80,$06,$BA,$08,$B9,$04,$B8,$08<br />
dc.b $B7,$04,$B6,$08,$B5,$04<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$17,$E9,$F4,$E6,$02,$E0,$C0<br />
dc.b $F0,$01,$01,$03,$03<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDDD5)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$1E,$E0,$40,$E6,$FE,$E9,$F4,$F4,$E8<br />
dc.b $06,$80,$0C,$C1,$06,$12,$18,$C4,$06,$12,$0C,$EF<br />
dc.b $1C,$E0,$C0,$E6,$FA,$E8,$00,$C6,$E8,$06,$E6,$06<br />
dc.b $EF,$1E,$E0,$40,$C2,$06,$12,$18,$C4,$06,$12,$18<br />
dc.b $C1,$06,$12,$18,$C4,$06,$12,$0C,$EF,$1A,$E0,$C0<br />
dc.b $E9,$0C,$C6,$06,$C6,$80,$C6,$80,$C6,$E8,$00,$C7<br />
dc.b $0C,$C8,$06,$EF,$1E,$E0,$40,$E9,$F4,$E8,$06,$80<br />
dc.b $C4,$06,$12,$0C,$80,$60,$EF,$20,$E9,$18,$E6,$FA<br />
dc.b $E0,$C0,$E8,$00,$B4,$03,$E7,$B6,$5D,$B3,$03,$E7<br />
dc.b $B5,$5D,$B1,$03,$E7,$B3,$5D,$B3,$03,$E7,$B5,$5D<br />
dc.b $80,$60,$EF,$22,$E0,$40,$E9,$E8,$E6,$04,$80,$30<br />
dc.b $80,$F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $C9,$30,$C8,$18,$C9,$0C,$C8,$C6,$30,$C9,$80,$0C<br />
dc.b $C1,$80,$C1,$80,$C2,$80,$C2,$E6,$04,$80,$C1,$80<br />
dc.b $C1,$80,$C2,$80,$C2,$E6,$FC,$80,$C1,$80,$C1,$80<br />
dc.b $C2,$18,$08,$C1,$04,$E9,$0C,$E6,$FF,$E0,$C0,$EF<br />
dc.b $00,$80,$60<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $C8,$12,$C8,$1E,$F8<br />
dc.w z80_ptr(MusCreditsE2C8)<br />
dc.b $CB,$12,$CB,$1E<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $E1,$03,$E6,$08,$F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $E6,$F0,$EF,$01<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $A2,$6C,$F2<br />
MusCreditsE22D: dc.b $A2,$14,$A4,$04,$A5,$04,$80,$08,$A9,$04,$80,$08<br />
dc.b $A8,$04,$80,$08,$A9,$04,$80,$08,$AC,$08,$A9,$10<br />
dc.b $E3<br />
MusCreditsE246: dc.b $80,$0C<br />
dc.b $C9,$04,$80,$10<br />
dc.b $C9,$04,$80,$0C<br />
dc.b $C9,$0C<br />
dc.b $CB,$08<br />
dc.b $C9,$04,$80,$18,$80,$0C<br />
dc.b $C8,$04,$80,$10<br />
dc.b $C8,$04,$80,$0C<br />
dc.b $C8,$0C<br />
dc.b $C9,$08<br />
dc.b $C8,$04,$80,$18,$80,$0C<br />
<br />
if 1==1<br />
; this part of the original credits music (CNZ PSG) sounds buggy (dissonant)<br />
dc.b $C6,$04,$80,$10<br />
dc.b $C6,$04,$80,$0C<br />
dc.b $C6,$0C<br />
dc.b $C8,$08<br />
dc.b $C6,$04,$80,$18,$80,$0C<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $C7,$08<br />
else<br />
; replace the above block of notes with this to fix it.<br />
; (I'm not sure why, but the notes $C6 and $C7 are broken here,<br />
; so I've replaced them with pitch-shifted $C8s)<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$10 ; $C6<br />
dc.b $C8,$04,$80,$0C ; $C6<br />
dc.b $C8,$0C ; $C6<br />
dc.b $E1,0<br />
dc.b $C8,$08<br />
dc.b $E1,-64<br />
dc.b $C8,$04,$80,$24 ; $C6<br />
dc.b $E1,0<br />
dc.b $C5,$04,$80,$10<br />
dc.b $C5,$04,$80,$0C<br />
dc.b $C5,$0C<br />
dc.b $E1,-32<br />
dc.b $C8,$08 ; $C7<br />
dc.b $E1,0<br />
endif<br />
<br />
dc.b $C5,$04,$80,$18<br />
dc.b $E3<br />
MusCreditsE28F: dc.b $EF,$25,$80,$0C,$D0,$D4,$D7,$DB,$0C,$80,$06,$DB<br />
dc.b $0C,$DC,$06,$DB,$0C,$DD,$60,$DE,$0C,$80,$DE,$80<br />
dc.b $80,$06,$DD,$12,$DE,$0C,$E3<br />
MusCreditsE2AE: dc.b $80,$18,$B5,$0B,$80,$0D,$B7,$0C,$0B,$80,$19,$BA<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE2BF: dc.b $C3,$05,$80,$13,$C3,$12,$C3,$05,$E3<br />
MusCreditsE2C8: dc.b $CA,$06,$80,$CA,$80,$C6,$80,$C6,$80,$E3<br />
MusCreditsE2D2: dc.b $AF,$0C,$B3,$06,$B6,$0C,$AF,$B1,$06,$80,$B1,$0C<br />
dc.b $B5,$06,$B8,$0C,$B1,$06,$80,$B6,$0C,$BA,$06,$B1<br />
dc.b $0C,$B5,$B6,$BA,$06,$80,$BA,$AF,$0C,$B3,$B5,$B8<br />
dc.b $06,$B2,$0C,$B3,$B5,$B8,$06,$80,$B8,$B2,$0C,$B5<br />
dc.b $E3<br />
MusCred_FM5: dc.b $E9,$E8,$E6,$F8,$E1,$05,$F8<br />
dc.w z80_ptr(MusCreditsDB06)<br />
dc.b $E9,$18,$E6,$08,$E1,$00,$EF,$02<br />
dc.b $F0,$0C,$01,$FC,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B1,$3C,$F8<br />
dc.w z80_ptr(MusCreditsE4E8)<br />
dc.b $B5,$3C,$E9,$F4,$E6,$07<br />
dc.b $F0,$30,$01,$04,$04<br />
dc.b $EF,$06<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $EF,$0A,$E6,$F6<br />
dc.b $F0,$0C,$01,$05,$04<br />
dc.b $E0,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$25,$C6,$06,$C6,$80,$0C,$C6,$06,$C6,$05,$80<br />
dc.b $0D,$C6,$06,$C8,$30,$E7,$06,$F8<br />
dc.w z80_ptr(MusCreditsE4F9)<br />
dc.b $80,$31,$80,$60<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$80,$48,$E6,$05,$F4,$80,$01,$EF,$0C,$E1<br />
dc.b $FE,$E0,$40,$F8<br />
dc.w z80_ptr(MusCreditsDD9D)<br />
dc.b $23,$80,$0C,$80,$60,$EF,$11,$E9,$F4,$E6,$F4,$E1<br />
dc.b $00,$E0,$C0<br />
dc.b $F0,$06,$01,$06,$05<br />
dc.b $80,$60,$80,$30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60<br />
dc.b $80,$06,$CB,$80,$CB,$C9,$80,$C9,$80,$C7,$80,$C7<br />
dc.b $80,$C6,$03,$80,$C6,$80,$09,$80,$06,$80,$60,$80<br />
dc.b $30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60,$EF,$16,$E9<br />
dc.b $0C,$E6,$04,$F4,$E0,$80,$80,$01,$F8<br />
dc.w z80_ptr(MusCreditsE22D)<br />
dc.b $80,$2F,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$30,$F8<br />
dc.w z80_ptr(MusCreditsE4CD)<br />
dc.b $80,$60,$EF,$19,$E9,$F4,$E0,$C0,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$27,$B1,$03,$F8<br />
dc.w z80_ptr(MusCreditsE502)<br />
dc.b $80,$2A,$80,$60,$EF,$1E,$E9,$F4,$E8,$06<br />
- dc.b $80,$0C,$C4,$06,$12,$18,$C8,$06,$12,$0C,$80,$C6<br />
dc.b $06,$12,$18,$C8,$06,$12,$0C<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EF,$20,$E8,$00,$E9,$18,$E6,$FA,$B8,$03<br />
dc.b $E7,$BA,$5D,$B6,$03,$E7,$B8,$5D,$B4,$03,$E7,$B6<br />
dc.b $5D,$B6,$03,$E7,$B8,$5D,$80,$60,$EF,$22,$E9,$F4<br />
dc.b $E6,$05<br />
dc.b $F0,$1C,$01,$06,$04<br />
dc.b $80,$50,$A7,$04,$A9,$08,$AC,$04,$B1,$30,$80,$0C<br />
dc.b $B1,$08,$80,$04,$B3,$08,$B1,$10,$B5,$08,$B5,$04<br />
dc.b $80,$08,$B0,$34,$80,$0C,$B0,$B5,$08,$04,$80,$08<br />
dc.b $B1,$04,$AE,$24,$80,$0C,$AE,$08,$80,$04,$B0,$08<br />
dc.b $AE,$04,$B1,$0C,$AF,$08,$AD,$4C,$80,$0C,$B1,$08<br />
dc.b $80,$04,$B3,$08,$80,$04,$B1,$08,$80,$04,$B5,$08<br />
dc.b $B5,$04,$80,$08,$B0,$1C,$80,$0C,$B5,$18,$B8,$08<br />
dc.b $B5,$04,$BA,$18,$80,$0C,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$04,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$B0,$0C,$E6,$F8,$B6,$04,$80,$08,$B5,$18<br />
dc.b $B1,$AE,$AA,$14,$A9,$04,$E6,$0C,$EF,$23,$E1,$03<br />
dc.b $E6,$F7,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDABE)<br />
dc.b $E6,$09<br />
dc.b $F0,$00,$01,$06,$04<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE28F)<br />
dc.b $F2<br />
MusCreditsE4CD: dc.b $80,$1E,$EF,$14,$A4,$12,$A5,$06,$EF,$16,$80,$30<br />
dc.b $80,$06,$BD,$08,$BC,$04,$BB,$08,$BA,$04,$B9,$08<br />
dc.b $B8,$04,$E3<br />
MusCreditsE4E8: dc.b $80,$18,$B1,$0B,$80,$0D,$B3,$0C,$0B,$80,$19,$B6<br />
dc.b $0C,$0B,$80,$0D,$E3<br />
MusCreditsE4F9: dc.b $C6,$05,$80,$13,$C6,$12,$C6,$05,$E3<br />
MusCreditsE502: dc.b $80,$60,$AC,$06,$80,$AC,$0C,$AE,$06,$80,$AE,$0C<br />
dc.b $AF,$06,$E3<br />
MusCred_PSG1: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG1)<br />
- dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$F4,$E6,$FE,$F5,$01,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $AE,$B3,$06,$AC,$0C,$AE,$AE,$B3,$06,$80,$B3,$AB<br />
dc.b $0C,$AE,$F8<br />
dc.w z80_ptr(MusCreditsE635)<br />
dc.b $F5,$0B,$80,$04,$80,$60,$F8<br />
dc.w z80_ptr(MusCreditsDA5F)<br />
dc.b $E7,$20,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7<br />
dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7<br />
dc.b $BB,$E7,$BA,$80,$60,$F5,$00,$E8,$06,$E9,$F4,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$80,$C2,$F8<br />
dc.w z80_ptr(MusCreditsE62C)<br />
dc.b $C2,$04,$80,$C2,$80,$0C,$C2,$80,$60,$F5,$08,$E9<br />
dc.b $04,$EC,$02,$E8,$06<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F0,$EC,$FF,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE004)<br />
dc.b $E9,$18,$EC,$02,$B5,$30,$B3,$18,$B5,$0C,$B3,$B1<br />
dc.b $30,$B6,$EC,$FE,$80,$0C,$B8,$80,$B8,$80,$BA,$80<br />
dc.b $BA,$EC,$03,$C4,$18,$C1,$BD,$BF,$0C,$80,$EC,$FC<br />
dc.b $80,$B8,$80,$B8,$80,$BA,$18,$08,$B8,$04,$E9,$F4<br />
dc.b $EC,$01,$F5,$05<br />
- dc.b $80,$60<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
dc.b $80,$0C,$C8,$12,$80,$06,$C8,$80,$C6,$12,$C8,$C6<br />
dc.b $0C,$C1,$18,$C5,$C8,$CB,$80,$0C,$CA,$80,$CA,$12<br />
dc.b $C9,$CA,$06,$80,$09,$E9,$30,$EC,$FC,$F6<br />
dc.w z80_ptr(MusCreditsE770)<br />
dc.b $F2<br />
MusCreditsE618: dc.b $80,$0C,$BD,$06,$12,$18,$C4,$06,$12,$0C,$80,$C2<br />
dc.b $06,$12,$18,$C4,$06,$12,$0C,$E3<br />
MusCreditsE62C: dc.b $80,$60,$80,$0C,$C2,$80,$C2,$80,$E3<br />
MusCreditsE635: dc.b $AC,$0C,$AF,$06,$B3,$0C,$AC,$AC,$06,$80,$AC,$0C<br />
dc.b $AF,$06,$B5,$0C,$AC,$06,$80,$06,$B1,$0C,$B6,$06<br />
dc.b $AE,$0C,$B1,$B3,$B6,$06,$80,$B6,$AA,$0C,$AF,$AF<br />
dc.b $B5,$06,$AC,$0C,$AF,$B2,$B5,$06,$80,$B5,$AE,$0C<br />
dc.b $B2,$E3<br />
MusCred_PSG2: dc.b $80,$30<br />
dc.b $F7,$00,$1A<br />
dc.w z80_ptr(MusCred_PSG2)<br />
- dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7<br />
dc.b $30<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$E9,$0C,$EC,$FD,$F5,$04,$80<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsDFF2)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60<br />
dc.b $F0,$03,$02,$01,$05<br />
dc.b $F5,$0A,$E9,$E8,$EC,$02,$80,$30,$80,$80,$BD,$06<br />
dc.b $BF,$C6,$C2,$1E,$80,$60,$80,$06,$C6,$80,$C6,$C4<br />
dc.b $80,$C4,$80,$C3,$80,$C3,$80,$BF,$03,$80,$BF,$80<br />
dc.b $09,$80,$06,$80,$30,$80,$80,$BD,$06,$BF,$C6,$C2<br />
dc.b $1E,$80,$60,$F4<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$00,$EC,$FE,$E8,$06,$80,$60,$80,$0C,$BF,$80<br />
dc.b $BF,$80,$BF,$80,$BF,$80,$60,$80,$0C,$BF,$80,$BF<br />
dc.b $80,$BF,$04,$80,$BF,$80,$0C,$BF,$80,$60,$EC,$02<br />
- dc.b $F8<br />
dc.w z80_ptr(MusCreditsE618)<br />
dc.b $F7,$00,$02<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$00,$E9,$F4,$EC,$FF,$E9,$E8,$80,$60<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsE246)<br />
dc.b $E9,$18,$EC,$02,$B1,$30,$B0,$18,$B1,$0C,$B0,$AE<br />
dc.b $30,$B1,$EC,$FE,$80,$0C,$B5,$80,$B5,$80,$B6,$80<br />
dc.b $B6,$EC,$03,$80,$B1,$80,$B1,$80,$B1,$80,$B1,$EC<br />
dc.b $FC,$80,$B1,$80,$B1,$80,$B1,$18,$08,$B1,$04,$EC<br />
dc.b $01,$E9,$18,$F5,$05,$E1,$01,$80,$60,$80,$80,$80<br />
dc.b $80,$80,$80,$0C,$CD,$06,$80,$D4,$CD,$80,$0C,$CD<br />
dc.b $06,$80,$D4,$CD,$80,$18,$80,$54,$E9,$24,$EC,$FD<br />
MusCreditsE770: dc.b $F5,$03,$80,$06<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$FF<br />
dc.b $F7,$00,$05<br />
dc.w z80_ptr(-)<br />
- dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$01<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $F2<br />
MusCred_PSG3: dc.b $F3,$E7,$80,$60,$F5,$02<br />
- dc.b $C6,$0C,$0C,$0C,$06,$06,$0C,$0C,$06,$06,$0C<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$1F<br />
dc.w z80_ptr(-)<br />
dc.b $0C,$F5,$03,$C6,$F5,$02<br />
- dc.b $C6,$0C,$06,$06<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $06,$06,$06,$06<br />
dc.b $F7,$01,$04<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0C<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$04,$EC,$02<br />
- dc.b $E8,$03,$C6,$06,$06,$E8,$00,$0C<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $F5,$02,$EC,$FD<br />
- dc.b $80,$0C,$C6,$06,$80,$07,$C6,$06,$80,$11,$C6,$0C<br />
dc.b $80,$06,$C6,$0C,$80,$06,$C6,$80<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$02<br />
- dc.b $C6,$0C,$08,$04<br />
dc.b $F7,$00,$18<br />
dc.w z80_ptr(-)<br />
- dc.b $C6,$0C,$0C,$0C,$08,$04<br />
dc.b $F7,$00,$08<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$F5,$04,$EC,$02<br />
- dc.b $C6,$06,$06,$0C<br />
dc.b $F7,$00,$10<br />
dc.w z80_ptr(-)<br />
- dc.b $80,$30<br />
dc.b $F7,$00,$0A<br />
dc.w z80_ptr(-)<br />
dc.b $80,$60,$EC,$FF<br />
- dc.b $F5,$01,$C6,$0C,$F5,$02,$EC,$FF,$08,$F5,$01,$EC<br />
dc.b $01,$04<br />
dc.b $F7,$00,$27<br />
dc.w z80_ptr(-)<br />
dc.b $EC,$FF,$F5,$04<br />
- dc.b $E8,$03,$C6,$0C,$E8,$0C,$0C<br />
dc.b $F7,$00,$1E<br />
dc.w z80_ptr(-)<br />
dc.b $E8,$03,$C6,$06,$E8,$0E,$12,$E8,$03,$0C,$E8,$0F<br />
dc.b $0C,$F2<br />
MusCred_DAC: dc.b $82,$06,$82,$82,$82,$82,$0C,$06,$0C,$06,$0C,$0C<br />
dc.b $0C<br />
- dc.b $81,$18,$82<br />
dc.b $F7,$00,$0E<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C<br />
- dc.b $82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $EA,$EA,$F8<br />
dc.w z80_ptr(MusCreditsEA6E)<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$82,$06,$82,$82,$82,$81,$0C,$82,$06,$82<br />
dc.b $81,$81,$82,$82,$82,$82<br />
- dc.b $81,$18,$82,$81,$82<br />
dc.b $F7,$00,$07<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$82,$82,$82,$06,$82,$8C,$8C,$8D,$8D<br />
dc.b $8E,$8E,$F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$18,$82,$0C,$81,$18,$82,$0C,$82,$82,$06,$82<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA84)<br />
dc.b $81,$0C,$82,$82,$82,$8D,$06,$8D,$8E,$8E,$82,$06<br />
dc.b $82,$8D,$0C,$82,$0C,$82,$06,$82,$80,$82,$82,$0C<br />
MusCreditsE8E5: dc.b $82,$0C,$82,$82,$06,$82,$8D,$8D<br />
- dc.b $81,$0C,$8F,$06,$90,$82,$0C,$90,$06,$91,$81,$0C<br />
dc.b $8F,$06,$91,$82,$0C,$8F,$06,$91<br />
dc.b $F7,$00,$04<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$8F,$06,$91,$82,$0C,$8F,$06,$91,$8C,$06<br />
dc.b $03,$03,$8D,$06,$8D,$8D,$8E,$8E,$8E,$81,$06,$0C<br />
dc.b $82,$06,$80,$0C,$81,$82,$8E,$82,$06,$82,$82,$82<br />
- dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$12,$8C,$06<br />
dc.b $82,$0C,$83,$06,$81,$80<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$06,$82,$06<br />
dc.b $81,$0C,$06,$82,$0C,$08,$04,$EA,$CD,$82,$30,$82<br />
dc.b $0C,$82,$82,$82,$08,$04,$F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $F8<br />
dc.w z80_ptr(MusCreditsEA9F)<br />
dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$04,$82,$08,$04<br />
dc.b $08,$04,$04,$04,$04,$08,$04,$EA,$C5<br />
- dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82,$0C,$06<br />
dc.b $06,$81,$0C,$82,$06,$82,$82,$82,$8D,$0C,$82,$0C<br />
dc.b $0C,$0C,$06,$06<br />
- dc.b $81,$0C,$81,$82,$80,$81,$81,$82,$83<br />
dc.b $F7,$00,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$82,$82,$82,$82,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $81,$06,$81,$82,$82,$81,$82,$81,$81,$82,$02,$82<br />
dc.b $04,$81,$0C,$06,$82,$0C,$06,$06,$81,$18,$82,$0C<br />
dc.b $81,$81,$18,$82,$81,$06,$81,$12,$82,$0C,$81,$81<br />
dc.b $18,$82,$81,$18,$82,$0C,$81,$81,$18,$82,$81,$06<br />
dc.b $81,$12,$82,$0C,$0C,$06,$06,$06,$06,$0C,$06,$06<br />
dc.b $82,$02,$04,$81,$0C,$06,$0C,$82,$02,$04,$81,$0C<br />
dc.b $06,$0C,$82,$06,$82,$82,$82,$EA,$C0,$81,$0C,$82<br />
dc.b $81,$82,$81,$82,$81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$0F<br />
dc.w z80_ptr(-)<br />
dc.b $81,$08,$82,$04,$0C<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$13<br />
dc.w z80_ptr(-)<br />
dc.b $82,$08,$0C,$04,$81,$0C,$82,$81,$82,$81,$0C,$82<br />
dc.b $81,$06,$80,$02,$82,$82,$82,$09,$82,$03<br />
- dc.b $81,$0C,$82<br />
dc.b $F7,$00,$06<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$06,$80,$02,$82,$82,$82,$09,$82<br />
dc.b $03<br />
dc.b $F7,$01,$03<br />
dc.w z80_ptr(-)<br />
dc.b $81,$0C,$82,$81,$82,$81,$06,$82,$12,$82,$0C,$81<br />
dc.b $F2<br />
MusCreditsEA6E: dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02<br />
dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$83,$E3<br />
MusCreditsEA84: dc.b $81,$18,$82,$0C,$81,$18,$0C,$82,$81,$81,$18,$82<br />
dc.b $0C,$81,$12,$81,$82,$18,$81,$82,$0C,$81,$18,$0C<br />
dc.b $82,$81,$E3<br />
MusCreditsEA9F: dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$0C,$82,$04,$81<br />
dc.b $0C,$82,$81,$81,$08,$0C,$04,$82,$0C,$81,$08,$0C<br />
dc.b $82,$04,$81,$0C,$82,$82,$08,$04,$E3,$81,$06,$80<br />
dc.b $03,$81,$81,$06,$82,$81,$06,$80,$03,$81,$81,$06<br />
dc.b $82,$03,$82,$81,$06,$80,$03,$81,$81,$06,$82,$E3<br />
MusCred_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$01,$1F,$1F,$FF,$0F,$17,$27,$28,$80<br />
dc.b $08,$09,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$25,$0E,$30,$84<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$10,$10,$0B,$0D,$19,$0B,$80,$80<br />
dc.b $08,$0A,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E<br />
dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$24,$13,$2D,$80<br />
dc.b $3D,$01,$51,$21,$01,$12,$14,$14,$0F,$0A,$05,$05<br />
dc.b $05,$00,$00,$00,$00,$2B,$2B,$2B,$1B,$19,$80,$80,$80<br />
dc.b $04,$57,$70,$02,$50,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$06,$00,$0A,$0A,$00,$00,$0F,$0F,$1A,$10,$80,$80<br />
dc.b $35,$01,$13,$01,$00,$1F,$18,$1D,$19,$00,$06,$09<br />
dc.b $0D,$00,$02,$00,$03,$00,$15,$06,$16,$1E,$83,$80,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1A,$16,$88,$88<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$14,$0F,$37,$80<br />
dc.b $3B,$0F,$01,$06,$02,$DF,$1F,$1F,$DF,$0C,$0A,$00<br />
dc.b $03,$0F,$00,$00,$01,$F3,$55,$05,$5C,$22,$22,$20,$80<br />
dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00<br />
dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1C,$14,$84,$80<br />
dc.b $3A,$69,$50,$70,$60,$1C,$1A,$18,$18,$10,$02,$0C<br />
dc.b $09,$08,$06,$06,$03,$F9,$06,$56,$06,$28,$14,$15,$00<br />
dc.b $3D,$00,$02,$01,$01,$4C,$50,$0F,$12,$0C,$00,$02<br />
dc.b $05,$01,$00,$00,$00,$28,$2A,$29,$19,$1A,$06,$00,$00<br />
dc.b $2C,$71,$31,$71,$31,$1F,$1F,$16,$16,$00,$00,$0F<br />
dc.b $0F,$00,$00,$0F,$0F,$00,$00,$FA,$FA,$15,$14,$00,$00<br />
dc.b $18,$37,$31,$32,$31,$9E,$1C,$DC,$9C,$0D,$04,$06<br />
dc.b $01,$08,$03,$0A,$05,$B6,$36,$B6,$28,$2C,$14,$22,$00<br />
dc.b $3D,$01,$02,$02,$02,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$24,$18,$18,$18,$1C,$82,$82,$82<br />
dc.b $32,$71,$33,$0D,$01,$5F,$5F,$99,$94,$05,$05,$05<br />
dc.b $07,$02,$02,$02,$02,$11,$11,$11,$72,$23,$26,$2D,$80<br />
dc.b $3A,$32,$52,$01,$31,$1F,$1F,$1F,$18,$01,$00,$1F<br />
dc.b $00,$00,$00,$0F,$00,$5A,$03,$0F,$1A,$3B,$4F,$30,$00<br />
dc.b $3C,$42,$32,$41,$41,$12,$12,$12,$12,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$06,$06,$08,$08,$24,$24,$08,$08<br />
dc.b $31,$34,$30,$35,$31,$DF,$9F,$DF,$9F,$0C,$0C,$07<br />
dc.b $09,$07,$07,$07,$08,$2F,$1F,$1F,$2F,$17,$14,$32,$80<br />
dc.b $3D,$01,$01,$01,$01,$10,$50,$50,$50,$07,$08,$08<br />
dc.b $08,$01,$00,$00,$00,$20,$1A,$1A,$1A,$19,$84,$84,$84<br />
dc.b $24,$70,$30,$74,$38,$12,$1F,$1F,$1F,$05,$05,$03<br />
dc.b $03,$05,$05,$03,$03,$36,$26,$2C,$2C,$0A,$06,$08,$08<br />
dc.b $3A,$01,$01,$01,$02,$8D,$07,$07,$52,$09,$00,$00<br />
dc.b $03,$01,$02,$02,$00,$5F,$0F,$0F,$2F,$18,$18,$22,$80<br />
dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80<br />
dc.b $3A,$03,$03,$08,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E<br />
dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$17,$20,$28,$80<br />
dc.b $20,$7A,$00,$31,$00,$9F,$DC,$D8,$DF,$10,$04,$0A<br />
dc.b $04,$0F,$08,$08,$08,$5F,$BF,$5F,$BF,$14,$17,$2B,$80<br />
dc.b $3A,$61,$51,$08,$02,$5D,$5D,$5D,$50,$04,$1F,$0F<br />
dc.b $1F,$00,$00,$00,$00,$1F,$0F,$5F,$0F,$22,$22,$1E,$80<br />
dc.b $02,$01,$02,$55,$04,$92,$8E,$8D,$54,$0D,$00,$0C<br />
dc.b $03,$00,$00,$00,$00,$FF,$0F,$2F,$5F,$16,$1D,$2A,$80<br />
dc.b $02,$75,$73,$71,$31,$1F,$96,$58,$9F,$01,$03,$1B<br />
dc.b $08,$01,$01,$04,$05,$FF,$3F,$2F,$2F,$24,$30,$29,$80<br />
dc.b $20,$66,$60,$65,$60,$DF,$9F,$DF,$1F,$00,$09,$06<br />
dc.b $0C,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$1C,$16,$3A,$80<br />
dc.b $0D,$32,$06,$08,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$86,$80,$8D<br />
dc.b $38,$3A,$11,$0A,$02,$D4,$50,$14,$0E,$05,$02,$08<br />
dc.b $88,$00,$00,$00,$00,$99,$09,$09,$1A,$2D,$19,$2C,$86<br />
dc.b $0D,$32,$02,$04,$01,$1F,$19,$19,$19,$0A,$05,$05<br />
dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$8B,$86,$93<br />
dc.b $3A,$20,$60,$23,$01,$1E,$1F,$1F,$1F,$0A,$0B,$0A<br />
dc.b $0A,$05,$0A,$07,$08,$A4,$96,$85,$78,$21,$28,$25,$00<br />
dc.b $3A,$32,$32,$56,$42,$8D,$15,$4F,$52,$06,$07,$08<br />
dc.b $04,$02,$00,$00,$00,$18,$28,$18,$28,$19,$2A,$20,$00<br />
dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F<br />
dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81<br />
dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$19,$13,$37,$80<br />
dc.b $3D,$01,$02,$02,$02,$14,$8C,$0E,$0E,$08,$02,$05<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$1A,$80,$80,$80<br />
; end of Mus_Credits<br />
<br />
; ------------------------------------------------------------------------------------------<br />
; Sound effect pointers<br />
; ------------------------------------------------------------------------------------------<br />
; WARNING the sound driver treats certain sounds specially<br />
; going by the ID of the sound.<br />
; SndID_Ring, SndID_RingLeft, SndID_Gloop, SndID_SpindashRev<br />
; are referenced by the sound driver directly.<br />
; If needed you can change this in s2.sounddriver.asm<br />
<br />
<br />
; NOTE: the exact order of this list determines the priority of each sound, since it determines the sound's SndID.<br />
; a sound can get dropped if a higher-priority sound is already playing.<br />
; the rules for sound priority are currently unknown, but you can generally swap pointer lines around to resolve priority conflicts.<br />
; loc_FEE91: SoundPoint:<br />
SoundIndex:<br />
SndPtr_Jump: rom_ptr_z80 Sound20 ; jumping sound<br />
SndPtr_Checkpoint: rom_ptr_z80 Sound21 ; checkpoint ding-dong sound<br />
SndPtr_SpikeSwitch: rom_ptr_z80 Sound22 ; spike switch sound<br />
SndPtr_Hurt: rom_ptr_z80 Sound23 ; hurt sound<br />
SndPtr_Skidding: rom_ptr_z80 Sound24 ; skidding sound<br />
SndPtr_BlockPush: rom_ptr_z80 Sound25 ; block push sound<br />
SndPtr_HurtBySpikes: rom_ptr_z80 Sound26 ; spiky impalement sound<br />
SndPtr_Sparkle: rom_ptr_z80 Sound27 ; sparkling sound<br />
SndPtr_Beep: rom_ptr_z80 Sound28 ; short beep<br />
SndPtr_Bwoop: rom_ptr_z80 Sound29 ; bwoop<br />
SndPtr_Splash: rom_ptr_z80 Sound2A ; splash sound<br />
SndPtr_Swish: rom_ptr_z80 Sound2B ; swish<br />
SndPtr_BossHit: rom_ptr_z80 Sound2C ; boss hit<br />
SndPtr_InhalingBubble: rom_ptr_z80 Sound2D ; inhaling a bubble<br />
SndPtr_ArrowFiring:<br />
SndPtr_LavaBall: rom_ptr_z80 Sound2E ; arrow firing<br />
SndPtr_Shield: rom_ptr_z80 Sound2F ; shield sound<br />
SndPtr_LaserBeam: rom_ptr_z80 Sound30 ; laser beam<br />
SndPtr_Zap: rom_ptr_z80 Sound31 ; zap<br />
SndPtr_Drown: rom_ptr_z80 Sound32 ; drownage<br />
SndPtr_FireBurn: rom_ptr_z80 Sound33 ; fire + burn<br />
SndPtr_Bumper: rom_ptr_z80 Sound34 ; bumper bing<br />
SndPtr_Ring:<br />
SndPtr_RingRight: rom_ptr_z80 Sound35 ; ring sound<br />
SndPtr_SpikesMove: rom_ptr_z80 Sound36<br />
SndPtr_Rumbling: rom_ptr_z80 Sound37 ; rumbling<br />
rom_ptr_z80 Sound38<br />
SndPtr_Smash: rom_ptr_z80 Sound39 ; smash/breaking<br />
rom_ptr_z80 Sound3A ; nondescript ding<br />
SndPtr_DoorSlam: rom_ptr_z80 Sound3B ; door slamming shut<br />
SndPtr_SpindashRelease: rom_ptr_z80 Sound3C ; spindash unleashed<br />
SndPtr_Hammer: rom_ptr_z80 Sound3D ; slide-thunk<br />
SndPtr_Roll: rom_ptr_z80 Sound3E ; rolling sound<br />
SndPtr_ContinueJingle: rom_ptr_z80 Sound3F ; got continue<br />
SndPtr_CasinoBonus: rom_ptr_z80 Sound40 ; short bonus ding<br />
SndPtr_Explosion: rom_ptr_z80 Sound41 ; badnik bust<br />
SndPtr_WaterWarning: rom_ptr_z80 Sound42 ; warning ding-ding<br />
SndPtr_EnterGiantRing: rom_ptr_z80 Sound43 ; special stage ring flash (unused)<br />
SndPtr_BossExplosion: rom_ptr_z80 Sound44 ; thunk<br />
SndPtr_TallyEnd: rom_ptr_z80 Sound45 ; cha-ching<br />
SndPtr_RingSpill: rom_ptr_z80 Sound46 ; losing rings<br />
rom_ptr_z80 Sound47 ; chain pull chink-chink<br />
SndPtr_Flamethrower: rom_ptr_z80 Sound48 ; flamethrower<br />
SndPtr_Bonus: rom_ptr_z80 Sound49 ; bonus pwoieeew (unused)<br />
SndPtr_SpecStageEntry: rom_ptr_z80 Sound4A ; special stage entry<br />
SndPtr_SlowSmash: rom_ptr_z80 Sound4B ; slower smash/crumble<br />
SndPtr_Spring: rom_ptr_z80 Sound4C ; spring boing<br />
SndPtr_Blip: rom_ptr_z80 Sound4D ; selection blip<br />
SndPtr_RingLeft: rom_ptr_z80 Sound4E ; another ring sound (only plays in the left speaker?)<br />
SndPtr_Signpost: rom_ptr_z80 Sound4F ; signpost spin sound<br />
SndPtr_CNZBossZap: rom_ptr_z80 Sound50 ; mosquito zapper<br />
rom_ptr_z80 Sound51<br />
rom_ptr_z80 Sound52<br />
SndPtr_Signpost2P: rom_ptr_z80 Sound53<br />
SndPtr_OOZLidPop: rom_ptr_z80 Sound54 ; OOZ lid pop sound<br />
SndPtr_SlidingSpike: rom_ptr_z80 Sound55<br />
SndPtr_CNZElevator: rom_ptr_z80 Sound56<br />
SndPtr_PlatformKnock: rom_ptr_z80 Sound57<br />
SndPtr_BonusBumper: rom_ptr_z80 Sound58 ; CNZ bonusy bumper sound<br />
SndPtr_LargeBumper: rom_ptr_z80 Sound59 ; CNZ baaang bumper sound<br />
SndPtr_Gloop: rom_ptr_z80 Sound5A ; CNZ gloop / water droplet sound<br />
SndPtr_PreArrowFiring: rom_ptr_z80 Sound5B<br />
SndPtr_Fire: rom_ptr_z80 Sound5C<br />
SndPtr_ArrowStick: rom_ptr_z80 Sound5D ; chain clink<br />
SndPtr_Helicopter:<br />
SndPtr_WingFortress: rom_ptr_z80 Sound5E ; helicopter<br />
SndPtr_SuperTransform: rom_ptr_z80 Sound5F<br />
SndPtr_SpindashRev: rom_ptr_z80 Sound60 ; spindash charge<br />
SndPtr_Rumbling2: rom_ptr_z80 Sound61 ; rumbling<br />
SndPtr_CNZLaunch: rom_ptr_z80 Sound62<br />
SndPtr_Flipper: rom_ptr_z80 Sound63 ; CNZ blooing bumper<br />
SndPtr_HTZLiftClick: rom_ptr_z80 Sound64 ; HTZ track click sound<br />
SndPtr_Leaves: rom_ptr_z80 Sound65 ; kicking up leaves sound<br />
SndPtr_MegaMackDrop: rom_ptr_z80 Sound66 ; leaf splash?<br />
SndPtr_DrawbridgeMove: rom_ptr_z80 Sound67<br />
SndPtr_QuickDoorSlam: rom_ptr_z80 Sound68 ; door slamming quickly (seems unused)<br />
SndPtr_DrawbridgeDown: rom_ptr_z80 Sound69<br />
SndPtr_LaserBurst: rom_ptr_z80 Sound6A ; robotic laser burst<br />
SndPtr_Scatter:<br />
SndPtr_LaserFloor: rom_ptr_z80 Sound6B ; scatter<br />
SndPtr_Teleport: rom_ptr_z80 Sound6C<br />
SndPtr_Error: rom_ptr_z80 Sound6D ; error sound<br />
SndPtr_MechaSonicBuzz: rom_ptr_z80 Sound6E ; silver sonic buzz saw<br />
SndPtr_LargeLaser: rom_ptr_z80 Sound6F<br />
SndPtr_OilSlide: rom_ptr_z80 Sound70<br />
SndPtr__End:<br />
<br />
; There are many non-relative pointers in these sound effects,<br />
; so the sounds shouldn't simply be BINCLUDE'd.<br />
; They could be included as separate .asm files using "include" instead of "binclude",<br />
; but I wanted to minimize the number of included asm files.<br />
<br />
; some comments on what the various script commands do (after the header):<br />
; 0x00-0x7F sets the note duration (of the previous note and following notes)<br />
; 0x81-0xDF plays a note (the valid range may be smaller for PSG or DAC)<br />
; 0x80 plays silence<br />
; 0xE0-0xFF does special things. I won't list them here... search for "Coordination flags" sonic 2.<br />
<br />
; the FM voices (poorly named "ssamp" or "samples" below)<br />
; are 25 bytes each and go directly to YM2612 registers.<br />
; they can be hard to edit (there's an art to it)<br />
; but search for sonic "Voice editing" for more info if you want to try.<br />
<br />
; jumping sound<br />
Sound20: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$F400<br />
+ dc.b $F5,$00,$9E,$05,$F0,$02,$01,$F8,$65,$A3,$15,$F2<br />
<br />
; checkpoint ding-dong sound<br />
Sound21: dc.w z80_ptr(ssamp21),$0101<br />
dc.w $8005,z80_ptr(+),$0001<br />
ssamp21: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
+ dc.b $EF,$00,$BD,$06,$BA,$16,$F2<br />
<br />
; spike switch sound<br />
Sound22: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C0,$04,$CA,$04<br />
- dc.b $C0,$01,$EC<br />
dc.w $01F7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; hurt sound<br />
Sound23: dc.w z80_ptr(ssamp23),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B0,$07,$E7,$AD<br />
- dc.b $01,$E6<br />
dc.w $01F7,$002F,z80_ptr(-)<br />
dc.b $F2<br />
ssamp23: dc.b $30,$30,$30,$30,$30,$9E,$DC,$D8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$14,$14,$3C,$80<br />
<br />
; skidding sound<br />
Sound24: dc.w $0000,$0102 ; sound header... no sample and 2 script entries<br />
dc.w $80A0,z80_ptr(+),$F400 ; entry 1 header<br />
dc.w $80C0,z80_ptr(++),$F400 ; entry 2 header<br />
+ dc.b $F5,$00,$AF,$01,$80,$AF,$80,$03 ; script entry 1<br />
- dc.b $AF,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 1 end<br />
+ dc.b $F5,$00,$80,$01,$AD,$80,$AD,$80,$03 ; script entry 2<br />
- dc.b $AD,$01,$80<br />
dc.w $01F7,$000B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script 2 end<br />
<br />
; block push sound<br />
Sound25: dc.w z80_ptr(ssamp25),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$01,$8B,$0A,$80,$02,$F2<br />
ssamp25: dc.b $FA,$21,$10,$30,$32,$2F,$2F,$1F,$2F,$05,$09,$08<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
; spiky impalement sound<br />
Sound26: dc.w z80_ptr(ssamp26),$0101<br />
dc.w $8005,z80_ptr(+),$F200<br />
+ dc.b $EF,$00,$F0,$01,$01,$10,$FF,$CF,$05,$D7,$25,$F2<br />
ssamp26: dc.b $3B,$3C,$30,$39,$31,$DF,$1F,$1F,$DF,$04,$04,$05<br />
dc.b $01,$04,$04,$04,$02,$FF,$1F,$0F,$AF,$29,$0F,$20,$80<br />
<br />
; sparkling sound<br />
Sound27: dc.w z80_ptr(ssamp27),$0101<br />
dc.w $8004,z80_ptr(+),$0C1C<br />
+ dc.b $EF,$00,$C1,$05,$C4,$05,$C9,$2B,$F2<br />
ssamp27: dc.b $07,$73,$33,$33,$73,$0F,$19,$14,$1A,$0A,$0A,$0A<br />
dc.b $0A,$0A,$0A,$0A,$0A,$57,$57,$57,$57,$00,$00,$00,$00<br />
<br />
; short beep<br />
Sound28: dc.w $0000,$0101<br />
dc.w $8080,z80_ptr(+),$E803<br />
+ dc.b $F5,$04,$CB,$04,$F2<br />
<br />
; bwoop<br />
Sound29: dc.w $0000,$0101<br />
dc.w $80A0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$E6,$35,$8E,$06,$F2<br />
<br />
; splash sound<br />
Sound2A: dc.w z80_ptr(ssamp2A),$0102<br />
dc.w $80C0,z80_ptr(+),$0000<br />
dc.w $8005,z80_ptr(++),$0003<br />
+ dc.b $F5,$00,$F3,$E7,$C2,$05,$C6,$05,$E7<br />
- dc.b $07,$EC,$01<br />
dc.w $E7F7,$000F,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$A6,$14,$F2<br />
ssamp2A: dc.b $00,$00,$02,$03,$00,$D9,$1F,$DF,$1F,$12,$14,$11<br />
dc.b $0F,$0A,$0A,$00,$0D,$FF,$FF,$FF,$FF,$22,$27,$07,$80<br />
<br />
; swish<br />
Sound2B: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$C6,$03,$80,$03,$C6,$01,$E7<br />
- dc.b $01,$EC,$01<br />
dc.w $E7F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; boss hit<br />
Sound2C: dc.w z80_ptr(smashsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$0C,$01<br />
- dc.b $81,$0A,$E6<br />
dc.w $10F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
smashsamp: dc.b $F9,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
<br />
; inhaling a bubble<br />
Sound2D: dc.w z80_ptr(ssamp2D),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$21,$6E,$A6,$07<br />
dc.b $80,$06,$F0,$01,$01,$44,$1E,$AD,$08,$F2<br />
ssamp2D: dc.b $35,$05,$08,$09,$07,$1E,$0D,$0D,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$1F,$2F,$1F,$15,$12,$12,$80<br />
<br />
; arrow firing<br />
Sound2E: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$C6,$01,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp2E: dc.b $FA,$02,$00,$03,$05,$12,$0F,$11,$13,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$2F,$0E,$1A,$80<br />
<br />
; shield sound<br />
Sound2F: dc.w z80_ptr(ssamp2F),$0101<br />
dc.w $8005,z80_ptr(+),$0C00<br />
+ dc.b $EF,$00,$80,$01,$A3,$05,$E7,$A4,$26,$F2<br />
ssamp2F: dc.b $30,$30,$30,$30,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$04,$14,$2C,$80<br />
<br />
; laser beam<br />
Sound30: dc.w z80_ptr(ssamp30),$0101 ; sound header... a voice and 1 script entry<br />
dc.w $8005,z80_ptr(+),$FB05 ; script entry header<br />
+ dc.b $EF,$00,$DF,$7F ; script start<br />
- dc.b $DF,$02,$E6 ; script continued<br />
dc.w $01F7,$001B,z80_ptr(-) ; loopback<br />
dc.b $F2 ; script end<br />
ssamp30: dc.b $83,$1F,$1F,$15,$1F,$1F,$1F,$1F,$1F,$00,$00,$00 ; voice<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$0B,$01,$16,$82 ; (fixed length)<br />
<br />
; zap<br />
Sound31: dc.w z80_ptr(ssamp31),$0101<br />
dc.w $8005,z80_ptr(+),$FB02<br />
+ dc.b $EF,$00,$B3,$05,$80,$01,$B3,$09,$F2<br />
ssamp31: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$05,$34,$10,$87<br />
<br />
; drownage<br />
Sound32: dc.w z80_ptr(ssamp32),$0102<br />
dc.w $8004,z80_ptr(++),$0C04<br />
dc.w $8005,z80_ptr(+),$0E02<br />
+ dc.b $EF,$00,$F0,$01,$01,$83,$0C<br />
- dc.b $8A,$05,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $80,$06,$EF,$00,$F0,$01,$01,$6F,$0E<br />
- dc.b $8D,$04,$05,$E6<br />
dc.w $03F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp32: dc.b $35,$14,$04,$1A,$09,$0E,$11,$10,$0E,$0C,$03,$15<br />
dc.b $06,$16,$09,$0E,$10,$2F,$4F,$2F,$4F,$2F,$12,$12,$80<br />
<br />
; fire + burn<br />
Sound33: dc.w z80_ptr(ssamp2E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2<br />
+ dc.b $F5,$00,$80,$0B,$F3,$E7,$A7,$25,$E7<br />
- dc.b $02,$EC,$01<br />
dc.w $E7F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; bumper bing<br />
Sound34: dc.w z80_ptr(ssamp34),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $8002,z80_ptr(+++),$0002<br />
+ dc.b $EF,$00,$F6<br />
dc.w z80_ptr(Sound34_3)<br />
+ dc.b $EF,$00,$E1,$07,$80,$01<br />
Sound34_3:<br />
dc.b $BA,$20,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
ssamp34: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$1F,$2B,$80,$80<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; ring sound<br />
Sound35: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8005,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$40,$C1,$05,$C4,$05,$C9,$1B,$F2<br />
<br />
<br />
Sound36: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C1,$07<br />
- dc.b $D0,$01,$EC<br />
dc.w $01F7,$000C,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; rumbling<br />
Sound37: dc.w z80_ptr(ssamp37),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$20,$08<br />
- dc.b $8B<br />
dc.w $0AF7,$0008,z80_ptr(-)<br />
- dc.b $8B,$10,$E6<br />
dc.w $03F7,$0009,z80_ptr(-)<br />
dc.b $F2<br />
ssamp37: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80<br />
<br />
<br />
Sound38: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$B4,$08<br />
- dc.b $B0,$02,$EC<br />
dc.w $01F7,$0003,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; smash/breaking<br />
Sound39: dc.w z80_ptr(smashsamp),$0104<br />
dc.w $8002,z80_ptr(+),$1000<br />
dc.w $8004,z80_ptr(+++),$0000<br />
dc.w $8005,z80_ptr(++),$1000<br />
dc.w $80C0,z80_ptr(s39s4),$0000<br />
+ dc.b $E0,$40,$80,$02,$F6<br />
dc.w z80_ptr(++)<br />
+ dc.b $E0,$80,$80,$01<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
s39s4: dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; nondescript ding<br />
Sound3A: dc.w z80_ptr(ssamp3A),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$AE,$08,$F2<br />
ssamp3A: dc.b $1C,$2E,$0F,$02,$02,$1F,$1F,$1F,$1F,$18,$14,$0F<br />
dc.b $0E,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$20,$1B,$80,$80<br />
<br />
; door slamming shut<br />
Sound3B: dc.w z80_ptr(ssamp3B),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$80,$A0,$06,$F2<br />
ssamp3B: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; spindash unleashed<br />
Sound3C: dc.w z80_ptr(ssamp3C),$0102<br />
dc.w $8005,z80_ptr(+),$9000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$F2<br />
+ dc.b $F5,$07,$80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$4F,$F2<br />
ssamp3C: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
<br />
; slide-thunk<br />
Sound3D: dc.w z80_ptr(ssamp3D),$0102<br />
dc.w $8005,z80_ptr(+),$100A<br />
dc.w $8004,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$60,$01,$A7,$08,$F2<br />
+ dc.b $80,$08,$EF,$01,$84,$22,$F2<br />
ssamp3D: dc.b $FA,$21,$19,$3A,$30,$1F,$1F,$1F,$1F,$05,$09,$18<br />
dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80<br />
dc.b $FA,$31,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$1F,$2F,$2F,$0D,$01,$00,$80<br />
<br />
; rolling sound<br />
Sound3E: dc.w z80_ptr(ssamp3E),$0101<br />
dc.w $8004,z80_ptr(+),$0C05<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$09,$FF,$CA,$25,$F4<br />
- dc.b $E7,$E6,$01,$D0<br />
dc.w $02F7,$002A,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3E: dc.b $3C,$00,$02,$44,$02,$1F,$1F,$1F,$15,$00,$00,$1F<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0D,$28,$00,$00<br />
<br />
; got continue<br />
Sound3F: dc.w z80_ptr(ssamp3F),$0103<br />
dc.w $8002,z80_ptr(+),$F406<br />
dc.w $8004,z80_ptr(++),$F406<br />
dc.w $8005,z80_ptr(+++),$F406<br />
+ dc.b $EF,$00,$C9,$07,$CD,$D0,$CB,$CE,$D2,$CD,$D0,$D4,$CE,$D2,$D5<br />
- dc.b $D0,$07,$D4,$D7,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$80,$07,$CD,$15,$CE,$D0,$D2<br />
- dc.b $D4,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $EF,$00,$E1,$01,$C9,$15,$CB,$CD,$CE<br />
- dc.b $D0,$15,$E6<br />
dc.w $05F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp3F: dc.b $14,$25,$36,$33,$11,$1F,$1F,$1F,$1F,$15,$1C,$18<br />
dc.b $13,$0B,$0D,$08,$09,$0F,$8F,$9F,$0F,$24,$0A,$05,$80<br />
<br />
; short bonus ding<br />
Sound40: dc.w z80_ptr(ssamp3F),$0102<br />
dc.w $8005,z80_ptr(++),$0008<br />
dc.w $8004,z80_ptr(+),$0008<br />
+ dc.b $E1,$03,$80,$02<br />
+ dc.b $EF,$00,$C4,$16,$F2<br />
<br />
; badnik bust<br />
Sound41: dc.w z80_ptr(ssamp41),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0002<br />
+ dc.b $F0,$03,$01,$72,$0B,$EF,$00,$BA,$16,$F2<br />
+ dc.b $F5,$01,$F3,$E7,$B0,$1B,$F2<br />
ssamp41: dc.b $3C,$0F,$03,$01,$01,$1F,$1F,$1F,$1F,$19,$19,$12<br />
dc.b $0E,$05,$00,$12,$0F,$0F,$FF,$7F,$FF,$00,$00,$80,$80<br />
<br />
; warning ding-ding<br />
Sound42: dc.w z80_ptr(ssamp3F),$0101<br />
dc.w $8005,z80_ptr(+),$0C08<br />
+ dc.b $EF,$00,$BA,$08,$BA,$25,$F2<br />
<br />
; special stage ring flash (unused)<br />
Sound43: dc.w z80_ptr(ssamp43),$0102<br />
dc.w $8004,z80_ptr(+),$0C00<br />
dc.w $8005,z80_ptr(++),$0013<br />
+ dc.b $EF,$01,$80,$01,$A2,$08,$EF,$00,$E7,$AD,$26,$F2<br />
+ dc.b $EF,$02,$F0,$06,$01,$03,$FF,$80,$0A<br />
- dc.b $C3<br />
dc.w $06F7,$0005,z80_ptr(-)<br />
dc.b $C3,$17,$F2<br />
ssamp43: dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$1C,$80<br />
dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A<br />
dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$2C,$80<br />
dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$13,$13,$81,$88<br />
<br />
; thunk<br />
Sound44: dc.w z80_ptr(ssamp44),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$8A,$22,$F2<br />
ssamp44: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18<br />
dc.b $10,$0B,$10,$1F,$10,$1F,$4F,$2F,$2F,$0D,$04,$07,$80<br />
<br />
; cha-ching<br />
Sound45: dc.w z80_ptr(ssamp45),$0103<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $8004,z80_ptr(++),$0000<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$8A,$08,$80,$02,$8A,$08,$F2<br />
+ dc.b $EF,$01,$80,$12,$C6,$55,$F2<br />
+ dc.b $F5,$02,$F3,$E7,$80,$02,$C2,$05,$C4,$04,$C2,$05,$C4,$04,$F2<br />
ssamp45: dc.b $3B,$03,$02,$02,$06,$18,$1A,$1A,$96,$17,$0A,$0E<br />
dc.b $10,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$39,$28,$80<br />
ringsamp: dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A<br />
dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$23,$80,$80<br />
<br />
; losing rings (scatter)<br />
Sound46: dc.w z80_ptr(ringsamp),$0102<br />
dc.w $8004,z80_ptr(+),$0005<br />
dc.w $8005,z80_ptr(++),$0008<br />
+ dc.b $EF,$00,$C6,$02,$05,$05,$05,$05,$05,$05,$3A,$F2<br />
+ dc.b $EF,$00,$80,$02,$C4,$02,$05,$15,$02,$05,$32,$F2<br />
<br />
; chain pull chink-chink<br />
Sound47: dc.w z80_ptr(ssamp47),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$BE,$05,$80,$04,$BE,$04,$80,$04,$F2<br />
ssamp47: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; flamethrower<br />
Sound48: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$25,$F2<br />
<br />
; bonus pwoieeew (unused)<br />
Sound49: dc.w z80_ptr(ssamp49),$0101<br />
dc.w $8005,z80_ptr(+),$0E00<br />
+ dc.b $EF,$00,$F0,$01,$01,$33,$18,$B9,$1A,$F2<br />
ssamp49: dc.b $3B,$0A,$05,$31,$02,$5F,$5F,$5F,$5F,$04,$16,$14<br />
dc.b $0C,$00,$00,$04,$00,$1F,$D8,$6F,$FF,$03,$00,$25,$80<br />
<br />
; special stage entry<br />
Sound4A: dc.w z80_ptr(ssamp4A),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$F0,$01,$01,$5B,$02,$CC,$65,$F2<br />
ssamp4A: dc.b $20,$36,$30,$35,$31,$41,$3B,$49,$4B,$09,$09,$06<br />
dc.b $08,$01,$02,$03,$A9,$0F,$0F,$0F,$0F,$29,$23,$27,$80<br />
<br />
; slower smash/crumble<br />
Sound4B: dc.w z80_ptr(smashsamp),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$F0,$03,$01,$20,$04<br />
- dc.b $81,$18,$E6<br />
dc.w $0AF7,$0006,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F0,$01,$01,$0F,$05,$F3,$E7<br />
- dc.b $B0,$18,$E7,$EC<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
<br />
; spring boing<br />
Sound4C: dc.w z80_ptr(ssamp4C),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$80,$01,$F0,$03,$01,$5D,$0F,$B0,$0C,$F4<br />
- dc.b $E7,$E6,$02,$BD<br />
dc.w $02F7,$0019,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4C: dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06<br />
dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$16,$13,$30,$80<br />
<br />
; selection blip<br />
Sound4D: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $BB,$02,$F2<br />
<br />
; another ring sound (only plays in the left speaker?)<br />
Sound4E: dc.w z80_ptr(ringsamp),$0101<br />
dc.w $8004,z80_ptr(+),$0005<br />
+ dc.b $EF,$00,$E0,$80,$C1,$04,$C4,$05,$C9,$1B,$F2<br />
<br />
; signpost spin sound<br />
Sound4F: dc.w z80_ptr(ssamp4F),$0102<br />
dc.w $8004,z80_ptr(+),$2703<br />
dc.w $8005,z80_ptr(++),$2700<br />
+ dc.b $80,$04<br />
+ dc.b $EF,$00<br />
- dc.b $B4,$05,$E6<br />
dc.w $02F7,$0015,z80_ptr(-)<br />
dc.b $F2<br />
ssamp4F: dc.b $F4,$06,$0F,$04,$0E,$1F,$1F,$1F,$1F,$00,$0B,$00<br />
dc.b $0B,$00,$05,$00,$08,$0F,$FF,$0F,$FF,$0C,$03,$8B,$80<br />
<br />
; mosquito zapper<br />
Sound50: dc.w z80_ptr(ssamp50),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$B3,$04,$80,$01<br />
- dc.b $B4,$04,$80<br />
dc.w $01F7,$0004,z80_ptr(-)<br />
dc.b $F2<br />
ssamp50: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$06,$34,$10,$87<br />
<br />
<br />
Sound51: dc.w z80_ptr(ssamp51),$0102<br />
dc.w $80C0,z80_ptr(+),$0001<br />
dc.w $8005,z80_ptr(++),$000B<br />
+ dc.b $F5,$02,$F3,$E4,$B0,$04,$85,$02,$F2<br />
+ dc.b $EF,$00,$E8,$04,$A5,$06,$F2<br />
ssamp51: dc.b $3C,$02,$01,$00,$01,$1F,$1F,$1F,$1F,$00,$19,$0E<br />
dc.b $10,$00,$00,$0C,$0F,$0F,$FF,$EF,$FF,$05,$00,$80,$80<br />
<br />
<br />
Sound52: dc.w z80_ptr(ssamp52),$0101<br />
dc.w $8005,z80_ptr(+),$0002<br />
+ dc.b $F0,$01,$01,$2A,$07,$EF,$00<br />
- dc.b $A5,$03<br />
dc.w $E7F7,$0013,z80_ptr(-)<br />
- dc.b $A5,$03,$E7,$E6<br />
dc.w $02F7,$0013,z80_ptr(-)<br />
dc.b $F2<br />
ssamp52: dc.b $28,$21,$21,$21,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$29,$20,$29,$80<br />
<br />
<br />
Sound53: dc.w z80_ptr(ssamp53),$0101<br />
dc.w $8005,z80_ptr(+),$F503<br />
+ dc.b $EF,$00,$F0,$01,$01,$46,$09,$A7,$14,$E7,$14,$E7,$E6,$04<br />
dc.b $14,$E7,$E6,$04,$14,$E7,$E6,$04,$0A,$E7,$E6,$04,$0A,$F2<br />
ssamp53: dc.b $07,$0A,$0C,$0C,$0C,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$2A,$0F,$0F,$80<br />
<br />
; OOZ lid pop sound<br />
Sound54: dc.w z80_ptr(ssamp54),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0006<br />
+ dc.b $EF,$00,$B6,$15,$F2<br />
+ dc.b $F3,$E7,$F5,$04,$C6,$03,$E7,$C5,$E7<br />
dc.b $C4,$E7,$C3,$E7,$C2,$E7,$C1,$E7,$C0,$F2<br />
ssamp54: dc.b $07,$03,$02,$03,$00,$FF,$6F,$6F,$3F,$12,$14,$11<br />
dc.b $0E,$1A,$0A,$03,$0D,$FF,$FF,$FF,$FF,$03,$07,$07,$80<br />
<br />
<br />
Sound55: dc.w z80_ptr(ssamp55),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$AA,$07,$B6,$15,$F2<br />
ssamp55: dc.b $42,$20,$0E,$0F,$0F,$1F,$1F,$1F,$1F,$1F,$1F,$1F<br />
dc.b $1F,$0F,$0E,$0F,$0E,$0F,$0F,$0F,$0F,$2E,$80,$20,$80<br />
<br />
<br />
Sound56: dc.w z80_ptr(ssamp56),$0101<br />
dc.w $8005,z80_ptr(+),$100E<br />
+ dc.b $EF,$00,$F0,$01,$01,$1E,$FF,$8F,$1C,$F4<br />
- dc.b $E7,$9A<br />
dc.w $05F7,$0009,z80_ptr(-)<br />
- dc.b $E7,$9A,$04,$E6,$02,$E7,$9A,$04,$E6<br />
dc.w $02F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
ssamp56: dc.b $0D,$06,$00,$00,$E5,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$27,$80,$80,$80<br />
<br />
<br />
Sound57: dc.w z80_ptr(ssamp57),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$CA,$15,$F2<br />
ssamp57: dc.b $04,$09,$70,$00,$30,$1C,$1F,$DF,$1F,$15,$12,$0B<br />
dc.b $0F,$0C,$0D,$00,$0D,$07,$2F,$FA,$FA,$00,$29,$00,$00<br />
<br />
; CNZ bonusy bumper sound<br />
Sound58: dc.w z80_ptr(ssamp58),$0101<br />
dc.w $8005,z80_ptr(+),$0007<br />
+ dc.b $EF,$00,$B3,$06,$B3,$15,$F2<br />
ssamp58: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11<br />
dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80<br />
<br />
; CNZ baaang bumper sound<br />
Sound59: dc.w z80_ptr(ssamp59),$0103<br />
dc.w $8004,z80_ptr(+),$0000<br />
dc.w $8002,z80_ptr(++),$0002<br />
dc.w $8005,z80_ptr(+++),$0000<br />
+ dc.b $EF,$00,$E1,$0C,$B5,$14,$F2<br />
+ dc.b $EF,$01,$9A,$03,$F2<br />
+ dc.b $EF,$00,$B6,$14,$F2<br />
ssamp59: dc.b $32,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $0D,$00,$01,$01,$0C,$00,$23,$C3,$F6,$08,$07,$1C,$03<br />
dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C<br />
dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80<br />
<br />
; CNZ gloop / water droplet sound<br />
Sound5A: dc.w z80_ptr(ssamp5A),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$F0,$01,$01,$7F,$F1,$AA,$0A,$F2<br />
ssamp5A: dc.b $47,$03,$02,$02,$04,$5F,$5F,$5F,$5F,$0E,$1A,$11<br />
dc.b $0A,$09,$0A,$0A,$0A,$4F,$3F,$3F,$3F,$7F,$80,$80,$A3<br />
<br />
<br />
Sound5B: dc.w z80_ptr(ssamp5B),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$80,$02,$A5,$01,$E7<br />
- dc.b $01,$E7,$E6<br />
dc.w $02F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5B: dc.b $38,$0F,$0F,$0F,$0F,$1F,$1F,$1F,$0E,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$1F,$00,$00,$00,$80<br />
<br />
<br />
Sound5C: dc.w z80_ptr(ssamp5C),$0102<br />
dc.w $8004,z80_ptr(+),$000E<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$85,$40<br />
- dc.b $E7,$04,$E6<br />
dc.w $04F7,$000A,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F5,$00,$F3,$E7,$A7,$40<br />
- dc.b $E7,$08,$E6<br />
dc.w $01F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5C: dc.b $FA,$12,$01,$01,$01,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$81,$8E,$14,$80<br />
<br />
; chain clink<br />
Sound5D: dc.w z80_ptr(ssamp5D),$0101<br />
dc.w $8005,z80_ptr(+),$0000<br />
+ dc.b $EF,$00,$C0,$04,$F2<br />
ssamp5D: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15<br />
dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80<br />
<br />
; helicopter<br />
Sound5E: dc.w z80_ptr(ssamp5E),$0101<br />
dc.w $8002,z80_ptr(+),$1405<br />
+ dc.b $EF,$00<br />
- dc.b $95,$02,$95<br />
dc.w $01F7,$0013,z80_ptr(-)<br />
- dc.b $95,$02,$95,$01,$E6<br />
dc.w $01F7,$001B,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5E: dc.b $35,$30,$44,$40,$51,$1F,$1F,$1F,$1F,$10,$00,$13<br />
dc.b $15,$1F,$00,$1F,$1A,$7F,$0F,$7F,$5F,$02,$A8,$80,$80<br />
<br />
<br />
Sound5F: dc.w z80_ptr(ssamp5F),$0103<br />
dc.w $8005,z80_ptr(s5Fs1),$0000<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
s5Fs1 dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$E6,$0A,$80<br />
dc.b $06,$EF,$01,$F0,$01,$01,$11,$FF,$A2,$28<br />
- dc.b $E7,$03,$E6<br />
dc.w $03F7,$0005,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs2 dc.b $80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$1D<br />
- dc.b $E7,$07,$EC<br />
dc.w $01F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
s5Fs3 dc.b $80,$16,$F5,$03<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $FFF7,$0005,z80_ptr(-)<br />
- dc.b $BF,$04,$C1,$C3,$EC,$01,$E9<br />
dc.w $01F7,$0007,z80_ptr(-)<br />
dc.b $F2<br />
ssamp5F: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C<br />
dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E<br />
dc.b $3A,$70,$30,$04,$01,$0F,$14,$19,$16,$08,$0A,$0B<br />
dc.b $05,$03,$03,$03,$05,$1F,$6F,$8F,$5F,$1F,$22,$1F,$80<br />
<br />
; spindash charge<br />
Sound60: dc.w z80_ptr(ssamp60),$0101<br />
dc.w $8005,z80_ptr(+),$FE00<br />
+ dc.b $EF,$00,$F0,$00,$01,$20,$F6,$C4,$16,$E7,$F4,$D0,$18,$E7<br />
- dc.b $04,$E7,$E6<br />
dc.w $03F7,$0010,z80_ptr(-)<br />
dc.b $F2<br />
ssamp60: dc.b $34,$00,$03,$0C,$09,$9F,$8C,$8F,$95,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$00,$1D,$00,$00<br />
<br />
; rumbling<br />
Sound61: dc.w z80_ptr(ssamp61),$0101<br />
dc.w $8004,z80_ptr(+),$0004<br />
+ dc.b $80,$01,$EF,$00,$F0,$00,$01,$70,$06,$82,$06,$85,$08,$83<br />
dc.b $01,$82,$05,$86,$06,$89,$03,$82,$08,$88,$04,$82,$06,$E6<br />
dc.b $02,$85,$08,$E6,$02,$83,$01,$E6,$02,$82,$05,$E6,$02,$86<br />
dc.b $06,$E6,$02,$89,$03,$E6,$02,$82,$08,$E6,$02,$88,$04,$E6,$02,$F2<br />
ssamp61: dc.b $32,$30,$30,$50,$30,$1F,$0E,$19,$0E,$07,$12,$15<br />
dc.b $09,$0A,$09,$1D,$06,$E8,$03,$0A,$17,$07,$00,$00,$00<br />
<br />
<br />
Sound62: dc.w z80_ptr(ssamp62),$0101<br />
dc.w $8005,z80_ptr(+),$FF00<br />
+ dc.b $EF,$00,$A6,$05,$F0,$01,$01,$E7,$40<br />
- dc.b $C4,$02,$E7,$E6<br />
dc.w $01F7,$0012,z80_ptr(-)<br />
dc.b $F2<br />
ssamp62: dc.b $34,$0C,$10,$73,$0C,$AF,$AC,$FF,$D5,$06,$00,$02<br />
dc.b $01,$02,$0A,$04,$08,$BF,$BF,$BF,$BF,$00,$08,$80,$80<br />
<br />
; CNZ blooing bumper<br />
Sound63: dc.w z80_ptr(ssamp63),$0101<br />
dc.w $8005,z80_ptr(+),$0907<br />
+ dc.b $EF,$00,$F0,$01,$01,$04,$56,$92,$03,$9A,$25,$F2<br />
ssamp63: dc.b $3D,$12,$10,$77,$30,$5F,$5F,$5F,$5F,$0F,$0A,$00<br />
dc.b $01,$0A,$0A,$0D,$0D,$4F,$0F,$0F,$0F,$13,$80,$80,$80<br />
<br />
; HTZ track click sound<br />
Sound64: dc.w z80_ptr(ssamp64),$0101<br />
dc.w $8005,z80_ptr(+),$1100<br />
+ dc.b $EF,$00,$C7,$02,$F2<br />
ssamp64: dc.b $24,$2A,$02,$05,$01,$1A,$1F,$10,$1F,$0F,$1F,$1F<br />
dc.b $1F,$0C,$0D,$11,$11,$0C,$09,$09,$0F,$0E,$04,$80,$80<br />
<br />
; kicking up leaves sound<br />
Sound65: dc.w z80_ptr(ssamp65),$0101<br />
dc.w $80C0,z80_ptr(+),$F800<br />
+ dc.b $F5,$03,$F3,$E7,$CE,$03,$F5,$06,$CE,$04,$EC<br />
dc.b $02,$CE,$02,$F5,$03,$EC,$FE,$CE,$08,$CE,$18,$F2<br />
ssamp65: ; uhm... apparently they forgot to null out the pointer to here.<br />
; luckily, sound 65 doesn't really use its sample<br />
<br />
; leaf splash?<br />
Sound66: dc.w z80_ptr(ssamp66),$0102<br />
dc.w $8005,z80_ptr(++),$EE08<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$F5,$09,$C6,$36,$F2<br />
+ dc.b $EF,$00,$80,$01,$92,$02,$02,$02,$30,$F2<br />
ssamp66: dc.b $32,$33,$17,$34,$13,$0F,$0D,$1B,$17,$00,$04,$02<br />
dc.b $0B,$08,$00,$08,$09,$6F,$5F,$4F,$6F,$05,$00,$00,$80<br />
<br />
<br />
Sound67: dc.w z80_ptr(ssamp67),$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F5,$06,$F3,$E7,$90,$0A,$94,$0A,$98,$0A,$9C<br />
dc.b $0A,$A0,$0A,$A4,$08,$A8,$08,$AC,$08,$B0,$08,$F2<br />
ssamp67: ; another not-really-used sample (like Sound65)<br />
<br />
; door slamming quickly (seems unused)<br />
Sound68: dc.w z80_ptr(ssamp68),$0101<br />
dc.w $8005,z80_ptr(+),$F400<br />
+ dc.b $EF,$00,$9B,$04,$A5,$06,$F2<br />
ssamp68: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
<br />
Sound69: dc.w z80_ptr(ssamp69),$0102<br />
dc.w $8005,z80_ptr(+),$F400<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$9B,$03,$A8,$06,$9E,$08,$F2<br />
+ dc.b $F5,$04,$F3,$E7,$C6,$03,$C6,$06,$C6,$08,$F2<br />
ssamp69: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16<br />
dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80<br />
<br />
; robotic laser burst<br />
Sound6A: dc.w z80_ptr(ssamp6A),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$DF,$14,$E6,$18,$06,$F2<br />
ssamp6A: dc.b $3D,$09,$34,$34,$28,$1F,$16,$16,$16,$00,$00,$00<br />
dc.b $04,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$15,$02,$02,$00<br />
<br />
; scatter<br />
Sound6B: dc.w z80_ptr(ssamp6B),$0101<br />
dc.w $8004,z80_ptr(+),$0002<br />
+ dc.b $EF,$00,$81,$04,$80,$0C,$F2<br />
ssamp6B: dc.b $3A,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01<br />
dc.b $07,$00,$01,$01,$03,$00,$23,$C3,$46,$08,$07,$1C,$03<br />
<br />
<br />
Sound6C: dc.w z80_ptr(ssamp6C),$0104<br />
dc.w $8005,z80_ptr(++),$0010<br />
dc.w $8004,z80_ptr(+),$0010<br />
dc.w $80C0,z80_ptr(s5Fs2),$0000<br />
dc.w $80A0,z80_ptr(s5Fs3),$0000<br />
+ dc.b $E1,$10<br />
+ dc.b $EF,$01,$F0,$01,$01,$EC,$56,$C0,$24,$F4,$EF,$00,$E6,$F0<br />
- dc.b $BB,$02,$E7,$E6,$02,$E9<br />
dc.w $01F7,$0020,z80_ptr(-)<br />
dc.b $F2<br />
ssamp6C: dc.b $00,$53,$30,$03,$30,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$06,$23,$80<br />
dc.b $3C,$72,$32,$32,$72,$14,$14,$0F,$0F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$02,$02,$08,$08,$35,$14,$00,$00<br />
<br />
; error sound<br />
Sound6D: dc.w z80_ptr(ssamp6D),$0101<br />
dc.w $8005,z80_ptr(+),$0004<br />
+ dc.b $EF,$00,$B0,$06,$80,$06,$B0,$18,$F2<br />
ssamp6D: dc.b $38,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$00,$00<br />
dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$1F,$0C,$17,$00<br />
<br />
; silver sonic buzz saw<br />
Sound6E: dc.w z80_ptr(ssamp6E),$0102<br />
dc.w $8005,z80_ptr(+),$0000<br />
dc.w $80C0,z80_ptr(++),$0000<br />
+ dc.b $EF,$00,$C6,$24,$E7<br />
- dc.b $C6,$04,$E7,$E6<br />
dc.w $04F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
+ dc.b $F3,$E7,$C7,$44,$F2<br />
ssamp6E: dc.b $33,$00,$10,$00,$31,$1F,$1D,$1E,$0E,$00,$0C,$1D<br />
dc.b $00,$00,$00,$01,$00,$0F,$0F,$0F,$0F,$08,$06,$07,$80<br />
<br />
<br />
Sound6F: dc.w z80_ptr(ssamp6A),$0103<br />
dc.w $8005,z80_ptr(++),$000B<br />
dc.w $8004,z80_ptr(+),$0012<br />
dc.w $80C0,z80_ptr(+++),$0000<br />
+ dc.b $E1,$02,$80,$02<br />
+ dc.b $EF,$00,$E6,$0C,$DF,$06,$E7,$E6,$F4,$06,$E7<br />
dc.b $E6,$F4,$12,$E7,$E6,$0C,$06,$E7,$E6,$0C,$06,$F2<br />
+ dc.b $F3,$E7,$C6,$04,$C0,$BA,$B4,$AE,$E6<br />
dc.b $01,$AE,$E6,$01,$AE,$E6,$01,$AE,$F2<br />
<br />
<br />
Sound70: dc.w $0000,$0101<br />
dc.w $80C0,z80_ptr(+),$0000<br />
+ dc.b $F3,$E7,$C6,$18<br />
- dc.b $E7,$03,$E6<br />
dc.w $01F7,$0008,z80_ptr(-)<br />
dc.b $F2<br />
<br />
<br />
if * > soundBankStart + $8000<br />
fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to the other bank."<br />
else<br />
;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."<br />
endif<br />
<br />
; end of 'ROM'<br />
if padToPowerOfTwo && (*)&(*-1)<br />
cnop -1,2<<lastbit(*-1)<br />
dc.b 0<br />
paddingSoFar := paddingSoFar+1<br />
else<br />
even<br />
endif<br />
if MOMPASS=2<br />
; "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<br />
message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "<br />
endif<br />
; share these symbols externally (WARNING: don't rename, move or remove these labels!)<br />
shared movewZ80CompSize<br />
</asm></div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208725
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-24T20:53:09Z
<p>Kram1024: /* Removal of sndDriverInput */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
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:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208724
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-24T20:51:39Z
<p>Kram1024: /* Upgrading the Load Driver Routine */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
===Removal of sndDriverInput===<br />
Okay, we disabled the sonic2 z80 sound driver junk, wouldn't we want now to use the sonic3 driver instead? Here is where we start installing it. Locate:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way<br />
<br />
==Upgrading the Load Driver Routine==</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208723
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-24T20:47:48Z
<p>Kram1024: /* Upgrading the Load Driver Routine */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
==Upgrading the Load Driver Routine==<br />
Okay, we disabled the sonic2 z80 sound driver junk, wouldn't we want now to use the sonic3 driver instead? Here is where we start installing it. Locate:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm><br />
and remove it. we don't need it anymore.</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208722
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-24T20:41:09Z
<p>Kram1024: /* Upgrading the Load Driver Routine */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
==Upgrading the Load Driver Routine==<br />
Okay, we disabled the sonic2 z80 sound driver junk, wouldn't we want now to use the sonic3 driver instead? Here is where we start installing it. Locate:<br />
<asm><br />
sndDriverInput:<br />
lea (Music_to_play&$00FFFFFF).l,a0<br />
lea (Z80_RAM+zComRange).l,a1 ; $A01B80<br />
cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request.<br />
bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there.<br />
_move.b 0(a0),d0<br />
beq.s loc_10A4<br />
_clr.b 0(a0)<br />
bra.s loc_10AE<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10A4:<br />
move.b 4(a0),d0 ; If there was something in Music_to_play_2, check what that was. Else, just go to the loop.<br />
beq.s loc_10C4<br />
clr.b 4(a0)<br />
<br />
loc_10AE: ; Check that the sound is not FE or FF<br />
move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively<br />
subi.b #$FE,d1<br />
bcs.s loc_10C0<br />
addi.b #$7F,d1<br />
move.b d1,3(a1)<br />
bra.s loc_10C4<br />
; ---------------------------------------------------------------------------<br />
<br />
loc_10C0:<br />
move.b d0,8(a1)<br />
<br />
loc_10C4:<br />
moveq #4-1,d1<br />
; FFE4 (Music_to_play_2) goes to 1B8C (zMusicToPlay),<br />
- move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown)<br />
beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2),<br />
tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay).<br />
bne.s +<br />
clr.b 1(a0,d1.w)<br />
move.b d0,9(a1,d1.w)<br />
+<br />
dbf d1,-<br />
rts<br />
; End of function sndDriverInput<br />
</asm></div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208721
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-24T20:28:45Z
<p>Kram1024: /* Removal of all callbacks to the s2 driver in the vertical interupt */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''VintSub18''' (only touch the " bsr.w sndDriverInput)<br><br />
'''VintSub16''' (only touch the " bsr.w sndDriverInput)<br><br />
'''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br><br />
<br />
==Upgrading the Load Driver Routine==</div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208720
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-24T20:22:32Z
<p>Kram1024: /* Removal of all callbacks to the s2 driver in the vertical interupt */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br><br />
'''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br></div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208719
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-24T20:20:47Z
<p>Kram1024: /* Removal of all callbacks to the s2 driver in the vertical interupt */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'''VintSub0'''<br><br />
'''Loc_54A'''<br><br />
'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br></div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208718
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-24T20:18:29Z
<p>Kram1024: /* Removal of all callbacks to the s2 driver in the vertical interupt */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
'VintSub0'<br><br />
'Loc_54A'<br><br />
'Vint0_noWater' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'loc_748' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
'Vint10_specialStage' (only touch the " jsr (sndDriverInput).l)<br></div>
Kram1024
https://info.sonicretro.org/index.php?title=SCHG_How-to:Port_Sonic_3%27s_Sound_Driver_to_Sonic_2&diff=208717
SCHG How-to:Port Sonic 3's Sound Driver to Sonic 2
2014-05-24T20:16:22Z
<p>Kram1024: /* Removal of all callbacks to the s2 driver in the vertical interupt */</p>
<hr />
<div>{{GuideBy|Kram1024}}<br><br />
<br />
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.<br />
<br />
==Overview==<br />
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.<br />
<br />
==Preparing to use Sonic 3/K/3K sound system==<br />
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.<br />
<br />
===Removal of all callbacks to the s2 driver in the vertical interupt===<br />
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.<br />
we will search for all instances of: <br />
<asm><br />
stopZ80 ; stop the Z80<br />
bsr.w sndDriverInput ; give input to the sound driver<br />
startZ80 ; start the Z80<br />
</asm><br />
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.<br />
In case you are a little lazy, here is a list of routines with this code:<br><br />
''VintSub0''<br><br />
''Loc_54A''<br><br />
''Vint0_noWater'' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br><br />
''loc_748'' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br></div>
Kram1024