IF !DEF(SFX_ASM)
DEF SFX_ASM EQU 1


INCLUDE "globals.asm"


DEF REG_NR10_CH1_SWEEP EQU $10
DEF REG_NR11_CH1_LENDT EQU $11
DEF REG_NR12_CH1_VOLEV EQU $12
DEF REG_NR13_CH1_FRQLO EQU $13
DEF REG_NR14_CH1_FRQHI EQU $14
DEF REG_NR21_CH2_LENDT EQU $16
DEF REG_NR22_CH2_VOLEV EQU $17
DEF REG_NR23_CH2_FRQLO EQU $18
DEF REG_NR24_CH2_FRQHI EQU $19
DEF REG_NR30_CH3_DACEN EQU $1A
DEF REG_NR31_CH3_LENGT EQU $1B
DEF REG_NR32_CH3_VOLUM EQU $1C
DEF REG_NR33_CH3_FRQLO EQU $1D
DEF REG_NR34_CH3_FRQHI EQU $1E
DEF REG_NR41_CH4_LENGT EQU $20
DEF REG_NR42_CH4_VOLEV EQU $21
DEF REG_NR43_CH4_FQRND EQU $22
DEF REG_NR44_CH4_CNTRL EQU $23
DEF REG_NR50_MVOLVINPN EQU $24
DEF REG_NR51_MASTERPAN EQU $25
DEF REG_NR52_MASTERCTL EQU $26
DEF REG_WAVE_PATTERN_0 EQU $30
DEF REG_WAVE_PATTERN_1 EQU $31
DEF REG_WAVE_PATTERN_2 EQU $32
DEF REG_WAVE_PATTERN_3 EQU $33
DEF REG_WAVE_PATTERN_4 EQU $34
DEF REG_WAVE_PATTERN_5 EQU $35
DEF REG_WAVE_PATTERN_6 EQU $36
DEF REG_WAVE_PATTERN_7 EQU $37
DEF REG_WAVE_PATTERN_8 EQU $38
DEF REG_WAVE_PATTERN_9 EQU $39
DEF REG_WAVE_PATTERN_A EQU $3A
DEF REG_WAVE_PATTERN_B EQU $3B
DEF REG_WAVE_PATTERN_C EQU $3C
DEF REG_WAVE_PATTERN_D EQU $3D
DEF REG_WAVE_PATTERN_E EQU $3E
DEF REG_WAVE_PATTERN_F EQU $3F


SECTION "SFX Data", ROM0
sSFXPieceI::
    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
    db $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $ED
    db REG_NR14_CH1_FRQHI, $85, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $80
    db REG_NR23_CH2_FRQLO, $2D, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $27
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $80
    db REG_NR23_CH2_FRQLO, $44, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $AC
    db REG_NR14_CH1_FRQHI, $85, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $80
    db REG_NR23_CH2_FRQLO, $14, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $ED
    db REG_NR14_CH1_FRQHI, $85, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $80
    db REG_NR23_CH2_FRQLO, $2D, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $27
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $80
    db REG_NR23_CH2_FRQLO, $44, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $5B
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $80
    db REG_NR23_CH2_FRQLO, $59, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $AC
    db REG_NR14_CH1_FRQHI, $85, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $80
    db REG_NR23_CH2_FRQLO, $14, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $27
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $80
    db REG_NR23_CH2_FRQLO, $44, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $72
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $80
    db REG_NR23_CH2_FRQLO, $62, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $D6
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $80
    db REG_NR23_CH2_FRQLO, $8A, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $14
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $80
    db REG_NR23_CH2_FRQLO, $A2, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $39
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $80
    db REG_NR23_CH2_FRQLO, $B1, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $4F
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $80
    db REG_NR23_CH2_FRQLO, $BA, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $62
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $80
    db REG_NR23_CH2_FRQLO, $C1, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F8, REG_NR13_CH1_FRQLO, $6B
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $F8
    db REG_NR23_CH2_FRQLO, $39, REG_NR24_CH2_FRQHI, $87, $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, $E8
    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, REG_NR22_CH2_VOLEV, $D8
    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, $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, $C8
    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, $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, REG_NR22_CH2_VOLEV, $B8
    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, $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, REG_NR22_CH2_VOLEV, $A8
    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, $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, $98
    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, $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, REG_NR22_CH2_VOLEV, $88
    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, REG_NR12_CH1_VOLEV, $09
    db REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $68, REG_NR22_CH2_VOLEV, $09
    db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11
    db REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08
    db $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, 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, $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, $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

    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, 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

    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, $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, $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, 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, $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, 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, $FF, $FF, $FF
    db $FF, $FF, $FF

    db REG_NR12_CH1_VOLEV, $F0, REG_NR22_CH2_VOLEV, $F0, REG_NR12_CH1_VOLEV, $08, REG_NR13_CH1_FRQLO, $6B
    db REG_NR14_CH1_FRQHI, $87, REG_NR22_CH2_VOLEV, $08, REG_NR23_CH2_FRQLO, $39, REG_NR24_CH2_FRQHI, $87
    db $FE
sSFXPieceIEnd::
sSFXPieceZ::
    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F8, REG_NR13_CH1_FRQLO, $7B
    db REG_NR14_CH1_FRQHI, $87, $FF, $FF

    db REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F8, REG_NR23_CH2_FRQLO, $4F
    db REG_NR24_CH2_FRQHI, $87, $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, $FF

    db REG_NR13_CH1_FRQLO, $44, REG_NR14_CH1_FRQHI, $07, REG_NR22_CH2_VOLEV, $E8, REG_NR22_CH2_VOLEV, $09
    db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11
    db 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, REG_NR22_CH2_VOLEV, $C8
    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, REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11
    db REG_NR22_CH2_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_NR23_CH2_FRQLO, $2D
    db REG_NR24_CH2_FRQHI, $07, REG_NR22_CH2_VOLEV, $A8, REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11
    db REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08
    db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF

    db REG_NR22_CH2_VOLEV, $88, REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, 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_NR13_CH1_FRQLO, $F7, REG_NR14_CH1_FRQHI, $06, REG_NR12_CH1_VOLEV, $B8, REG_NR12_CH1_VOLEV, $09
    db REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11
    db REG_NR12_CH1_VOLEV, $08, REG_NR22_CH2_VOLEV, $68, REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11
    db REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08
    db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_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, 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, REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11
    db REG_NR22_CH2_VOLEV, $08, $FF

    db REG_NR23_CH2_FRQLO, $D6, REG_NR24_CH2_FRQHI, $06, REG_NR22_CH2_VOLEV, $28, REG_NR22_CH2_VOLEV, $09
    db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11
    db REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08
    db $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, $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, REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11
    db REG_NR22_CH2_VOLEV, $08, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $38, REG_NR13_CH1_FRQLO, $7B
    db REG_NR14_CH1_FRQHI, $87, $FF, $FF

    db REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $38, REG_NR23_CH2_FRQLO, $4F
    db REG_NR24_CH2_FRQHI, $87, $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, $FF

    db REG_NR13_CH1_FRQLO, $44, REG_NR14_CH1_FRQHI, $07, REG_NR22_CH2_VOLEV, $28, REG_NR22_CH2_VOLEV, $09
    db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11
    db REG_NR22_CH2_VOLEV, $08, $FF, $FF

    db REG_NR23_CH2_FRQLO, $2D, REG_NR24_CH2_FRQHI, $07, $FF

    db REG_NR22_CH2_VOLEV, $18, REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08
    db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF

    db REG_NR13_CH1_FRQLO, $F7, REG_NR14_CH1_FRQHI, $06, $FF

    db REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08
    db REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FF

    db REG_NR23_CH2_FRQLO, $D6, REG_NR24_CH2_FRQHI, $06, $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_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $28, REG_NR13_CH1_FRQLO, $7B
    db REG_NR14_CH1_FRQHI, $87, $FF, $FF

    db REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $28, REG_NR23_CH2_FRQLO, $4F
    db REG_NR24_CH2_FRQHI, $87, $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_NR13_CH1_FRQLO, $44, REG_NR14_CH1_FRQHI, $07, REG_NR22_CH2_VOLEV, $18, REG_NR22_CH2_VOLEV, $09
    db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11
    db REG_NR22_CH2_VOLEV, $08, $FF, $FF

    db REG_NR23_CH2_FRQLO, $2D, REG_NR24_CH2_FRQHI, $07, $FF, $FF

    db REG_NR13_CH1_FRQLO, $F7, REG_NR14_CH1_FRQHI, $06, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09
    db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, REG_NR22_CH2_VOLEV, $09, REG_NR22_CH2_VOLEV, $11
    db REG_NR22_CH2_VOLEV, $08, $FF, $FF

    db REG_NR23_CH2_FRQLO, $D6, REG_NR24_CH2_FRQHI, $06, $FF, $FF

    db REG_NR12_CH1_VOLEV, $08, REG_NR13_CH1_FRQLO, $7B, REG_NR14_CH1_FRQHI, $87, $FF, $FF

    db REG_NR22_CH2_VOLEV, $08, REG_NR23_CH2_FRQLO, $4F, REG_NR24_CH2_FRQHI, $87, $FE
sSFXPieceZEnd::
sSFXPieceS::
    db REG_NR12_CH1_VOLEV, $F0, REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0
    db REG_NR13_CH1_FRQLO, $6B, REG_NR14_CH1_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $39
    db REG_NR14_CH1_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $59
    db REG_NR14_CH1_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $21
    db REG_NR14_CH1_FRQHI, $87, $FF, $FF

    db REG_NR22_CH2_VOLEV, $30, REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0
    db REG_NR13_CH1_FRQLO, $39, REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF
    db REG_NR22_CH2_VOLEV, $30, REG_NR23_CH2_FRQLO, $6B, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $7B
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $30
    db REG_NR23_CH2_FRQLO, $39, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR12_CH1_VOLEV, $08, REG_NR13_CH1_FRQLO, $7B, REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $BF
    db REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $30, REG_NR23_CH2_FRQLO, $59, REG_NR24_CH2_FRQHI, $87
    db $FF, $FF

    db REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $30, REG_NR23_CH2_FRQLO, $21
    db REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR12_CH1_VOLEV, $10, REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $10
    db REG_NR13_CH1_FRQLO, $6B, REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF
    db REG_NR22_CH2_VOLEV, $30, REG_NR23_CH2_FRQLO, $39, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $10, 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, $30
    db REG_NR23_CH2_FRQLO, $7B, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $10, REG_NR13_CH1_FRQLO, $59
    db REG_NR14_CH1_FRQHI, $87, REG_NR22_CH2_VOLEV, $08, REG_NR23_CH2_FRQLO, $7B, REG_NR24_CH2_FRQHI, $87
    db $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $10, REG_NR13_CH1_FRQLO, $21
    db REG_NR14_CH1_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $10, REG_NR13_CH1_FRQLO, $39
    db REG_NR14_CH1_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $10, REG_NR13_CH1_FRQLO, $7B
    db REG_NR14_CH1_FRQHI, $87, $FF, $FF

    db REG_NR12_CH1_VOLEV, $08, REG_NR13_CH1_FRQLO, $7B, REG_NR14_CH1_FRQHI, $87, $FE
sSFXPieceSEnd::
sSFXPieceJ::
    db REG_NR12_CH1_VOLEV, $F0, REG_NR22_CH2_VOLEV, $F0, REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F
    db REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $E7, REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F
    db REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F0, REG_NR23_CH2_FRQLO, $59, REG_NR24_CH2_FRQHI, $87
    db $FF, $FF, $FF, $FF, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $72
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F0
    db REG_NR23_CH2_FRQLO, $D6, REG_NR24_CH2_FRQHI, $86, $FF, $FF, $FF, $FF
    db $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $B2
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F0
    db REG_NR23_CH2_FRQLO, $14, REG_NR24_CH2_FRQHI, $87, $FF, $FF, $FF, $FF
    db $FF

    db REG_NR12_CH1_VOLEV, $30, REG_NR22_CH2_VOLEV, $30, REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F
    db REG_NR12_CH1_VOLEV, $30, REG_NR13_CH1_FRQLO, $E7, REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F
    db REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $30, REG_NR23_CH2_FRQLO, $59, REG_NR24_CH2_FRQHI, $87
    db $FF, $FF, $FF, $FF, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $30, REG_NR13_CH1_FRQLO, $72
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $30
    db REG_NR23_CH2_FRQLO, $D6, REG_NR24_CH2_FRQHI, $86, $FF, $FF, $FF, $FF
    db $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $30, REG_NR13_CH1_FRQLO, $B2
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $30
    db REG_NR23_CH2_FRQLO, $14, REG_NR24_CH2_FRQHI, $87, $FF, $FF, $FF, $FF
    db $FF

    db REG_NR12_CH1_VOLEV, $08, REG_NR13_CH1_FRQLO, $B2, REG_NR14_CH1_FRQHI, $86, REG_NR22_CH2_VOLEV, $08
    db REG_NR23_CH2_FRQLO, $14, REG_NR24_CH2_FRQHI, $87, $FE
sSFXPieceJEnd::
sSFXPieceL::
    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, $C4, REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $BF
    db REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $F0, REG_NR23_CH2_FRQLO, $21, REG_NR24_CH2_FRQHI, $87
    db $FF, $FF, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $E7
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $F0
    db REG_NR23_CH2_FRQLO, $39, REG_NR24_CH2_FRQHI, $87, $FF, $FF, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $06
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $F0
    db REG_NR23_CH2_FRQLO, $4F, REG_NR24_CH2_FRQHI, $87, $FF, $FF, $FF, $FF

    db REG_NR12_CH1_VOLEV, $10, REG_NR22_CH2_VOLEV, $10, REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF
    db REG_NR12_CH1_VOLEV, $10, REG_NR13_CH1_FRQLO, $C4, REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $BF
    db REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $10, REG_NR23_CH2_FRQLO, $21, REG_NR24_CH2_FRQHI, $87
    db $FF, $FF, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $10, REG_NR13_CH1_FRQLO, $E7
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $10
    db REG_NR23_CH2_FRQLO, $39, REG_NR24_CH2_FRQHI, $87, $FF, $FF, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $10, REG_NR13_CH1_FRQLO, $06
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $10
    db REG_NR23_CH2_FRQLO, $4F, REG_NR24_CH2_FRQHI, $87, $FF, $FF, $FF, $FF

    db REG_NR12_CH1_VOLEV, $08, REG_NR13_CH1_FRQLO, $06, REG_NR14_CH1_FRQHI, $87, REG_NR22_CH2_VOLEV, $08
    db REG_NR23_CH2_FRQLO, $4F, REG_NR24_CH2_FRQHI, $87, $FE
sSFXPieceLEnd::
sSFXPieceO::
    db REG_NR12_CH1_VOLEV, $F0, REG_NR22_CH2_VOLEV, $F0, REG_NR32_CH3_VOLUM, $60, REG_NR11_CH1_LENDT, $BF
    db REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $B2, REG_NR14_CH1_FRQHI, $86
    db REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $F0, REG_NR23_CH2_FRQLO, $14
    db REG_NR24_CH2_FRQHI, $87, REG_NR30_CH3_DACEN, $00, REG_WAVE_PATTERN_0, $FF, REG_WAVE_PATTERN_1, $ED
    db REG_WAVE_PATTERN_2, $CB, REG_WAVE_PATTERN_3, $A9, REG_WAVE_PATTERN_4, $87, REG_WAVE_PATTERN_5, $65
    db REG_WAVE_PATTERN_6, $43, REG_WAVE_PATTERN_7, $21, REG_WAVE_PATTERN_8, $12, REG_WAVE_PATTERN_9, $34
    db REG_WAVE_PATTERN_A, $56, REG_WAVE_PATTERN_B, $78, REG_WAVE_PATTERN_C, $9A, REG_WAVE_PATTERN_D, $BC
    db REG_WAVE_PATTERN_E, $DE, REG_WAVE_PATTERN_F, $FF, REG_NR30_CH3_DACEN, $00, REG_NR30_CH3_DACEN, $80
    db REG_NR32_CH3_VOLUM, $60, REG_NR33_CH3_FRQLO, $B2, REG_NR34_CH3_FRQHI, $86, $FF, $FF
    db $FF, $FF, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $89
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $F0
    db REG_NR23_CH2_FRQLO, $F7, REG_NR24_CH2_FRQHI, $86, REG_NR30_CH3_DACEN, $00, REG_NR30_CH3_DACEN, $80
    db REG_NR32_CH3_VOLUM, $60, REG_NR33_CH3_FRQLO, $89, REG_NR34_CH3_FRQHI, $86, $FF, $FF
    db $FF, $FF, $FF

    db REG_NR12_CH1_VOLEV, $08, REG_NR13_CH1_FRQLO, $89, REG_NR14_CH1_FRQHI, $86, REG_NR22_CH2_VOLEV, $08
    db REG_NR23_CH2_FRQLO, $F7, REG_NR24_CH2_FRQHI, $86, REG_NR32_CH3_VOLUM, $00, REG_NR33_CH3_FRQLO, $89
    db REG_NR34_CH3_FRQHI, $06, $FF, $FF, $FF

    db REG_NR12_CH1_VOLEV, $30, REG_NR22_CH2_VOLEV, $30, REG_NR32_CH3_VOLUM, $60, REG_NR11_CH1_LENDT, $BF
    db REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $30, REG_NR13_CH1_FRQLO, $B2, REG_NR14_CH1_FRQHI, $86
    db REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $30, REG_NR23_CH2_FRQLO, $14
    db REG_NR24_CH2_FRQHI, $87, REG_NR30_CH3_DACEN, $00, REG_NR30_CH3_DACEN, $80, REG_NR32_CH3_VOLUM, $60
    db REG_NR33_CH3_FRQLO, $B2, REG_NR34_CH3_FRQHI, $86, $FF, $FF, $FF, $FF
    db $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $30, REG_NR13_CH1_FRQLO, $89
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $30
    db REG_NR23_CH2_FRQLO, $F7, REG_NR24_CH2_FRQHI, $86, REG_NR30_CH3_DACEN, $00, REG_NR30_CH3_DACEN, $80
    db REG_NR32_CH3_VOLUM, $60, REG_NR33_CH3_FRQLO, $89, REG_NR34_CH3_FRQHI, $86, $FF, $FF
    db $FF, $FF, $FF

    db REG_NR12_CH1_VOLEV, $08, REG_NR13_CH1_FRQLO, $89, REG_NR14_CH1_FRQHI, $86, REG_NR22_CH2_VOLEV, $08
    db REG_NR23_CH2_FRQLO, $F7, REG_NR24_CH2_FRQHI, $86, REG_NR32_CH3_VOLUM, $00, REG_NR33_CH3_FRQLO, $89
    db REG_NR34_CH3_FRQHI, $06, $FF, $FF, $FF

    db REG_NR12_CH1_VOLEV, $10, REG_NR22_CH2_VOLEV, $10, REG_NR32_CH3_VOLUM, $60, REG_NR11_CH1_LENDT, $BF
    db REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $10, REG_NR13_CH1_FRQLO, $B2, REG_NR14_CH1_FRQHI, $86
    db REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $10, REG_NR23_CH2_FRQLO, $14
    db REG_NR24_CH2_FRQHI, $87, REG_NR30_CH3_DACEN, $00, REG_NR30_CH3_DACEN, $80, REG_NR32_CH3_VOLUM, $60
    db REG_NR33_CH3_FRQLO, $B2, REG_NR34_CH3_FRQHI, $86, $FF, $FF, $FF, $FF
    db $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $10, REG_NR13_CH1_FRQLO, $89
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $10
    db REG_NR23_CH2_FRQLO, $F7, REG_NR24_CH2_FRQHI, $86, REG_NR30_CH3_DACEN, $00, REG_NR30_CH3_DACEN, $80
    db REG_NR32_CH3_VOLUM, $60, REG_NR33_CH3_FRQLO, $89, REG_NR34_CH3_FRQHI, $86, $FF, $FF
    db $FF, $FF, $FF

    db REG_NR12_CH1_VOLEV, $08, REG_NR13_CH1_FRQLO, $89, REG_NR14_CH1_FRQHI, $86, REG_NR22_CH2_VOLEV, $08
    db REG_NR23_CH2_FRQLO, $F7, REG_NR24_CH2_FRQHI, $86, REG_NR32_CH3_VOLUM, $00, REG_NR33_CH3_FRQLO, $89
    db REG_NR34_CH3_FRQHI, $06, $FE
sSFXPieceOEnd::
sSFXPieceT::
    db REG_NR12_CH1_VOLEV, $F0, REG_NR22_CH2_VOLEV, $F0, REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F
    db REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $8A, REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $7F
    db REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F0, REG_NR23_CH2_FRQLO, $62, REG_NR24_CH2_FRQHI, $87
    db $FF, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $2D
    db REG_NR14_CH1_FRQHI, $87, $FF, $FF

    db REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F0, REG_NR23_CH2_FRQLO, $06
    db REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $D6
    db REG_NR14_CH1_FRQHI, $86, $FF, $FF

    db REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F0, REG_NR23_CH2_FRQLO, $F7
    db REG_NR24_CH2_FRQHI, $86, $FF, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $14
    db REG_NR14_CH1_FRQHI, $87, $FF, $FF

    db REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F0, REG_NR23_CH2_FRQLO, $2D
    db REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $62
    db REG_NR14_CH1_FRQHI, $87, $FF, $FF

    db REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F0, REG_NR23_CH2_FRQLO, $8A
    db REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR12_CH1_VOLEV, $30, REG_NR22_CH2_VOLEV, $30, REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F
    db REG_NR12_CH1_VOLEV, $30, REG_NR13_CH1_FRQLO, $D6, REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F
    db REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $30, REG_NR23_CH2_FRQLO, $06, REG_NR24_CH2_FRQHI, $87
    db $FF, $FF

    db REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $30, REG_NR23_CH2_FRQLO, $F7
    db REG_NR24_CH2_FRQHI, $86, $FF, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $30, REG_NR13_CH1_FRQLO, $14
    db REG_NR14_CH1_FRQHI, $87, $FF, $FF

    db REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $30, REG_NR23_CH2_FRQLO, $2D
    db REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $30, REG_NR13_CH1_FRQLO, $62
    db REG_NR14_CH1_FRQHI, $87, $FF, $FF

    db REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $30, REG_NR23_CH2_FRQLO, $8A
    db REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR12_CH1_VOLEV, $10, REG_NR22_CH2_VOLEV, $10, REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F
    db REG_NR12_CH1_VOLEV, $10, REG_NR13_CH1_FRQLO, $D6, REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F
    db REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $10, REG_NR23_CH2_FRQLO, $06, REG_NR24_CH2_FRQHI, $87
    db $FF, $FF

    db REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $10, REG_NR23_CH2_FRQLO, $F7
    db REG_NR24_CH2_FRQHI, $86, $FF, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $10, REG_NR13_CH1_FRQLO, $14
    db REG_NR14_CH1_FRQHI, $87, $FF, $FF

    db REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $10, REG_NR23_CH2_FRQLO, $2D
    db REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $10, REG_NR13_CH1_FRQLO, $62
    db REG_NR14_CH1_FRQHI, $87, $FF, $FF

    db REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $10, REG_NR23_CH2_FRQLO, $8A
    db REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR12_CH1_VOLEV, $08, REG_NR13_CH1_FRQLO, $62, REG_NR14_CH1_FRQHI, $87, REG_NR22_CH2_VOLEV, $08
    db REG_NR23_CH2_FRQLO, $8A, REG_NR24_CH2_FRQHI, $87, $FE
sSFXPieceTEnd::
sSFXIRS::
    db REG_NR42_CH4_VOLEV, $F2, REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $F2, REG_NR43_CH4_FQRND, $44
    db REG_NR44_CH4_CNTRL, $80, $FF

    db REG_NR43_CH4_FQRND, $15, REG_NR44_CH4_CNTRL, $00, $FF

    db REG_NR43_CH4_FQRND, $01, REG_NR44_CH4_CNTRL, $00, $FF

    db REG_NR12_CH1_VOLEV, $F1, REG_NR22_CH2_VOLEV, $F1, REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F
    db REG_NR12_CH1_VOLEV, $F1, REG_NR13_CH1_FRQLO, $6B, REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $7F
    db REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $81, REG_NR23_CH2_FRQLO, $DF, REG_NR24_CH2_FRQHI, $87
    db REG_NR42_CH4_VOLEV, $08, REG_NR43_CH4_FQRND, $44, REG_NR44_CH4_CNTRL, $80, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F1, REG_NR13_CH1_FRQLO, $9D
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $81
    db REG_NR23_CH2_FRQLO, $DF, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F1, REG_NR13_CH1_FRQLO, $B6
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $81
    db REG_NR23_CH2_FRQLO, $DF, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F1, REG_NR13_CH1_FRQLO, $C5
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $81
    db REG_NR23_CH2_FRQLO, $DF, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F1, REG_NR13_CH1_FRQLO, $CE
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $81
    db REG_NR23_CH2_FRQLO, $DF, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F1, REG_NR13_CH1_FRQLO, $D6
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $81
    db REG_NR23_CH2_FRQLO, $DF, REG_NR24_CH2_FRQHI, $87, $FF, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F1, REG_NR13_CH1_FRQLO, $D9
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $81
    db REG_NR23_CH2_FRQLO, $DF, REG_NR24_CH2_FRQHI, $87, $FE
sSFXIRSEnd::
sSFXDrop::
    db REG_NR12_CH1_VOLEV, $F0, REG_NR42_CH4_VOLEV, $F1, REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F
    db REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $9D, REG_NR14_CH1_FRQHI, $84, REG_NR41_CH4_LENGT, $3F
    db REG_NR42_CH4_VOLEV, $F1, REG_NR43_CH4_FQRND, $57, REG_NR44_CH4_CNTRL, $80, $FF

    db REG_NR13_CH1_FRQLO, $12, REG_NR14_CH1_FRQHI, $03, $FF

    db REG_NR13_CH1_FRQLO, $D2, REG_NR14_CH1_FRQHI, $00, $FF

    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF

    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $80, REG_NR13_CH1_FRQLO, $39
    db REG_NR14_CH1_FRQHI, $81, REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $F1, REG_NR43_CH4_FQRND, $47
    db REG_NR44_CH4_CNTRL, $80, $FF

    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF

    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF

    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF

    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF

    db REG_NR12_CH1_VOLEV, $08, REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $80, $FF

    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF

    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF

    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF

    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF

    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF

    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF

    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF

    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF

    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FE
sSFXDropEnd::
sSFXLock::
    db REG_NR42_CH4_VOLEV, $F2, REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $12, REG_NR43_CH4_FQRND, $14
    db REG_NR44_CH4_CNTRL, $80, $FF

    db REG_NR43_CH4_FQRND, $00, REG_NR44_CH4_CNTRL, $00, $FF

    db REG_NR43_CH4_FQRND, $00, REG_NR44_CH4_CNTRL, $00, $FF

    db REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $F2, REG_NR43_CH4_FQRND, $A4, REG_NR44_CH4_CNTRL, $80
    db $FF

    db REG_NR43_CH4_FQRND, $75, REG_NR44_CH4_CNTRL, $00, $FF

    db REG_NR43_CH4_FQRND, $55, REG_NR44_CH4_CNTRL, $00, $FF

    db REG_NR43_CH4_FQRND, $35, REG_NR44_CH4_CNTRL, $00, $FF

    db REG_NR43_CH4_FQRND, $14, REG_NR44_CH4_CNTRL, $00, $FF

    db REG_NR43_CH4_FQRND, $00, REG_NR44_CH4_CNTRL, $00, $FF

    db REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $22, REG_NR43_CH4_FQRND, $A4, REG_NR44_CH4_CNTRL, $80
    db $FF

    db REG_NR43_CH4_FQRND, $75, REG_NR44_CH4_CNTRL, $00, $FF

    db REG_NR43_CH4_FQRND, $55, REG_NR44_CH4_CNTRL, $00, $FF

    db REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $12, REG_NR43_CH4_FQRND, $A4, REG_NR44_CH4_CNTRL, $80
    db $FF

    db REG_NR43_CH4_FQRND, $75, REG_NR44_CH4_CNTRL, $00, $FF

    db REG_NR43_CH4_FQRND, $55, REG_NR44_CH4_CNTRL, $00, $FF

    db REG_NR43_CH4_FQRND, $35, REG_NR44_CH4_CNTRL, $00, $FF

    db REG_NR43_CH4_FQRND, $14, REG_NR44_CH4_CNTRL, $00, $FF

    db REG_NR43_CH4_FQRND, $00, REG_NR44_CH4_CNTRL, $00, $FF

    db REG_NR43_CH4_FQRND, $00, REG_NR44_CH4_CNTRL, $00, $FF

    db REG_NR43_CH4_FQRND, $00, REG_NR44_CH4_CNTRL, $00, $FE
sSFXLockEnd::
sSFXBell::
    db REG_NR12_CH1_VOLEV, $F1, REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F1
    db REG_NR13_CH1_FRQLO, $A7, REG_NR14_CH1_FRQHI, $87, $FF, $FF, $FF, $FF

    db REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F1, REG_NR23_CH2_FRQLO, $97
    db REG_NR24_CH2_FRQHI, $87, $FF, $FF, $FF, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F1, REG_NR13_CH1_FRQLO, $A7
    db REG_NR14_CH1_FRQHI, $87, $FF, $FF, $FF, $FF

    db REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F1, REG_NR23_CH2_FRQLO, $97
    db REG_NR24_CH2_FRQHI, $87, $FF, $FF, $FF, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F1, REG_NR13_CH1_FRQLO, $A7
    db REG_NR14_CH1_FRQHI, $87, $FF, $FF, $FF, $FF

    db REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F1, REG_NR23_CH2_FRQLO, $97
    db REG_NR24_CH2_FRQHI, $87, $FF, $FF, $FF, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F1, REG_NR13_CH1_FRQLO, $A7
    db REG_NR14_CH1_FRQHI, $87, $FF, $FF, $FF, $FF

    db REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F1, REG_NR23_CH2_FRQLO, $97
    db REG_NR24_CH2_FRQHI, $87, $FF, $FF, $FF, $FF, $FF, $FF
    db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
    db $FF, $FF

    db REG_NR12_CH1_VOLEV, $08, REG_NR13_CH1_FRQLO, $A7, REG_NR14_CH1_FRQHI, $87, $FF, $FF
    db $FF, $FF

    db REG_NR22_CH2_VOLEV, $08, REG_NR23_CH2_FRQLO, $97, REG_NR24_CH2_FRQHI, $87, $FE
sSFXBellEnd::
sSFXMove::
    db REG_NR42_CH4_VOLEV, $21, REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $21, REG_NR43_CH4_FQRND, $00
    db REG_NR44_CH4_CNTRL, $80, $FE
sSFXMoveEnd::
sSFXRankUp::
    db REG_NR12_CH1_VOLEV, $F2, REG_NR22_CH2_VOLEV, $F2, REG_NR32_CH3_VOLUM, $40, REG_NR11_CH1_LENDT, $7F
    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_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

    db REG_NR30_CH3_DACEN, $00, REG_NR30_CH3_DACEN, $80, REG_NR32_CH3_VOLUM, $40, REG_NR33_CH3_FRQLO, $14
    db REG_NR34_CH3_FRQHI, $87, $FF, $FF, $FF, $FF

    db REG_NR12_CH1_VOLEV, $08, REG_NR13_CH1_FRQLO, $AC, REG_NR14_CH1_FRQHI, $85, REG_NR22_CH2_VOLEV, $08
    db REG_NR23_CH2_FRQLO, $72, REG_NR24_CH2_FRQHI, $86, 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

    db REG_NR30_CH3_DACEN, $00, REG_NR30_CH3_DACEN, $80, REG_NR32_CH3_VOLUM, $40, REG_NR33_CH3_FRQLO, $39
    db REG_NR34_CH3_FRQHI, $87, $FF, $FF, $FF, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F2, REG_NR13_CH1_FRQLO, $AC
    db REG_NR14_CH1_FRQHI, $85, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F2
    db REG_NR23_CH2_FRQLO, $72, REG_NR24_CH2_FRQHI, $86, REG_NR30_CH3_DACEN, $00, REG_NR30_CH3_DACEN, $80
    db REG_NR32_CH3_VOLUM, $40, REG_NR33_CH3_FRQLO, $6B, REG_NR34_CH3_FRQHI, $87, $FF, $FF
    db $FF, $FF

    db REG_NR12_CH1_VOLEV, $08, REG_NR13_CH1_FRQLO, $AC, REG_NR14_CH1_FRQHI, $85, REG_NR22_CH2_VOLEV, $08
    db REG_NR23_CH2_FRQLO, $72, REG_NR24_CH2_FRQHI, $86, REG_NR32_CH3_VOLUM, $00, REG_NR33_CH3_FRQLO, $6B
    db REG_NR34_CH3_FRQHI, $07, $FF, $FF, $FF, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F2, REG_NR13_CH1_FRQLO, $27
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F2
    db REG_NR23_CH2_FRQLO, $D6, REG_NR24_CH2_FRQHI, $86, REG_NR30_CH3_DACEN, $00, REG_NR30_CH3_DACEN, $80
    db REG_NR32_CH3_VOLUM, $40, REG_NR33_CH3_FRQLO, $6B, REG_NR34_CH3_FRQHI, $87, $FF, $FF
    db $FF, $FF

    db REG_NR12_CH1_VOLEV, $08, REG_NR13_CH1_FRQLO, $27, REG_NR14_CH1_FRQHI, $86, REG_NR22_CH2_VOLEV, $08
    db REG_NR23_CH2_FRQLO, $D6, REG_NR24_CH2_FRQHI, $86, REG_NR32_CH3_VOLUM, $00, REG_NR33_CH3_FRQLO, $6B
    db REG_NR34_CH3_FRQHI, $07, $FF, $FF, $FF, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F2, REG_NR13_CH1_FRQLO, $72
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F2
    db REG_NR23_CH2_FRQLO, $14, REG_NR24_CH2_FRQHI, $87, REG_NR30_CH3_DACEN, $00, REG_NR30_CH3_DACEN, $80
    db REG_NR32_CH3_VOLUM, $40, REG_NR33_CH3_FRQLO, $6B, REG_NR34_CH3_FRQHI, $87, $FF, $FF
    db $FF, $FF

    db REG_NR12_CH1_VOLEV, $08, REG_NR13_CH1_FRQLO, $72, REG_NR14_CH1_FRQHI, $86, REG_NR22_CH2_VOLEV, $08
    db REG_NR23_CH2_FRQLO, $14, REG_NR24_CH2_FRQHI, $87, REG_NR32_CH3_VOLUM, $00, REG_NR33_CH3_FRQLO, $6B
    db REG_NR34_CH3_FRQHI, $07, $FF, $FF, $FF, $FF

    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F2, REG_NR13_CH1_FRQLO, $D6
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F2
    db REG_NR23_CH2_FRQLO, $39, REG_NR24_CH2_FRQHI, $87, REG_NR30_CH3_DACEN, $00, REG_NR30_CH3_DACEN, $80
    db REG_NR32_CH3_VOLUM, $40, REG_NR33_CH3_FRQLO, $6B, REG_NR34_CH3_FRQHI, $87, $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, $FF, $FF, $FF, $FF, $FF

    db REG_NR12_CH1_VOLEV, $08, REG_NR13_CH1_FRQLO, $D6, REG_NR14_CH1_FRQHI, $86, REG_NR22_CH2_VOLEV, $08
    db REG_NR23_CH2_FRQLO, $39, REG_NR24_CH2_FRQHI, $87, REG_NR32_CH3_VOLUM, $00, REG_NR33_CH3_FRQLO, $6B
    db REG_NR34_CH3_FRQHI, $07, $FE
sSFXRankUpEnd::
sSFXLevelUp::
    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, $3B, REG_NR14_CH1_FRQHI, $85, REG_NR21_CH2_LENDT, $7F
    db REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F0, REG_NR23_CH2_FRQLO, $C4, REG_NR24_CH2_FRQHI, $86
    db $FF

    db REG_NR13_CH1_FRQLO, $27, REG_NR14_CH1_FRQHI, $06, REG_NR23_CH2_FRQLO, $2D, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $F7
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F0
    db REG_NR23_CH2_FRQLO, $8A, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR13_CH1_FRQLO, $ED, REG_NR14_CH1_FRQHI, $05, REG_NR23_CH2_FRQLO, $14, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $B2
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F0
    db REG_NR23_CH2_FRQLO, $6B, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR13_CH1_FRQLO, $06, REG_NR14_CH1_FRQHI, $07, REG_NR23_CH2_FRQLO, $90, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $27
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F0
    db REG_NR23_CH2_FRQLO, $2D, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR13_CH1_FRQLO, $C4, REG_NR14_CH1_FRQHI, $06, REG_NR23_CH2_FRQLO, $73, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $21
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F0
    db REG_NR23_CH2_FRQLO, $9D, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR13_CH1_FRQLO, $42, REG_NR14_CH1_FRQHI, $06, REG_NR23_CH2_FRQLO, $39, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $E7
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F0
    db REG_NR23_CH2_FRQLO, $83, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR13_CH1_FRQLO, $2D, REG_NR14_CH1_FRQHI, $07, REG_NR23_CH2_FRQLO, $A2, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $72
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F0
    db REG_NR23_CH2_FRQLO, $4F, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR13_CH1_FRQLO, $F7, REG_NR14_CH1_FRQHI, $06, REG_NR23_CH2_FRQLO, $8A, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $44
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F0
    db REG_NR23_CH2_FRQLO, $AC, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR13_CH1_FRQLO, $89, REG_NR14_CH1_FRQHI, $06, REG_NR23_CH2_FRQLO, $59, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $14
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $7F, REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $F0
    db REG_NR23_CH2_FRQLO, $97, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR13_CH1_FRQLO, $4F, REG_NR14_CH1_FRQHI, $07, REG_NR23_CH2_FRQLO, $B1, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR22_CH2_VOLEV, $F0, REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $C0
    db REG_NR13_CH1_FRQLO, $B2, REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF
    db REG_NR22_CH2_VOLEV, $C0, REG_NR23_CH2_FRQLO, $6B, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR13_CH1_FRQLO, $21, REG_NR14_CH1_FRQHI, $07, REG_NR23_CH2_FRQLO, $9D, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $80, REG_NR13_CH1_FRQLO, $62
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $80
    db REG_NR23_CH2_FRQLO, $BA, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR13_CH1_FRQLO, $C4, REG_NR14_CH1_FRQHI, $06, REG_NR23_CH2_FRQLO, $73, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $60, 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, $60
    db REG_NR23_CH2_FRQLO, $A7, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR13_CH1_FRQLO, $6B, REG_NR14_CH1_FRQHI, $07, REG_NR23_CH2_FRQLO, $BE, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $40, REG_NR13_CH1_FRQLO, $9E
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $40
    db REG_NR23_CH2_FRQLO, $62, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR13_CH1_FRQLO, $14, REG_NR14_CH1_FRQHI, $07, REG_NR23_CH2_FRQLO, $97, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $40, REG_NR13_CH1_FRQLO, $59
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $40
    db REG_NR23_CH2_FRQLO, $B6, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR13_CH1_FRQLO, $B2, REG_NR14_CH1_FRQHI, $06, REG_NR23_CH2_FRQLO, $6B, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $40, REG_NR13_CH1_FRQLO, $2D
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $40
    db REG_NR23_CH2_FRQLO, $A2, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR13_CH1_FRQLO, $62, REG_NR14_CH1_FRQHI, $07, REG_NR23_CH2_FRQLO, $BA, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $40, REG_NR13_CH1_FRQLO, $D6
    db REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $40
    db REG_NR23_CH2_FRQLO, $7B, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR13_CH1_FRQLO, $39, REG_NR14_CH1_FRQHI, $07, REG_NR23_CH2_FRQLO, $A7, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $20, REG_NR13_CH1_FRQLO, $4F
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $20
    db REG_NR23_CH2_FRQLO, $B1, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR13_CH1_FRQLO, $9E, REG_NR14_CH1_FRQHI, $06, REG_NR23_CH2_FRQLO, $62, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $20, REG_NR13_CH1_FRQLO, $21
    db REG_NR14_CH1_FRQHI, $87, REG_NR21_CH2_LENDT, $BF, REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $20
    db REG_NR23_CH2_FRQLO, $9D, REG_NR24_CH2_FRQHI, $87, $FF

    db REG_NR13_CH1_FRQLO, $59, REG_NR14_CH1_FRQHI, $07, REG_NR23_CH2_FRQLO, $B6, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR12_CH1_VOLEV, $F2, REG_NR22_CH2_VOLEV, $F2, REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F
    db REG_NR12_CH1_VOLEV, $22, REG_NR13_CH1_FRQLO, $C4, REG_NR14_CH1_FRQHI, $86, REG_NR21_CH2_LENDT, $7F
    db REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $22, REG_NR23_CH2_FRQLO, $73, REG_NR24_CH2_FRQHI, $87
    db $FF

    db REG_NR13_CH1_FRQLO, $2D, REG_NR14_CH1_FRQHI, $07, REG_NR23_CH2_FRQLO, $A2, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR13_CH1_FRQLO, $62, REG_NR14_CH1_FRQHI, $07, REG_NR23_CH2_FRQLO, $BA, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR13_CH1_FRQLO, $C4, REG_NR14_CH1_FRQHI, $06, REG_NR23_CH2_FRQLO, $73, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR13_CH1_FRQLO, $2D, REG_NR14_CH1_FRQHI, $07, REG_NR23_CH2_FRQLO, $A2, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR13_CH1_FRQLO, $62, REG_NR14_CH1_FRQHI, $07, REG_NR23_CH2_FRQLO, $BA, REG_NR24_CH2_FRQHI, $07
    db $FF

    db REG_NR12_CH1_VOLEV, $08, REG_NR13_CH1_FRQLO, $C4, REG_NR14_CH1_FRQHI, $86, REG_NR22_CH2_VOLEV, $08
    db REG_NR23_CH2_FRQLO, $73, REG_NR24_CH2_FRQHI, $87, $FE
sSFXLevelUpEnd::
sSFXIHS::
    db REG_NR12_CH1_VOLEV, $F0, REG_NR42_CH4_VOLEV, $52, REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F
    db REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $33, REG_NR14_CH1_FRQHI, $87, REG_NR41_CH4_LENGT, $3F
    db REG_NR42_CH4_VOLEV, $52, REG_NR43_CH4_FQRND, $06, REG_NR44_CH4_CNTRL, $80, $FF

    db REG_NR13_CH1_FRQLO, $44, REG_NR14_CH1_FRQHI, $07, $FF

    db REG_NR13_CH1_FRQLO, $54, REG_NR14_CH1_FRQHI, $07, $FF

    db REG_NR13_CH1_FRQLO, $62, REG_NR14_CH1_FRQHI, $07, $FF

    db REG_NR22_CH2_VOLEV, $63, REG_NR13_CH1_FRQLO, $6F, REG_NR14_CH1_FRQHI, $07, REG_NR21_CH2_LENDT, $BF
    db REG_NR21_CH2_LENDT, $BF, REG_NR22_CH2_VOLEV, $63, REG_NR23_CH2_FRQLO, $2C, REG_NR24_CH2_FRQHI, $80
    db REG_NR30_CH3_DACEN, $00, REG_WAVE_PATTERN_0, $45, REG_WAVE_PATTERN_1, $67, REG_WAVE_PATTERN_2, $89
    db REG_WAVE_PATTERN_3, $AB, REG_WAVE_PATTERN_4, $CD, REG_WAVE_PATTERN_5, $EF, REG_WAVE_PATTERN_6, $FF
    db REG_WAVE_PATTERN_7, $FE, REG_WAVE_PATTERN_8, $DC, REG_WAVE_PATTERN_9, $BA, REG_WAVE_PATTERN_A, $98
    db REG_WAVE_PATTERN_B, $76, REG_WAVE_PATTERN_C, $54, REG_WAVE_PATTERN_D, $32, REG_WAVE_PATTERN_E, $11
    db REG_WAVE_PATTERN_F, $23, REG_NR30_CH3_DACEN, $00, REG_NR30_CH3_DACEN, $80, REG_NR32_CH3_VOLUM, $40
    db REG_NR33_CH3_FRQLO, $16, REG_NR34_CH3_FRQHI, $84, $FF

    db REG_NR13_CH1_FRQLO, $7B, REG_NR14_CH1_FRQHI, $07, $FF

    db REG_NR13_CH1_FRQLO, $86, REG_NR14_CH1_FRQHI, $07, $FF

    db REG_NR13_CH1_FRQLO, $90, REG_NR14_CH1_FRQHI, $07, $FF

    db REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF, REG_NR12_CH1_VOLEV, $F8, REG_NR13_CH1_FRQLO, $CE
    db REG_NR14_CH1_FRQHI, $85, $FF

    db REG_NR13_CH1_FRQLO, $ED, REG_NR14_CH1_FRQHI, $05, $FF

    db REG_NR42_CH4_VOLEV, $72, REG_NR13_CH1_FRQLO, $0B, REG_NR14_CH1_FRQHI, $06, REG_NR12_CH1_VOLEV, $E8
    db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR12_CH1_VOLEV, $09
    db REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $72
    db REG_NR43_CH4_FQRND, $44, REG_NR44_CH4_CNTRL, $80, $FF

    db REG_NR13_CH1_FRQLO, $27, REG_NR14_CH1_FRQHI, $06, REG_NR12_CH1_VOLEV, $D8, REG_NR12_CH1_VOLEV, $09
    db REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11
    db REG_NR12_CH1_VOLEV, $08, $FF

    db REG_NR13_CH1_FRQLO, $42, REG_NR14_CH1_FRQHI, $06, REG_NR12_CH1_VOLEV, $C8, REG_NR12_CH1_VOLEV, $09
    db REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11
    db REG_NR12_CH1_VOLEV, $08, $FF

    db REG_NR13_CH1_FRQLO, $5B, REG_NR14_CH1_FRQHI, $06, REG_NR12_CH1_VOLEV, $B8, REG_NR12_CH1_VOLEV, $09
    db REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11
    db REG_NR12_CH1_VOLEV, $08, $FF

    db REG_NR13_CH1_FRQLO, $72, REG_NR14_CH1_FRQHI, $06, REG_NR12_CH1_VOLEV, $A8, REG_NR12_CH1_VOLEV, $09
    db REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11
    db REG_NR12_CH1_VOLEV, $08, $FF

    db REG_NR13_CH1_FRQLO, $89, REG_NR14_CH1_FRQHI, $06, REG_NR12_CH1_VOLEV, $98, REG_NR12_CH1_VOLEV, $09
    db REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11
    db REG_NR12_CH1_VOLEV, $08, $FF

    db REG_NR13_CH1_FRQLO, $9E, REG_NR14_CH1_FRQHI, $06, REG_NR12_CH1_VOLEV, $88, REG_NR12_CH1_VOLEV, $09
    db REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11
    db REG_NR12_CH1_VOLEV, $08, REG_NR32_CH3_VOLUM, $00, REG_NR33_CH3_FRQLO, $16, REG_NR34_CH3_FRQHI, $04
    db $FF

    db REG_NR13_CH1_FRQLO, $B2, REG_NR14_CH1_FRQHI, $06, REG_NR12_CH1_VOLEV, $68, REG_NR12_CH1_VOLEV, $09
    db REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11
    db REG_NR12_CH1_VOLEV, $08, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08
    db $FF

    db REG_NR13_CH1_FRQLO, $C4, REG_NR14_CH1_FRQHI, $06, REG_NR12_CH1_VOLEV, $58, REG_NR12_CH1_VOLEV, $09
    db REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11
    db REG_NR12_CH1_VOLEV, $08, $FF

    db REG_NR13_CH1_FRQLO, $D6, REG_NR14_CH1_FRQHI, $06, REG_NR12_CH1_VOLEV, $48, REG_NR12_CH1_VOLEV, $09
    db REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11
    db REG_NR12_CH1_VOLEV, $08, $FF

    db REG_NR13_CH1_FRQLO, $E7, REG_NR14_CH1_FRQHI, $06, REG_NR12_CH1_VOLEV, $38, REG_NR12_CH1_VOLEV, $09
    db REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11
    db REG_NR12_CH1_VOLEV, $08, $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, $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
sSFXIHSEnd::


SECTION "SFX Variables", HRAM
hPlayhead:: ds 2
hPlayQueue:: ds 4


SECTION "SFX Functions", ROM0
SFXInit::
    ; Audio on, volume on, and enable all channels.
    ld a, $80
    ldh [rNR52], a
    ld a, $FF
    ldh [rNR51], a
    ld a, $77
    ldh [rNR50], a

    ld a, $FF
    ldh [hPlayQueue], a
    ldh [hPlayQueue+1], a
    ldh [hPlayQueue+2], a
    ldh [hPlayQueue+3], a
    xor a, a
    ldh [hPlayhead], a
    ldh [hPlayhead+1], a
    ret


SFXPopQueue:
    ; Pop the head of the queue into A, the tail of the queue will be set to $FF.
    ldh a, [hPlayQueue]
    ld b, a
    ldh a, [hPlayQueue+1]
    ldh [hPlayQueue], a
    ldh a, [hPlayQueue+2]
    ldh [hPlayQueue+1], a
    ldh a, [hPlayQueue+3]
    ldh [hPlayQueue+2], a
    ld a, $FF
    ldh [hPlayQueue+3], a
    ld a, b
    ret


SFXPushQueue:
    ; Push A onto the tail of the queue, the head of the queue will be pushed off.
    ld b, a
    ldh a, [hPlayQueue+1]
    ldh [hPlayQueue], a
    ldh a, [hPlayQueue+2]
    ldh [hPlayQueue+1], a
    ldh a, [hPlayQueue+3]
    ldh [hPlayQueue+2], a
    ld a, b
    ldh [hPlayQueue+3], a
    ret


SFXProcessQueue:
    ; Clear the playhead.
    xor a, a
    ldh [hPlayhead], a
    ldh [hPlayhead+1], a

    ; Try 4 times to pop a sound effect off the queue.
    call SFXPopQueue
    cp a, $FF
    jr nz, :+
    call SFXPopQueue
    cp a, $FF
    jr nz, :+
    call SFXPopQueue
    cp a, $FF
    jr nz, :+
    call SFXPopQueue
    cp a, $FF
    ret z

    ; If we got a valid sound effect, then play it.
    call SFXEnqueue
    ret


    ; Attempt to play the sound effect in A. Will enqueue the sound effect if the play routine is currently busy.
SFXEnqueue::
    ; If the playhead isn't null, then we're already playing something.
    ld b, a
    ldh a, [hPlayhead]
    ld l, a
    ldh a, [hPlayhead+1]
    ld h, a
    or a, l
    jr z, :+
    ld a, b
    call SFXPushQueue
    ret

    ; Play the sound effect for the sfx id in A.
:   ld a, b
    cp a, PIECE_I
    jr nz, :+
    ld a, LOW(sSFXPieceI)
    ldh [hPlayhead], a
    ld a, HIGH(sSFXPieceI)
    ldh [hPlayhead+1], a
    call SFXPlay
    ret

:   cp a, PIECE_S
    jr nz, :+
    ld a, LOW(sSFXPieceS)
    ldh [hPlayhead], a
    ld a, HIGH(sSFXPieceS)
    ldh [hPlayhead+1], a
    call SFXPlay
    ret

:   cp a, PIECE_Z
    jr nz, :+
    ld a, LOW(sSFXPieceZ)
    ldh [hPlayhead], a
    ld a, HIGH(sSFXPieceZ)
    ldh [hPlayhead+1], a
    call SFXPlay
    ret

:   cp a, PIECE_J
    jr nz, :+
    ld a, LOW(sSFXPieceJ)
    ldh [hPlayhead], a
    ld a, HIGH(sSFXPieceJ)
    ldh [hPlayhead+1], a
    call SFXPlay
    ret

:   cp a, PIECE_L
    jr nz, :+
    ld a, LOW(sSFXPieceL)
    ldh [hPlayhead], a
    ld a, HIGH(sSFXPieceL)
    ldh [hPlayhead+1], a
    call SFXPlay
    ret

:   cp a, PIECE_O
    jr nz, :+
    ld a, LOW(sSFXPieceO)
    ldh [hPlayhead], a
    ld a, HIGH(sSFXPieceO)
    ldh [hPlayhead+1], a
    call SFXPlay
    ret

:   cp a, PIECE_T
    jr nz, :+
    ld a, LOW(sSFXPieceT)
    ldh [hPlayhead], a
    ld a, HIGH(sSFXPieceT)
    ldh [hPlayhead+1], a
    call SFXPlay
    ret

:   cp a, SFX_IRS
    jr nz, :+
    ld a, LOW(sSFXIRS)
    ldh [hPlayhead], a
    ld a, HIGH(sSFXIRS)
    ldh [hPlayhead+1], a
    call SFXPlay
    ret

:   cp a, SFX_DROP
    jr nz, :+
    ld a, LOW(sSFXDrop)
    ldh [hPlayhead], a
    ld a, HIGH(sSFXDrop)
    ldh [hPlayhead+1], a
    call SFXPlay
    ret

:   cp a, SFX_LOCK
    jr nz, :+
    ld a, LOW(sSFXLock)
    ldh [hPlayhead], a
    ld a, HIGH(sSFXLock)
    ldh [hPlayhead+1], a
    call SFXPlay
    ret

:   cp a, SFX_BELL
    jr nz, :+
    ld a, LOW(sSFXBell)
    ldh [hPlayhead], a
    ld a, HIGH(sSFXBell)
    ldh [hPlayhead+1], a
    call SFXPlay
    ret

:   cp a, SFX_MOVE
    jr nz, :+
    ld a, LOW(sSFXMove)
    ldh [hPlayhead], a
    ld a, HIGH(sSFXMove)
    ldh [hPlayhead+1], a
    call SFXPlay
    ret

:   cp a, SFX_RANK_UP
    jr nz, :+
    ld a, LOW(sSFXRankUp)
    ldh [hPlayhead], a
    ld a, HIGH(sSFXRankUp)
    ldh [hPlayhead+1], a
    call SFXPlay
    ret

:   cp a, SFX_LEVEL_UP
    jr nz, :+
    ld a, LOW(sSFXLevelUp)
    ldh [hPlayhead], a
    ld a, HIGH(sSFXLevelUp)
    ldh [hPlayhead+1], a
    call SFXPlay
    ret

:   cp a, SFX_IHS
    ret nz
    ld a, LOW(sSFXIHS)
    ldh [hPlayhead], a
    ld a, HIGH(sSFXIHS)
    ldh [hPlayhead+1], a
    call SFXPlay
    ret


SFXKill::
    ; Kill all sound without pops.
    ld a, %00111111
    ldh [rNR11], a
    ldh [rNR21], a
    ld a, $FF
    ldh [rNR31], a
    ldh [rNR41], a
    ld a, %01000000
    ldh [rNR14], a
    ldh [rNR24], a
    ldh [rNR34], a
    ldh [rNR44], a

    ; Clear the queue.
    ld a, $FF
    ldh [hPlayQueue], a
    ldh [hPlayQueue+1], a
    ldh [hPlayQueue+2], a
    ldh [hPlayQueue+3], a
    xor a, a
    ldh [hPlayhead], a
    ldh [hPlayhead+1], a
    ret


    ; This play routine must be called every frame.
SFXPlay::
    ; Load the playhead position into HL.
    ldh a, [hPlayhead]
    ld l, a
    ldh a, [hPlayhead+1]
    ld h, a

    ; Nothing to do if it's a null ptr.
    or a, l
    ret z

    ; Otherwise, get the register to write to.
.getRegister
    ld a, [hl]
    inc hl

    ; If it's $FE, then we're done. Check if there's more for us in the queue.
    cp a, $FE
    jr nz, :+
    call SFXProcessQueue
    ret

    ; If it's $FF, then we're done for this frame.
:   cp a, $FF
    jr z, .savePlayhead

    ; Otherwise, put the register in C.
    ld c, a

    ; Get the value to write.
    ld a, [hl]
    inc hl

    ; Write it and loop.
    ldh [$ff00+c], a
    jr .getRegister

    ; Save the playhead position.
.savePlayhead
    ld a, l
    ldh [hPlayhead], a
    ld a, h
    ldh [hPlayhead+1], a
    ret


ENDC
