diff --git a/src/include/globals.asm b/src/include/globals.asm index 2c5013e..b88cbd5 100644 --- a/src/include/globals.asm +++ b/src/include/globals.asm @@ -146,6 +146,7 @@ DEF SFX_MOVE EQU 11 DEF SFX_RANK_UP EQU 12 DEF SFX_LEVEL_UP EQU 13 DEF SFX_IHS EQU 14 +DEF SFX_READY_GO EQU 15 DEF STACK_SIZE EQU 64 DEF GAME_OVER_R10 EQU 133 DEF GAME_OVER_R12 EQU 153 diff --git a/src/res/sources/sfxparse.py b/src/res/sources/sfxparse.py index c4de4c9..b3cf51b 100644 --- a/src/res/sources/sfxparse.py +++ b/src/res/sources/sfxparse.py @@ -180,6 +180,7 @@ sfx_names = [ "sSFXRankUp", "sSFXLevelUp", "sSFXIHS", + "sSFXReadyGo", ] def chunks(lst, n): @@ -211,6 +212,10 @@ class DB: self.l.append(register_names[args[0]]) self.l.append(f"${args[1]:02X}") + def trim(self): + while self.l[-1] == "$FF": + self.l.pop() + for c, v in enumerate(register_names): if v != "REG_UNK": print(f"DEF {v} EQU ${c:02X}") @@ -228,8 +233,9 @@ with open("sfx.vgm", "rb") as f: while len(data) > 0: if data.startswith(b'\x67\x66'): if len(db) > 0: + db.trim() db.add(0xFE) - print(db) + print(db, end="") print(f"{sfx_names[ctr-1]}End::") db = DB() print(f"{sfx_names[ctr]}::") @@ -251,8 +257,9 @@ with open("sfx.vgm", "rb") as f: data = data[1:] elif data.startswith(b'\x66'): if len(db) > 0: + db.trim() db.add(0xFE) - print(db) + print(db, end="") print(f"{sfx_names[ctr-1]}End::") break else: diff --git a/src/sfx.asm b/src/sfx.asm index 2c3fa94..0bdc009 100644 --- a/src/sfx.asm +++ b/src/sfx.asm @@ -63,6 +63,9 @@ DEF REG_WAVE_PATTERN_F EQU $3F SECTION "SFX Data", ROM0 sSFXPieceI:: + db REG_NR12_CH1_VOLEV, $00, REG_NR14_CH1_FRQHI, $80, REG_NR22_CH2_VOLEV, $00, REG_NR24_CH2_FRQHI, $80 + db REG_NR32_CH3_VOLUM, $00, REG_NR34_CH3_FRQHI, $80, REG_NR42_CH4_VOLEV, $00, REG_NR44_CH4_CNTRL, $80 + db REG_NR10_CH1_SWEEP, $00, REG_NR52_MASTERCTL, $8F, REG_NR51_MASTERPAN, $FF, REG_NR50_MVOLVINPN, $77 db REG_NR12_CH1_VOLEV, $F0, REG_NR22_CH2_VOLEV, $F0, REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF db REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $AC, REG_NR14_CH1_FRQHI, $85, REG_NR21_CH2_LENDT, $7F db REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $80, REG_NR23_CH2_FRQLO, $14, REG_NR24_CH2_FRQHI, $87 @@ -715,7 +718,7 @@ sSFXBell:: db REG_NR22_CH2_VOLEV, $08, REG_NR23_CH2_FRQLO, $97, REG_NR24_CH2_FRQHI, $87, $FE sSFXBellEnd:: sSFXMove:: - db REG_NR42_CH4_VOLEV, $F1, REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $F1, REG_NR43_CH4_FQRND, $00 + db REG_NR42_CH4_VOLEV, $21, REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $C1, REG_NR43_CH4_FQRND, $00 db REG_NR44_CH4_CNTRL, $80, $FE sSFXMoveEnd:: sSFXRankUp:: @@ -723,10 +726,10 @@ sSFXRankUp:: db REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F2, REG_NR13_CH1_FRQLO, $AC, REG_NR14_CH1_FRQHI, $85 db REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F2, REG_NR23_CH2_FRQLO, $72 db REG_NR24_CH2_FRQHI, $86, REG_NR30_CH3_DACEN, $00, REG_WAVE_PATTERN_0, $00, REG_WAVE_PATTERN_1, $00 - db REG_WAVE_PATTERN_2, $00, REG_WAVE_PATTERN_3, $00, REG_WAVE_PATTERN_4, $00, REG_WAVE_PATTERN_5, $00 - db REG_WAVE_PATTERN_6, $0F, REG_WAVE_PATTERN_7, $FF, REG_WAVE_PATTERN_8, $FF, REG_WAVE_PATTERN_9, $FF - db REG_WAVE_PATTERN_A, $FF, REG_WAVE_PATTERN_B, $FF, REG_WAVE_PATTERN_C, $FF, REG_WAVE_PATTERN_D, $FF - db REG_WAVE_PATTERN_E, $F0, REG_WAVE_PATTERN_F, $00, REG_NR30_CH3_DACEN, $00, REG_NR30_CH3_DACEN, $80 + db REG_WAVE_PATTERN_2, $00, REG_WAVE_PATTERN_3, $0F, REG_WAVE_PATTERN_4, $FF, REG_WAVE_PATTERN_5, $FF + db REG_WAVE_PATTERN_6, $FF, REG_WAVE_PATTERN_7, $FF, REG_WAVE_PATTERN_8, $FF, REG_WAVE_PATTERN_9, $FF + db REG_WAVE_PATTERN_A, $FF, REG_WAVE_PATTERN_B, $F0, REG_WAVE_PATTERN_C, $00, REG_WAVE_PATTERN_D, $00 + db REG_WAVE_PATTERN_E, $00, REG_WAVE_PATTERN_F, $00, REG_NR30_CH3_DACEN, $00, REG_NR30_CH3_DACEN, $80 db REG_NR32_CH3_VOLUM, $40, REG_NR33_CH3_FRQLO, $21, REG_NR34_CH3_FRQHI, $87, $FF, $FF db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF db $FF, $FF @@ -1023,6 +1026,263 @@ sSFXIHS:: db REG_NR12_CH1_VOLEV, $08, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FE sSFXIHSEnd:: +sSFXReadyGo:: + db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F8, REG_NR13_CH1_FRQLO, $16 + db REG_NR14_CH1_FRQHI, $84, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $68 + db REG_NR23_CH2_FRQLO, $E5, REG_NR24_CH2_FRQHI, $84, $FF, $FF, $FF + + db REG_NR12_CH1_VOLEV, $E8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $58 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $D8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $C8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $48 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF, $FF + + db REG_NR12_CH1_VOLEV, $B8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $A8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $98, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $38 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF, $FF + + db REG_NR12_CH1_VOLEV, $88, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $78, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $28 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $68, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF, $FF + + db REG_NR12_CH1_VOLEV, $58, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $48, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $18 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $38, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF, $FF + + db REG_NR12_CH1_VOLEV, $28, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $08 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $18, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $08, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF + + db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F8, REG_NR13_CH1_FRQLO, $16 + db REG_NR14_CH1_FRQHI, $84, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $68 + db REG_NR23_CH2_FRQLO, $E5, REG_NR24_CH2_FRQHI, $84, $FF, $FF, $FF + + db REG_NR12_CH1_VOLEV, $E8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $58 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $D8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $C8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $48 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF, $FF + + db REG_NR12_CH1_VOLEV, $B8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $A8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $98, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $38 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF, $FF + + db REG_NR12_CH1_VOLEV, $88, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $78, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $28 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $68, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF, $FF + + db REG_NR12_CH1_VOLEV, $58, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $48, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $18 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $38, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF, $FF + + db REG_NR12_CH1_VOLEV, $28, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $08 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $18, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $08, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF + + db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F8, REG_NR13_CH1_FRQLO, $16 + db REG_NR14_CH1_FRQHI, $84, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $68 + db REG_NR23_CH2_FRQLO, $E5, REG_NR24_CH2_FRQHI, $84, $FF, $FF, $FF + + db REG_NR12_CH1_VOLEV, $E8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $58 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $D8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $C8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $48 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF, $FF + + db REG_NR12_CH1_VOLEV, $B8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $A8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $98, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $38 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF, $FF + + db REG_NR12_CH1_VOLEV, $88, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $78, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $28 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $68, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF, $FF + + db REG_NR12_CH1_VOLEV, $58, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $48, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $18 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $38, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF, $FF + + db REG_NR12_CH1_VOLEV, $28, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $08 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $18, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $08, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF + db $FF + + db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F8, REG_NR13_CH1_FRQLO, $39 + db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $68 + db REG_NR23_CH2_FRQLO, $6B, REG_NR24_CH2_FRQHI, $87, $FF, $FF, $FF + + db REG_NR12_CH1_VOLEV, $E8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $58 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $D8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $C8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $48 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF, $FF + + db REG_NR12_CH1_VOLEV, $B8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $A8, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $98, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $38 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF, $FF + + db REG_NR12_CH1_VOLEV, $88, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $78, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $28 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $68, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF, $FF + + db REG_NR12_CH1_VOLEV, $58, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $48, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $18 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $38, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF, $FF + + db REG_NR12_CH1_VOLEV, $28, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $08 + db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09 + db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $18, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FF + + db REG_NR12_CH1_VOLEV, $08, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08 + db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FE +sSFXReadyGoEnd:: SECTION "SFX Variables", HRAM @@ -1248,8 +1508,10 @@ SFXEnqueue:: call SFXPlay ret + + : cp a, SFX_IHS - ret nz + jr nz, :+ ld a, LOW(sSFXIHS) ldh [hPlayhead], a ld a, HIGH(sSFXIHS) @@ -1257,6 +1519,15 @@ SFXEnqueue:: call SFXPlay ret +: cp a, SFX_READY_GO + ret nz + ld a, LOW(sSFXReadyGo) + ldh [hPlayhead], a + ld a, HIGH(sSFXReadyGo) + ldh [hPlayhead+1], a + call SFXPlay + ret + SFXKill:: ; Kill all sound without pops.