summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2016-12-06 21:56:48 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2016-12-06 21:56:48 -0500
commit09db40d83edac1f125fdb54669be1707ae3a07f6 (patch)
tree551e949d11ec472c0b1d74ef283c45c60033ac6b
parente935cd885be225472e077466508f815e7c203296 (diff)
Split out audio engine copies
-rwxr-xr-xaudio/engine_0f.asm2733
-rwxr-xr-xaudio/engine_10.asm19
-rwxr-xr-xaudio/engine_11.asm17
-rwxr-xr-xaudio/engine_12.asm17
-rwxr-xr-xaudio/engine_13.asm13
-rwxr-xr-xaudio/pikapcm.asm141
-rwxr-xr-xmacros/sound.asm11
-rwxr-xr-xmain.asm2701
8 files changed, 2964 insertions, 2688 deletions
diff --git a/audio/engine_0f.asm b/audio/engine_0f.asm
new file mode 100755
index 0000000..50dbd6e
--- /dev/null
+++ b/audio/engine_0f.asm
@@ -0,0 +1,2733 @@
+Func_3c000: ; 0x3c000
+ push hl
+ push de
+ push bc
+ push af
+ call Func_3cb1b
+ ld hl, wdd01
+ ld de, $01af
+.clearLoop
+ xor a
+ ld [hli], a
+ dec de
+ ld a, e
+ or d
+ jr nz, .clearLoop
+ ld hl, rNR50
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ld a, $80
+ ld [hli], a
+ ld hl, rNR10
+ ld e, $4
+.asm_3c022
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ld a, $8
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld a, $80
+ ld [hli], a
+ dec e
+ jr nz, .asm_3c022
+ ld a, $8
+ ld [wde9a], a
+ ld a, $77
+ ld [wde98], a
+ call Func_3cb15
+ pop af
+ pop bc
+ pop de
+ pop hl
+ ret
+
+Func_3c042: ; 0x3c042
+ ld a, [de]
+ inc de
+ and $7
+ ld [wdeae], a
+ ld c, a
+ ld b, $0
+ ld hl, WRAMPointerTable_3cc92
+ add hl, bc
+ add hl, bc
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld hl, $0002
+ add hl, bc
+ res 0, [hl]
+ push de
+ xor a
+ ld hl, $0000
+ add hl, bc
+ ld e, $32
+.loop
+ ld [hli], a
+ dec e
+ jr nz, .loop
+ ld hl, $0017
+ add hl, bc
+ xor a
+ ld [hli], a
+ inc a
+ ld [hl], a
+ ld hl, $0028
+ add hl, bc
+ ld [hl], a
+ pop de
+ ld hl, $0005
+ add hl, bc
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hl], a
+ inc de
+ ld hl, $0000
+ add hl, bc
+ ld a, [wde9b]
+ ld [hli], a
+ ld a, [wde9c]
+ ld [hl], a
+ ret
+
+ dr $3c08b, $3c090
+
+PlaySong_BankF: ; 0x3c090
+ push de
+ call Func_3c000
+ pop de
+ call Func_3cb1b
+ ld hl, wde9b
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, SongHeaderPointers0F
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, [de]
+ rlca
+ rlca
+ and $3
+ inc a
+.asm_3c0ac
+ push af
+ call Func_3c042
+ call Func_3cadf
+ pop af
+ dec a
+ jr nz, .asm_3c0ac
+ call Func_3cb15
+ ret
+
+ dr $3c0bb, $3c0c0
+
+PlaySoundEffect_BankF: ; 0x3c0c0
+ call Func_3cb1b
+ ld hl, wde9b
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, PointerTable_3e3ce
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, [de]
+ rlca
+ rlca
+ and $3
+ inc a
+.asm_3c0d7
+ push af
+ call Func_3c042
+ ld hl, $0002
+ add hl, bc
+ set 3, [hl]
+ call Func_3cadf
+ pop af
+ dec a
+ jr nz, .asm_3c0d7
+ call Func_3cb15
+ ret
+
+ dr $3c0ec, $3c0f0
+
+PlayCry_BankF: ; 0x3c0f0
+; Plays a Pokemon cry.
+; Input: e = mon id
+ call Func_3cb1b
+ ld a, e
+ and a
+ ret z
+ dec e
+ ld d, $0
+ ld hl, CryData
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl] ; de = base cry id
+ inc hl
+ ld a, [hli]
+ ld [wdea8], a
+ ld a, [hli]
+ ld [wdea9], a ; dea8 = cry pitch
+ ld a, [hli]
+ ld [wdeaa], a
+ ld a, [hl]
+ ld [wdeab], a ; deaa = cry length
+ ld hl, wde9b
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, CryBasePointers
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, [de]
+ rlca
+ rlca
+ and $3
+ inc a
+.asm_3c12a
+ push af
+ call Func_3c042
+ ld hl, $0002
+ add hl, bc
+ set 5, [hl]
+ ld hl, $0003
+ add hl, bc
+ set 4, [hl]
+ ld hl, $0026
+ add hl, bc
+ ld a, [wdea8]
+ ld [hli], a
+ ld a, [wdea9]
+ ld [hl], a
+ ld a, [wde97]
+ and $3
+ cp $3
+ jr nc, .asm_3c15b
+ ld hl, $0017
+ add hl, bc
+ ld a, [wdeaa]
+ ld [hli], a
+ ld a, [wdeab]
+ ld [hl], a
+.asm_3c15b
+ call Func_3cadf
+ pop af
+ dec a
+ jr nz, .asm_3c12a
+ ld a, [wdeac]
+ and a
+ jr nz, .asm_3c173
+ ld a, [wde98]
+ ld [wdeac], a
+ ld a, $77
+ ld [wde98], a
+.asm_3c173
+ ld a, $1
+ ld [wdead], a
+ call Func_3cb15
+ ret
+
+ dr $3c17c, $3c180
+
+Func_3c180: ; 0x3c180
+ ld a, [wdd00]
+ and a
+ ret z
+ xor a
+ ld [wde97], a
+ ld [wde99], a
+ ld bc, wdd01
+.asm_3c18f
+ ld hl, $0002
+ add hl, bc
+ bit 0, [hl]
+ jp z, .asm_3c22d
+ ld hl, $0014
+ add hl, bc
+ ld a, [hl]
+ cp $2
+ jr c, .asm_3c1a4
+ dec [hl]
+ jr .asm_3c1c1
+
+.asm_3c1a4
+ ld hl, $001c
+ add hl, bc
+ ld a, [hl]
+ ld hl, $001b
+ add hl, bc
+ ld [hl], a
+ ld hl, $0025
+ add hl, bc
+ ld a, [hl]
+ ld hl, $0024
+ add hl, bc
+ ld [hl], a
+ ld hl, $0003
+ add hl, bc
+ res 1, [hl]
+ call Func_3c670
+.asm_3c1c1
+ ld hl, $000d
+ add hl, bc
+ ld a, [hli]
+ ld [wde91], a
+ ld a, [hli]
+ ld [wde92], a
+ ld a, [hli]
+ ld [wde93], a
+ ld a, [hl]
+ ld [wde94], a
+ call Func_3c4f0
+ call Func_3c632
+ ld a, [wdead]
+ and a
+ jr z, .asm_3c20a
+ ld a, [wde97]
+ cp $4
+ jr nc, .asm_3c219
+ ld hl, wddcb
+ bit 0, [hl]
+ jr nz, .asm_3c204
+ ld hl, wddfd
+ bit 0, [hl]
+ jr nz, .asm_3c204
+ ld hl, wde2f
+ bit 0, [hl]
+ jr nz, .asm_3c204
+ ld hl, wde61
+ bit 0, [hl]
+ jr z, .asm_3c20a
+.asm_3c204
+ ld hl, $000b
+ add hl, bc
+ set 5, [hl]
+.asm_3c20a
+ ld a, [wde97]
+ cp $4
+ jr nc, .asm_3c219
+ ld hl, $00ca
+ add hl, bc
+ bit 0, [hl]
+ jr nz, .asm_3c227
+.asm_3c219
+ call Func_3c24d
+ ld hl, $0019
+ add hl, bc
+ ld a, [wde99]
+ or [hl]
+ ld [wde99], a
+.asm_3c227
+ ld hl, $000b
+ add hl, bc
+ xor a
+ ld [hl], a
+.asm_3c22d
+ ld hl, $0032
+ add hl, bc
+ ld c, l
+ ld b, h
+ ld a, [wde97]
+ inc a
+ ld [wde97], a
+ cp $8
+ jp nz, .asm_3c18f
+ call Func_3c40d
+ ld a, [wde98]
+ ld [rNR50], a
+ ld a, [wde99]
+ ld [rNR51], a
+ ret
+
+Func_3c24d: ; 0x3c24d
+ ld hl, PointerTable_3c25e
+ ld a, [wde97]
+ and $7
+ add a
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+PointerTable_3c25e: ; 0x3c25e
+ dw Func_3c26e
+ dw Func_3c2e0
+ dw Func_3c349
+ dw Func_3c3cf
+ dw Func_3c26e
+ dw Func_3c2e0
+ dw Func_3c349
+ dw Func_3c3cf
+
+Func_3c26e: ; 0x3c26e
+ ld hl, $000b
+ add hl, bc
+ bit 3, [hl]
+ jr z, .asm_3c27b
+ ld a, [wde9a]
+ ld [rNR10], a
+.asm_3c27b
+ bit 5, [hl]
+ jr nz, .asm_3c2ba
+ bit 4, [hl]
+ jr nz, .asm_3c2c6
+ bit 6, [hl]
+ jr nz, .asm_3c2b4
+ bit 1, [hl]
+ jr z, .asm_3c295
+ ld a, [wde93]
+ ld [rNR13], a
+ ld a, [wde94]
+ ld [rNR14], a
+.asm_3c295
+ bit 2, [hl]
+ jr z, .asm_3c2a5
+ ld a, [wde92]
+ ld [rNR12], a
+ ld a, [wde94]
+ or $80
+ ld [rNR14], a
+.asm_3c2a5
+ bit 0, [hl]
+ ret z
+ ld a, [wde91]
+ ld d, a
+ ld a, [rNR11]
+ and $3f
+ or d
+ ld [rNR11], a
+ ret
+
+.asm_3c2b4
+ ld a, [wde93]
+ ld [rNR13], a
+ ret
+
+.asm_3c2ba
+ ld a, $8
+ ld [rNR12], a
+ ld a, [wde94]
+ or $80
+ ld [rNR14], a
+ ret
+
+.asm_3c2c6
+ ld hl, wde91
+ ld a, $3f
+ or [hl]
+ ld [rNR11], a
+ ld a, [wde92]
+ ld [rNR12], a
+ ld a, [wde93]
+ ld [rNR13], a
+ ld a, [wde94]
+ or $80
+ ld [rNR14], a
+ ret
+
+Func_3c2e0: ; 0x3c2e0
+ ld hl, $000b
+ add hl, bc
+ bit 5, [hl]
+ jr nz, .asm_3c323
+ bit 4, [hl]
+ jr nz, .asm_3c32f
+ bit 6, [hl]
+ jr nz, .asm_3c31d
+ bit 1, [hl]
+ jr z, .asm_3c2fe
+ ld a, [wde93]
+ ld [rNR23], a
+ ld a, [wde94]
+ ld [rNR24], a
+.asm_3c2fe
+ bit 2, [hl]
+ jr z, .asm_3c30e
+ ld a, [wde92]
+ ld [rNR22], a
+ ld a, [wde94]
+ or $80
+ ld [rNR24], a
+.asm_3c30e
+ bit 0, [hl]
+ ret z
+ ld a, [wde91]
+ ld d, a
+ ld a, [rNR21]
+ and $3f
+ or d
+ ld [rNR21], a
+ ret
+
+.asm_3c31d
+ ld a, [wde93]
+ ld [rNR23], a
+ ret
+
+.asm_3c323
+ ld a, $8
+ ld [rNR22], a
+ ld a, [wde94]
+ or $80
+ ld [rNR24], a
+ ret
+
+.asm_3c32f
+ ld hl, wde91
+ ld a, $3f
+ or [hl]
+ ld [rNR21], a
+ ld a, [wde92]
+ ld [rNR22], a
+ ld a, [wde93]
+ ld [rNR23], a
+ ld a, [wde94]
+ or $80
+ ld [rNR24], a
+ ret
+
+Func_3c349: ; 0x3c349
+ ld hl, $000b
+ add hl, bc
+ bit 5, [hl]
+ jr nz, .asm_3c387
+ bit 4, [hl]
+ jr nz, .asm_3c38b
+ bit 6, [hl]
+ jr nz, .asm_3c381
+ bit 1, [hl]
+ jr z, .asm_3c367
+ ld a, [wde93]
+ ld [rNR33], a
+ ld a, [wde94]
+ ld [rNR34], a
+.asm_3c367
+ bit 2, [hl]
+ ret z
+ xor a
+ ld [rNR30], a
+ call LoadWavePattern
+ ld a, $80
+ ld [rNR30], a
+ ld a, [wde93]
+ ld [rNR33], a
+ ld a, [wde94]
+ or $80
+ ld [rNR34], a
+ ret
+
+.asm_3c381
+ ld a, [wde93]
+ ld [rNR33], a
+ ret
+
+.asm_3c387
+ xor a
+ ld [rNR30], a
+ ret
+
+.asm_3c38b
+ ld a, $3f
+ ld [rNR31], a
+ xor a
+ ld [rNR30], a
+ call LoadWavePattern
+ ld a, $80
+ ld [rNR30], a
+ ld a, [wde93]
+ ld [rNR33], a
+ ld a, [wde94]
+ or $80
+ ld [rNR34], a
+ ret
+
+LoadWavePattern: ; 0x3c3a6
+ push hl
+ ld a, [wde92]
+ and $f
+ ld l, a
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ ld de, WavePatterns_BankF
+ add hl, de
+ ld de, rWave_0
+ push bc
+ ld b, $10
+.loop
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec b
+ jr nz, .loop
+ pop bc
+ pop hl
+ ld a, [wde92]
+ and $f0
+ sla a
+ ld [rNR32], a ; set volume of wave channel
+ ret
+
+Func_3c3cf: ; 0x3c3cf
+ ld hl, $000b
+ add hl, bc
+ bit 5, [hl]
+ jr nz, .asm_3c3f1
+ bit 4, [hl]
+ jr nz, .asm_3c3fa
+ bit 1, [hl]
+ jr z, .asm_3c3e4
+ ld a, [wde93]
+ ld [rNR43], a
+.asm_3c3e4
+ bit 2, [hl]
+ ret z
+ ld a, [wde92]
+ ld [rNR42], a
+ ld a, $80
+ ld [rNR44], a
+ ret
+
+.asm_3c3f1
+ ld a, $8
+ ld [rNR42], a
+ ld a, $80
+ ld [rNR44], a
+ ret
+
+.asm_3c3fa
+ ld a, $3f
+ ld [rNR41], a
+ ld a, [wde92]
+ ld [rNR42], a
+ ld a, [wde93]
+ ld [rNR43], a
+ ld a, $80
+ ld [rNR44], a
+ ret
+
+Func_3c40d: ; 0x3c40d
+ ld a, [wdea2]
+ and a
+ ret z
+ ld a, [wdea3]
+ and a
+ jr z, .asm_3c41d
+ dec a
+ ld [wdea3], a
+ ret
+
+.asm_3c41d
+ ld a, [wdea2]
+ ld d, a
+ and $7f
+ ld [wdea3], a
+ ld a, [wde98]
+ and $7
+ bit 7, d
+ jr nz, .asm_3c448
+ and a
+ jr z, .asm_3c435
+ dec a
+ jr .asm_3c454
+
+.asm_3c435
+ ld a, [wdea4]
+ ld e, a
+ ld a, [wdea5]
+ ld d, a
+ push bc
+ call PlaySong_BankF
+ pop bc
+ ld hl, wdea2
+ set 7, [hl]
+ ret
+
+.asm_3c448
+ cp $7
+ jr nc, .asm_3c44f
+ inc a
+ jr .asm_3c454
+
+.asm_3c44f
+ xor a
+ ld [wdea2], a
+ ret
+
+.asm_3c454
+ ld d, a
+ swap a
+ or d
+ ld [wde98], a
+ ret
+
+Func_3c45c: ; 0x3c45c
+ ld hl, $0003
+ add hl, bc
+ bit 1, [hl]
+ ret z
+ ld hl, $0014
+ add hl, bc
+ ld a, [hl]
+ ld hl, wde95
+ sub [hl]
+ jr nc, .asm_3c470
+ ld a, $1
+.asm_3c470
+ ld [hl], a
+ ld hl, $000f
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $001f
+ add hl, bc
+ ld a, e
+ sub [hl]
+ ld e, a
+ ld a, d
+ sbc $0
+ ld d, a
+ ld hl, $0020
+ add hl, bc
+ sub [hl]
+ jr nc, .asm_3c4ab
+ ld hl, $0004
+ add hl, bc
+ set 1, [hl]
+ ld hl, $000f
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $001f
+ add hl, bc
+ ld a, [hl]
+ sub e
+ ld e, a
+ ld a, d
+ sbc $0
+ ld d, a
+ ld hl, $0020
+ add hl, bc
+ ld a, [hl]
+ sub d
+ ld d, a
+ jr .asm_3c4c9
+
+.asm_3c4ab
+ ld hl, $0004
+ add hl, bc
+ res 1, [hl]
+ ld hl, $000f
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $001f
+ add hl, bc
+ ld a, e
+ sub [hl]
+ ld e, a
+ ld a, d
+ sbc $0
+ ld d, a
+ ld hl, $0020
+ add hl, bc
+ sub [hl]
+ ld d, a
+.asm_3c4c9
+ push bc
+ ld hl, wde95
+ ld b, $0
+.asm_3c4cf
+ inc b
+ ld a, e
+ sub [hl]
+ ld e, a
+ jr nc, .asm_3c4cf
+ ld a, d
+ and a
+ jr z, .asm_3c4dc
+ dec d
+ jr .asm_3c4cf
+
+.asm_3c4dc
+ ld a, e
+ add [hl]
+ ld d, b
+ pop bc
+ ld hl, $0021
+ add hl, bc
+ ld [hl], d
+ ld hl, $0022
+ add hl, bc
+ ld [hl], a
+ ld hl, $0023
+ add hl, bc
+ xor a
+ ld [hl], a
+
+ ; fall through
+
+Func_3c4f0: ; 0x3c4f0
+ ld hl, $0003
+ add hl, bc
+ bit 2, [hl]
+ jr z, .asm_3c50b
+ ld hl, $001a
+ add hl, bc
+ ld a, [hl]
+ rlca
+ rlca
+ ld [hl], a
+ and $c0
+ ld [wde91], a
+ ld hl, $000b
+ add hl, bc
+ set 0, [hl]
+.asm_3c50b
+ ld hl, $0003
+ add hl, bc
+ bit 4, [hl]
+ jr z, .asm_3c529
+ ld hl, $0026
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, wde93
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, de
+ ld e, l
+ ld d, h
+ ld hl, wde93
+ ld [hl], e
+ inc hl
+ ld [hl], d
+.asm_3c529
+ ld hl, $0003
+ add hl, bc
+ bit 1, [hl]
+ jp z, .asm_3c5c1
+ ld hl, $000f
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $0004
+ add hl, bc
+ bit 1, [hl]
+ jr z, .asm_3c574
+ ld hl, $0021
+ add hl, bc
+ ld l, [hl]
+ ld h, $0
+ add hl, de
+ ld d, h
+ ld e, l
+ ld hl, $0022
+ add hl, bc
+ ld a, [hl]
+ ld hl, $0023
+ add hl, bc
+ add [hl]
+ ld [hl], a
+ ld a, $0
+ adc e
+ ld e, a
+ ld a, $0
+ adc d
+ ld d, a
+ ld hl, $0020
+ add hl, bc
+ ld a, [hl]
+ cp d
+ jp c, .asm_3c5a1
+ jr nz, .asm_3c5b4
+ ld hl, $001f
+ add hl, bc
+ ld a, [hl]
+ cp e
+ jp c, .asm_3c5a1
+ jr .asm_3c5b4
+
+.asm_3c574
+ ld a, e
+ ld hl, $0021
+ add hl, bc
+ ld e, [hl]
+ sub e
+ ld e, a
+ ld a, d
+ sbc $0
+ ld d, a
+ ld hl, $0022
+ add hl, bc
+ ld a, [hl]
+ add a
+ ld [hl], a
+ ld a, e
+ sbc $0
+ ld e, a
+ ld a, d
+ sbc $0
+ ld d, a
+ ld hl, $0020
+ add hl, bc
+ ld a, d
+ cp [hl]
+ jr c, .asm_3c5a1
+ jr nz, .asm_3c5b4
+ ld hl, $001f
+ add hl, bc
+ ld a, e
+ cp [hl]
+ jr nc, .asm_3c5b4
+.asm_3c5a1
+ ld hl, $0003
+ add hl, bc
+ res 1, [hl]
+ ld hl, $0004
+ add hl, bc
+ res 1, [hl]
+ ld hl, $0020
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+.asm_3c5b4
+ ld hl, $000f
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, $000b
+ add hl, bc
+ set 1, [hl]
+.asm_3c5c1
+ ld hl, $0003
+ add hl, bc
+ bit 0, [hl]
+ jr z, .asm_3c61a
+ ld hl, $001b
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr nz, .asm_3c5e3
+ ld hl, $001d
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_3c61a
+ ld d, a
+ ld hl, $001e
+ add hl, bc
+ ld a, [hl]
+ and $f
+ jr z, .asm_3c5e6
+.asm_3c5e3
+ dec [hl]
+ jr .asm_3c61a
+
+.asm_3c5e6
+ ld a, [hl]
+ swap [hl]
+ or [hl]
+ ld [hl], a
+ ld a, [wde93]
+ ld e, a
+ ld hl, $0004
+ add hl, bc
+ bit 0, [hl]
+ jr z, .asm_3c605
+ res 0, [hl]
+ ld a, d
+ and $f
+ ld d, a
+ ld a, e
+ sub d
+ jr nc, .asm_3c611
+ ld a, $0
+ jr .asm_3c611
+
+.asm_3c605
+ set 0, [hl]
+ ld a, d
+ and $f0
+ swap a
+ add e
+ jr nc, .asm_3c611
+ ld a, $ff
+.asm_3c611
+ ld [wde93], a
+ ld hl, $000b
+ add hl, bc
+ set 6, [hl]
+.asm_3c61a
+ ld hl, $0003
+ add hl, bc
+ bit 3, [hl]
+ ret z
+ ld hl, $0024
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_3c62b
+ dec [hl]
+ ret
+
+.asm_3c62b
+ ld hl, $000b
+ add hl, bc
+ set 5, [hl]
+ ret
+
+Func_3c632: ; 0x3c632
+ ld hl, $0002
+ add hl, bc
+ bit 4, [hl]
+ ret z
+ ld a, [wde9f]
+ and a
+ jr z, .asm_3c644
+ dec a
+ ld [wde9f], a
+ ret
+
+.asm_3c644
+ ld hl, wde9d
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, [de]
+ inc de
+ cp $ff
+ ret z
+ and $f
+ inc a
+ ld [wde9f], a
+ ld a, [de]
+ inc de
+ ld [wde92], a
+ ld a, [de]
+ inc de
+ ld [wde93], a
+ xor a
+ ld [wde94], a
+ ld hl, wde9d
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, $000b
+ add hl, bc
+ set 4, [hl]
+ ret
+
+Func_3c670: ; 0x3c670
+ call Func_3ca10
+ cp $ff
+ jr z, .asm_3c6c9
+ cp $d0
+ jr c, .asm_3c680
+.asm_3c67b
+ call Func_3c786
+ jr Func_3c670
+
+.asm_3c680
+ ld hl, $0002
+ add hl, bc
+ bit 3, [hl]
+ jp nz, Func_3c723
+ bit 5, [hl]
+ jp nz, Func_3c723
+ bit 4, [hl]
+ jp nz, Func_3c750
+ ld a, [wde96]
+ and $f
+ call Func_3ca5b
+ ld a, [wde96]
+ swap a
+ and $f
+ jr z, .asm_3c6c2
+ ld hl, $0011
+ add hl, bc
+ ld [hl], a
+ ld e, a
+ ld hl, $0012
+ add hl, bc
+ ld d, [hl]
+ call Func_3ca2b
+ ld hl, $000f
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, $000b
+ add hl, bc
+ set 4, [hl]
+ jp Func_3c45c
+
+.asm_3c6c2
+ ld hl, $000b
+ add hl, bc
+ set 5, [hl]
+ ret
+
+.asm_3c6c9
+ ld hl, $0002
+ add hl, bc
+ bit 1, [hl]
+ jr nz, .asm_3c67b
+ ld a, [wde97]
+ cp $4
+ jr nc, .asm_3c6e0
+ ld hl, $00ca
+ add hl, bc
+ bit 0, [hl]
+ jr nz, .asm_3c6f6
+.asm_3c6e0
+ ld hl, $0002
+ add hl, bc
+ bit 5, [hl]
+ call nz, Func_3c704
+ ld a, [wde97]
+ cp $4
+ jr nz, .asm_3c6f6
+ xor a
+ ld [rNR10], a
+ ld [wde9a], a
+.asm_3c6f6
+ ld hl, $0002
+ add hl, bc
+ res 0, [hl]
+ ld hl, $0000
+ add hl, bc
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ret
+
+Func_3c704: ; 0x3c704
+ ld a, [wde97]
+ cp $4
+ ret nz
+ xor a
+ ld hl, wde21
+ ld [hli], a
+ ld [hl], a
+ ld hl, wde85
+ ld [hli], a
+ ld [hl], a
+ ld a, [wdeac]
+ ld [wde98], a
+ xor a
+ ld [wdeac], a
+ ld [wdead], a
+ ret
+
+Func_3c723: ; 0x3c723
+ ld hl, $000b
+ add hl, bc
+ set 4, [hl]
+ ld a, [wde96]
+ call Func_3ca5b
+ call Func_3ca10
+ ld hl, $000e
+ add hl, bc
+ ld [hl], a
+ call Func_3ca10
+ ld hl, $000f
+ add hl, bc
+ ld [hl], a
+ ld a, [wde97]
+ and $3
+ cp $3
+ ret z
+ call Func_3ca10
+ ld hl, $0010
+ add hl, bc
+ ld [hl], a
+ ret
+
+Func_3c750: ; 0x3c750
+ ld a, [wde97]
+ cp $3
+ ret nz
+ ld a, [wde96]
+ and $f
+ call Func_3ca5b
+ ld a, [wdea1]
+ ld e, a
+ ld d, $0
+ ld hl, $4ba2
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wde96]
+ swap a
+ and $f
+ ret z
+ ld e, a
+ ld d, $0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld [wde9d], a
+ ld a, [hl]
+ ld [wde9e], a
+ xor a
+ ld [wde9f], a
+ ret
+
+Func_3c786: ; 0x3c786
+ ld a, [wde96]
+ sub $d0
+ ld e, a
+ ld d, $0
+ ld hl, PointerTable_3c797
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+PointerTable_3c797: ; 0x3c797
+ dw Func_3c9b6
+ dw Func_3c9b6
+ dw Func_3c9b6
+ dw Func_3c9b6
+ dw Func_3c9b6
+ dw Func_3c9b6
+ dw Func_3c9b6
+ dw Func_3c9b6
+ dw Func_3c973
+ dw Func_3c9c1
+ dw Func_3c9aa
+ dw Func_3c994
+ dw Func_3c9a1
+ dw Func_3c987
+ dw Func_3c939
+ dw Func_3c951
+ dw Func_3c8ff
+ dw Func_3c8c4
+ dw Func_3c8b5
+ dw Func_3c95f
+ dw Func_3c9ca
+ dw Func_3c9da
+ dw Func_3c926
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c9e9
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3ca05
+ dw Func_3ca0b
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c885
+ dw Func_3c88e
+ dw Func_3c833
+ dw Func_3c843
+ dw Func_3c80d
+ dw Func_3c7f8
+
+Func_3c7f7: ; 0x3c7f7
+ ret
+
+Func_3c7f8: ; 0x3c7f8
+ ld hl, $0002
+ add hl, bc
+ res 1, [hl]
+ ld hl, $0007
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $0005
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+
+Func_3c80d: ; 0x3c80d
+ call Func_3ca10
+ ld e, a
+ call Func_3ca10
+ ld d, a
+ push de
+ ld hl, $0005
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $0007
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ pop de
+ ld hl, $0005
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, $0002
+ add hl, bc
+ set 1, [hl]
+ ret
+
+Func_3c833: ; 0x3c833
+ call Func_3ca10
+ ld e, a
+ call Func_3ca10
+ ld d, a
+ ld hl, $0005
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+
+Func_3c843: ; 0x3c843
+ call Func_3ca10
+ ld hl, $0002
+ add hl, bc
+ bit 2, [hl]
+ jr nz, .asm_3c859
+ and a
+ jr z, .asm_3c862
+ dec a
+ set 2, [hl]
+ ld hl, $0016
+ add hl, bc
+ ld [hl], a
+.asm_3c859
+ ld hl, $0016
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_3c872
+ dec [hl]
+.asm_3c862
+ call Func_3ca10
+ ld e, a
+ call Func_3ca10
+ ld d, a
+ ld hl, $0005
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+
+.asm_3c872
+ ld hl, $0002
+ add hl, bc
+ res 2, [hl]
+ ld hl, $0005
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc de
+ inc de
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ ret
+
+Func_3c885: ; 0x3c885
+ call Func_3ca10
+ ld hl, $000c
+ add hl, bc
+ ld [hl], a
+ ret
+
+Func_3c88e: ; 0x3c88e
+ call Func_3ca10
+ ld hl, $000c
+ add hl, bc
+ cp [hl]
+ jr z, .asm_3c8a5
+ ld hl, $0005
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc de
+ inc de
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ ret
+
+.asm_3c8a5
+ call Func_3ca10
+ ld e, a
+ call Func_3ca10
+ ld d, a
+ ld hl, $0005
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+
+Func_3c8b5: ; 0x3c8b5
+ call Func_3ca10
+ ld hl, $0025
+ add hl, bc
+ ld [hl], a
+ ld hl, $0003
+ add hl, bc
+ set 3, [hl]
+ ret
+
+Func_3c8c4: ; 0x3c8c4
+ ld hl, $0003
+ add hl, bc
+ set 0, [hl]
+ ld hl, $0004
+ add hl, bc
+ res 0, [hl]
+ call Func_3ca10
+ ld hl, $001c
+ add hl, bc
+ ld [hl], a
+ ld hl, $001b
+ add hl, bc
+ ld [hl], a
+ call Func_3ca10
+ ld hl, $001d
+ add hl, bc
+ ld d, a
+ and $f0
+ swap a
+ srl a
+ ld e, a
+ adc $0
+ swap a
+ or e
+ ld [hl], a
+ ld hl, $001e
+ add hl, bc
+ ld a, d
+ and $f
+ ld d, a
+ swap a
+ or d
+ ld [hl], a
+ ret
+
+Func_3c8ff: ; 0x3c8ff
+ call Func_3ca10
+ ld [wde95], a
+ call Func_3ca10
+ ld d, a
+ and $f
+ ld e, a
+ ld a, d
+ swap a
+ and $f
+ ld d, a
+ call Func_3ca2b
+ ld hl, $001f
+ add hl, bc
+ ld [hl], e
+ ld hl, $0020
+ add hl, bc
+ ld [hl], d
+ ld hl, $0003
+ add hl, bc
+ set 1, [hl]
+ ret
+
+Func_3c926: ; 0x3c926
+ ld hl, $0003
+ add hl, bc
+ set 4, [hl]
+ ld hl, $0027
+ add hl, bc
+ call Func_3ca10
+ ld [hld], a
+ call Func_3ca10
+ ld [hl], a
+ ret
+
+Func_3c939: ; 0x3c939
+ ld hl, $0003
+ add hl, bc
+ set 2, [hl]
+ call Func_3ca10
+ rrca
+ rrca
+ ld hl, $001a
+ add hl, bc
+ ld [hl], a
+ and $c0
+ ld hl, $000d
+ add hl, bc
+ ld [hl], a
+ ret
+
+Func_3c951: ; 0x3c951
+ ld hl, $0002
+ add hl, bc
+ bit 3, [hl]
+ jr z, .asm_3c95c
+ res 3, [hl]
+ ret
+
+.asm_3c95c
+ set 3, [hl]
+ ret
+
+Func_3c95f: ; 0x3c95f
+ ld hl, $0002
+ add hl, bc
+ bit 4, [hl]
+ jr z, .asm_3c96a
+ res 4, [hl]
+ ret
+
+.asm_3c96a
+ set 4, [hl]
+ call Func_3ca10
+ ld [wdea1], a
+ ret
+
+Func_3c973: ; 0x3c973
+ call Func_3ca10
+ ld hl, $0028
+ add hl, bc
+ ld [hl], a
+ ld a, [wde97]
+ and $3
+ cp $3
+ ret z
+ call Func_3c9a1
+ ret
+
+Func_3c987: ; 0x3c987
+ call Func_3ca10
+ ld [wde9a], a
+ ld hl, $000b
+ add hl, bc
+ set 3, [hl]
+ ret
+
+Func_3c994: ; 0x3c994
+ call Func_3ca10
+ rrca
+ rrca
+ and $c0
+ ld hl, $000d
+ add hl, bc
+ ld [hl], a
+ ret
+
+Func_3c9a1: ; 0x3c9a1
+ call Func_3ca10
+ ld hl, $000e
+ add hl, bc
+ ld [hl], a
+ ret
+
+Func_3c9aa: ; 0x3c9aa
+ call Func_3ca10
+ ld d, a
+ call Func_3ca10
+ ld e, a
+ call Func_3ca95
+ ret
+
+Func_3c9b6: ; 0x3c9b6
+ ld hl, $0012
+ add hl, bc
+ ld a, [wde96]
+ and $7
+ ld [hl], a
+ ret
+
+Func_3c9c1: ; 0x3c9c1
+ call Func_3ca10
+ ld hl, $0013
+ add hl, bc
+ ld [hl], a
+ ret
+
+Func_3c9ca: ; 0x3c9ca
+ ld a, [wde97]
+ call Func_3caf4
+ call Func_3ca10
+ ld hl, $0019
+ add hl, bc
+ and [hl]
+ ld [hl], a
+ ret
+
+Func_3c9da: ; 0x3c9da
+ call Func_3ca10
+ ld a, [wdea2]
+ and a
+ ret nz
+ ld a, [wde96]
+ ld [wde98], a
+ ret
+
+Func_3c9e9: ; 0x3c9e9
+ call Func_3ca10
+ ld e, a
+ cp $80
+ jr nc, .asm_3c9f5
+ ld d, $0
+ jr .asm_3c9f7
+
+.asm_3c9f5
+ ld d, $ff
+.asm_3c9f7
+ ld hl, $0017
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, de
+ ld e, l
+ ld d, h
+ call Func_3ca95
+ ret
+
+Func_3ca05: ; 0x3ca05
+ ld a, $1
+ ld [wdead], a
+ ret
+
+Func_3ca0b: ; 0x3ca0b
+ xor a
+ ld [wdead], a
+ ret
+
+Func_3ca10: ; 0x3ca10
+ push hl
+ push de
+ ld hl, $0005
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, [de]
+ ld [wde96], a
+ inc de
+ ld hl, $0005
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ pop de
+ pop hl
+ ld a, [wde96]
+ ret
+
+Func_3ca2b: ; 0x3ca2b
+ ld hl, $0013
+ add hl, bc
+ ld a, [hl]
+ swap a
+ and $f
+ add d
+ push af
+ ld hl, $0013
+ add hl, bc
+ ld a, [hl]
+ and $f
+ ld l, a
+ ld d, $0
+ ld h, d
+ add hl, de
+ add hl, hl
+ ld de, $4b20 ; todo
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ pop af
+.asm_3ca4b
+ cp $7
+ jr nc, .asm_3ca56
+ sra d
+ rr e
+ inc a
+ jr .asm_3ca4b
+
+.asm_3ca56
+ ld a, d
+ and $7
+ ld d, a
+ ret
+
+Func_3ca5b: ; 0x3ca5b
+ inc a
+ ld e, a
+ ld d, $0
+ ld hl, $0028
+ add hl, bc
+ ld a, [hl]
+ ld l, $0
+ call Func_3ca86
+ ld a, l
+ ld hl, $0017
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $0015
+ add hl, bc
+ ld l, [hl]
+ call Func_3ca86
+ ld e, l
+ ld d, h
+ ld hl, $0015
+ add hl, bc
+ ld [hl], e
+ ld hl, $0014
+ add hl, bc
+ ld [hl], d
+ ret
+
+Func_3ca86: ; 0x3ca86
+ ld h, $0
+.asm_3ca88
+ srl a
+ jr nc, .asm_3ca8d
+ add hl, de
+.asm_3ca8d
+ sla e
+ rl d
+ and a
+ jr nz, .asm_3ca88
+ ret
+
+Func_3ca95: ; 0x3ca95
+ push bc
+ ld a, [wde97]
+ cp $4
+ jr nc, .asm_3cab7
+ ld bc, wdd01
+ call Func_3cad1
+ ld bc, wdd33
+ call Func_3cad1
+ ld bc, wdd65
+ call Func_3cad1
+ ld bc, wdd97
+ call Func_3cad1
+ jr .asm_3cacf
+
+.asm_3cab7
+ ld bc, wddc9
+ call Func_3cad1
+ ld bc, wddfb
+ call Func_3cad1
+ ld bc, wde2d
+ call Func_3cad1
+ ld bc, wde5f
+ call Func_3cad1
+.asm_3cacf
+ pop bc
+ ret
+
+Func_3cad1: ; 0x3cad1
+ ld hl, $0017
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ xor a
+ ld hl, $0015
+ add hl, bc
+ ld [hl], a
+ ret
+
+Func_3cadf: ; 0x3cadf
+ call Func_3cb06
+ ld a, [wdeae]
+ jr .asm_3caea
+
+ ld a, [wde97]
+.asm_3caea
+ call Func_3caf4
+ ld hl, $0002
+ add hl, bc
+ set 0, [hl]
+ ret
+
+Func_3caf4: ; 0x3caf4
+ push de
+ and $3
+ ld e, a
+ ld d, $0
+ ld hl, Data_3cc8e
+ add hl, de
+ ld a, [hl]
+ ld hl, $0019
+ add hl, bc
+ ld [hl], a
+ pop de
+ ret
+
+Func_3cb06: ; 0x3cb06
+ ld a, [wdeae]
+ and $3
+ cp $0
+ ret nz
+ xor a
+ ld [rNR10], a
+ ld [wde9a], a
+ ret
+
+Func_3cb15: ; 0x3cb15
+ ld a, $1
+ ld [wdd00], a
+ ret
+
+Func_3cb1b: ; 0x3cb1b
+ xor a
+ ld [wdd00], a
+ ret
+
+ dr $3cb20, $3cb52
+
+WavePatterns_BankF:
+WavePattern0_BankF: ; 0x3cb52
+ db $02, $46, $8A, $CE, $FF, $FE, $ED, $DC, $CB, $A9, $87, $65, $44, $33, $22, $11
+WavePattern1_BankF: ; 0x3cb62
+ db $02, $46, $8A, $CE, $EF, $FF, $FE, $EE, $DD, $CB, $A9, $87, $65, $43, $22, $11
+WavePattern2_BankF: ; 0x3cb72
+ db $01, $23, $43, $21, $FE, $CA, $8A, $CE, $01, $23, $43, $21, $FE, $CA, $8A, $CE
+WavePattern3_BankF: ; 0x3cb82
+ db $00, $11, $22, $33, $44, $33, $22, $11, $FF, $EE, $CC, $AA, $88, $AA, $CC, $EE
+WavePattern4_BankF: ; 0x3cb92
+ db $00, $11, $22, $33, $44, $33, $22, $11, $FF, $EE, $CC, $AA, $88, $AA, $CC, $EE
+
+ dr $3cba2, $3cc8e
+
+Data_3cc8e: ; 0x3cc8e
+ db $11, $22, $44, $88
+
+WRAMPointerTable_3cc92: ; 0x3cc92
+ dw $DD01
+ dw $DD33
+ dw $DD65
+ dw $DD97
+
+ dr $3cc9a, $3cca2
+
+SongHeaderPointers0F: ; 0x3cca2
+ dw Music_Nothing0F
+ dw Music_BlueField
+ dw Music_CatchEmRed
+ dw Music_HurryUpRed
+ dw Music_Pokedex
+ dw Music_GastlyInTheGraveyard
+ dw Music_HaunterInTheGraveyard
+ dw Music_GengarInTheGraveyard
+; 0x3ccb2
+
+INCLUDE "audio/music/nothing0f.asm"
+INCLUDE "audio/music/bluefield.asm"
+INCLUDE "audio/music/catchemred.asm"
+INCLUDE "audio/music/pokedex.asm"
+INCLUDE "audio/music/hurryupred.asm"
+INCLUDE "audio/music/gastlyinthegraveyard.asm"
+INCLUDE "audio/music/haunterinthegraveyard.asm"
+INCLUDE "audio/music/gengarinthegraveyard.asm"
+
+PointerTable_3e3ce: ; 0x3e3ce
+ dw $646A
+ dw $6480
+ dw $649A
+ dw $64BA
+ dw $64D0
+ dw $64E0
+ dw $64F0
+ dw $6500
+ dw $651A
+ dw $652E
+ dw $6544
+ dw $6554
+ dw $657C
+ dw $6589
+ dw $659F
+ dw $65B5
+ dw $65C5
+ dw $65E2
+ dw $65F4
+ dw $6606
+ dw $6618
+ dw $662A
+ dw $663C
+ dw $664E
+ dw $6660
+ dw $6672
+ dw $6684
+ dw $6696
+ dw $66A8
+ dw $66BA
+ dw $66CC
+ dw $66DE
+ dw $66F0
+ dw $6702
+ dw $671A
+ dw $675D
+ dw $6810
+ dw $68AE
+ dw $696D
+ dw $6A25
+ dw $6A68
+ dw $6A82
+ dw $6B17
+ dw $6BF9
+ dw $6C17
+ dw $6C31
+ dw $6C4B
+ dw $6C7D
+ dw $6C8F
+ dw $6CA7
+ dw $6CB7
+ dw $6CD1
+ dw $6CE9
+ dw $6CFF
+ dw $6D15
+ dw $6D31
+ dw $6D4D
+ dw $6D65
+ dw $6D78
+ dw $6D98
+ dw $6DB0
+ dw $6DC0
+ dw $6DD0
+ dw $6DE3
+ dw $6DF3
+ dw $6E1C
+ dw $6E32
+ dw $6E48
+ dw $6E5E
+ dw $6E78
+ dw $6E92
+ dw $6EAA
+ dw $6EC4
+ dw $6ED4
+ dw $6EEA
+ dw $6F00
+ dw $6F16
+ dw $6F27
+
+ dr $3e46a, $3ef63
+
+CryBasePointers: ; 0x3ef63
+ dw Cry_00_Header_BankF
+ dw Cry_01_Header_BankF
+ dw Cry_02_Header_BankF
+ dw Cry_03_Header_BankF
+ dw Cry_04_Header_BankF
+ dw Cry_05_Header_BankF
+ dw Cry_06_Header_BankF
+ dw Cry_07_Header_BankF
+ dw Cry_08_Header_BankF
+ dw Cry_09_Header_BankF
+ dw Cry_0A_Header_BankF
+ dw Cry_0B_Header_BankF
+ dw Cry_0C_Header_BankF
+ dw Cry_0D_Header_BankF
+ dw Cry_0E_Header_BankF
+ dw Cry_0F_Header_BankF
+ dw Cry_10_Header_BankF
+ dw Cry_11_Header_BankF
+ dw Cry_12_Header_BankF
+ dw Cry_13_Header_BankF
+ dw Cry_14_Header_BankF
+ dw Cry_15_Header_BankF
+ dw Cry_16_Header_BankF
+ dw Cry_17_Header_BankF
+ dw Cry_18_Header_BankF
+ dw Cry_19_Header_BankF
+ dw Cry_1A_Header_BankF
+ dw Cry_1B_Header_BankF
+ dw Cry_1C_Header_BankF
+ dw Cry_1D_Header_BankF
+ dw Cry_1E_Header_BankF
+ dw Cry_1F_Header_BankF
+ dw Cry_20_Header_BankF
+ dw Cry_21_Header_BankF
+ dw Cry_22_Header_BankF
+ dw Cry_23_Header_BankF
+ dw Cry_24_Header_BankF
+ dw Cry_25_Header_BankF
+
+CryData: ; 0x3efaf
+; Each entry is in the following format:
+; [base cry id], [pitch], [length
+ dw $000F, $0080, $0081 ; BULBASAUR
+ dw $000F, $0020, $0100 ; IVYSAUR
+ dw $000F, $0000, $0140 ; VENUSAUR
+ dw $0004, $0060, $00C0 ; CHARMANDER
+ dw $0004, $0020, $00C0 ; CHARMELEON
+ dw $0004, $0000, $0100 ; CHARIZARD
+ dw $001D, $0060, $00C0 ; SQUIRTLE
+ dw $001D, $0020, $00C0 ; WARTORTLE
+ dw $0013, $0000, $0100 ; BLASTOISE
+ dw $0016, $0080, $00A0 ; CATERPIE
+ dw $001C, $00CC, $0081 ; METAPOD
+ dw $0016, $0077, $00C0 ; BUTTERFREE
+ dw $0015, $00EE, $0081 ; WEEDLE
+ dw $0013, $00FF, $0081 ; KAKUNA
+ dw $0013, $0060, $0100 ; BEEDRILL
+ dw $000E, $00DF, $0084 ; PIDGEY
+ dw $0014, $0028, $0140 ; PIDGEOTTO
+ dw $0014, $0011, $017F ; PIDGEOT
+ dw $0022, $0000, $0100 ; RATTATA
+ dw $0022, $0020, $017F ; RATICATE
+ dw $0010, $0000, $0100 ; SPEAROW
+ dw $0018, $0040, $0120 ; FEAROW
+ dw $0017, $0012, $00C0 ; EKANS
+ dw $0017, $00E0, $0090 ; ARBOK
+ dw $000F, $00EE, $0081 ; PIKACHU
+ dw $0009, $00EE, $0088 ; RAICHU
+ dw $0000, $0020, $00C0 ; SANDSHREW
+ dw $0000, $00FF, $017F ; SANDSLASH
+ dw $0001, $0000, $0100 ; NIDORAN_F
+ dw $0001, $002C, $0160 ; NIDORINA
+ dw $000A, $0000, $0100 ; NIDOQUEEN
+ dw $0000, $0000, $0100 ; NIDORAN_M
+ dw $0000, $002C, $0140 ; NIDORINO
+ dw $0009, $0000, $0100 ; NIDOKING
+ dw $0019, $00CC, $0081 ; CLEFAIRY
+ dw $0019, $00AA, $00A0 ; CLEFABLE
+ dw $0024, $004F, $0090 ; VULPIX
+ dw $0024, $0088, $00E0 ; NINETALES
+ dw $000E, $00FF, $00B5 ; JIGGLYPUFF
+ dw $000E, $0068, $00E0 ; WIGGLYTUFF
+ dw $001D, $00E0, $0100 ; ZUBAT
+ dw $001D, $00FA, $0100 ; GOLBAT
+ dw $0008, $00DD, $0081 ; ODDISH
+ dw $0008, $00AA, $00C0 ; GLOOM
+ dw $0023, $0022, $017F ; VILEPLUME
+ dw $001E, $0020, $0160 ; PARAS
+ dw $001E, $0042, $017F ; PARASECT
+ dw $001A, $0044, $00C0 ; VENONAT
+ dw $001A, $0029, $0100 ; VENOMOTH
+ dw $000B, $00AA, $0081 ; DIGLETT
+ dw $000B, $002A, $0090 ; DUGTRIO
+ dw $0019, $0077, $0090 ; MEOWTH
+ dw $0019, $0099, $017F ; PERSIAN
+ dw $0021, $0020, $00E0 ; PSYDUCK
+ dw $0021, $00FF, $00C0 ; GOLDUCK
+ dw $000A, $00DD, $00E0 ; MANKEY
+ dw $000A, $00AF, $00C0 ; PRIMEAPE
+ dw $001F, $0020, $00C0 ; GROWLITHE
+ dw $0015, $0000, $0100 ; ARCANINE
+ dw $000E, $00FF, $017F ; POLIWAG
+ dw $000E, $0077, $00E0 ; POLIWHIRL
+ dw $000E, $0000, $017F ; POLIWRATH
+ dw $001C, $00C0, $0081 ; ABRA
+ dw $001C, $00A8, $0140 ; KADABRA
+ dw $001C, $0098, $017F ; ALAKAZAM
+ dw $001F, $00EE, $0081 ; MACHOP
+ dw $001F, $0048, $00E0 ; MACHOKE
+ dw $001F, $0008, $0140 ; MACHAMP
+ dw $0021, $0055, $0081 ; BELLSPROUT
+ dw $0025, $0044, $00A0 ; WEEPINBELL
+ dw $0025, $0066, $014C ; VICTREEBEL
+ dw $001A, $0000, $0100 ; TENTACOOL
+ dw $001A, $00EE, $017F ; TENTACRUEL
+ dw $0024, $00F0, $0090 ; GEODUDE
+ dw $0024, $0000, $0100 ; GRAVELER
+ dw $0012, $00E0, $00C0 ; GOLEM
+ dw $0025, $0000, $0100 ; PONYTA
+ dw $0025, $0020, $0140 ; RAPIDASH
+ dw $0002, $0000, $0100 ; SLOWPOKE
+ dw $001F, $0000, $0100 ; SLOWBRO
+ dw $001C, $0080, $00E0 ; MAGNEMITE
+ dw $001C, $0020, $0140 ; MAGNETON
+ dw $0010, $00DD, $0081 ; FARFETCH_D
+ dw $000B, $00BB, $0081 ; DODUO
+ dw $000B, $0099, $00A0 ; DODRIO
+ dw $000C, $0088, $0140 ; SEEL
+ dw $000C, $0023, $017F ; DEWGONG
+ dw $0005, $0000, $0100 ; GRIMER
+ dw $0007, $00EF, $017F ; MUK
+ dw $0018, $0000, $0100 ; SHELLDER
+ dw $0018, $006F, $0160 ; CLOYSTER
+ dw $001C, $0000, $0100 ; GASTLY
+ dw $001C, $0030, $00C0 ; HAUNTER
+ dw $0007, $0000, $017F ; GENGAR
+ dw $0017, $00FF, $0140 ; ONIX
+ dw $000D, $0088, $00A0 ; DROWZEE
+ dw $000D, $00EE, $00C0 ; HYPNO
+ dw $0020, $0020, $0160 ; KRABBY
+ dw $0020, $00EE, $0160 ; KINGLER
+ dw $0006, $00ED, $0100 ; VOLTORB
+ dw $0006, $00A8, $0110 ; ELECTRODE
+ dw $000B, $0000, $0100 ; EXEGGCUTE
+ dw $000D, $0000, $0100 ; EXEGGUTOR
+ dw $0019, $0000, $0100 ; CUBONE
+ dw $0008, $004F, $00E0 ; MAROWAK
+ dw $0012, $0080, $0140 ; HITMONLEE
+ dw $000C, $00EE, $0140 ; HITMONCHAN
+ dw $000C, $0000, $0100 ; LICKITUNG
+ dw $0012, $00E6, $015D ; KOFFING
+ dw $0012, $00FF, $017F ; WEEZING
+ dw $0004, $0000, $0100 ; RHYHORN
+ dw $0011, $0000, $0100 ; RHYDON
+ dw $0014, $000A, $0140 ; CHANSEY
+ dw $0012, $0000, $0100 ; TANGELA
+ dw $0003, $0000, $0100 ; KANGASKHAN
+ dw $0019, $0099, $0090 ; HORSEA
+ dw $0019, $003C, $0081 ; SEADRA
+ dw $0016, $0080, $00C0 ; GOLDEEN
+ dw $0016, $0010, $017F ; SEAKING
+ dw $001E, $0002, $00A0 ; STARYU
+ dw $001E, $0000, $0100 ; STARMIE
+ dw $0020, $0008, $00C0 ; MR_MIME
+ dw $0016, $0000, $0100 ; SCYTHER
+ dw $000D, $00FF, $017F ; JYNX
+ dw $0006, $008F, $017F ; ELECTABUZZ
+ dw $0004, $00FF, $00B0 ; MAGMAR
+ dw $0014, $0000, $0100 ; PINSIR
+ dw $001D, $0011, $00C0 ; TAUROS
+ dw $0017, $0080, $0080 ; MAGIKARP
+ dw $0017, $0000, $0100 ; GYARADOS
+ dw $001B, $0000, $0100 ; LAPRAS
+ dw $000E, $00FF, $017F ; DITTO
+ dw $001A, $0088, $00E0 ; EEVEE
+ dw $001A, $00AA, $017F ; VAPOREON
+ dw $001A, $003D, $0100 ; JOLTEON
+ dw $001A, $0010, $00A0 ; FLAREON
+ dw $0025, $00AA, $017F ; PORYGON
+ dw $001F, $00F0, $0081 ; OMANYTE
+ dw $001F, $00FF, $00C0 ; OMASTAR
+ dw $0016, $00BB, $00C0 ; KABUTO
+ dw $0018, $00EE, $0081 ; KABUTOPS
+ dw $0023, $0020, $0170 ; AERODACTYL
+ dw $0005, $0055, $0081 ; SNORLAX
+ dw $0009, $0080, $00C0 ; ARTICUNO
+ dw $0018, $00FF, $0100 ; ZAPDOS
+ dw $0009, $00F8, $00C0 ; MOLTRES
+ dw $000F, $0060, $00C0 ; DRATINI
+ dw $000F, $0040, $0100 ; DRAGONAIR
+ dw $000F, $003C, $0140 ; DRAGONITE
+ dw $001E, $0099, $017F ; MEWTWO
+ dw $001E, $00EE, $017F ; MEW
+
+Cry_00_Header_BankF: ; 0x3f339
+ channelcount 3
+ channel 4, Data_3f733
+ channel 5, Data_3f742
+ channel 7, Data_3f751
+
+Cry_01_Header_BankF: ; 0x3f342
+ channelcount 3
+ channel 4, Data_3f943
+ channel 5, Data_3f956
+ channel 7, Data_3f969
+
+Cry_02_Header_BankF: ; 0x3f34b
+ channelcount 3
+ channel 4, Data_3f8b8
+ channel 5, Data_3f8c7
+ channel 7, Data_3f8d5
+
+Cry_03_Header_BankF: ; 0x3f354
+ channelcount 3
+ channel 4, Data_3f652
+ channel 5, Data_3f671
+ channel 7, Data_3f690
+
+Cry_04_Header_BankF: ; 0x3f35d
+ channelcount 3
+ channel 4, Data_3fa01
+ channel 5, Data_3fa20
+ channel 7, Data_3fa3f
+
+Cry_05_Header_BankF: ; 0x3f366
+ channelcount 3
+ channel 4, Data_3f7e1
+ channel 5, Data_3f7f4
+ channel 7, Data_3f806
+
+Cry_06_Header_BankF: ; 0x3f36f
+ channelcount 3
+ channel 4, Data_3f78b
+ channel 5, Data_3f7a5
+ channel 7, Data_3f7a6
+
+Cry_07_Header_BankF: ; 0x3f378
+ channelcount 3
+ channel 4, Data_3f7b9
+ channel 5, Data_3f7c8
+ channel 7, Data_3f7d7
+
+Cry_08_Header_BankF: ; 0x3f381
+ channelcount 3
+ channel 4, Data_3f9d1
+ channel 5, Data_3f9e4
+ channel 7, Data_3f9f7
+
+Cry_09_Header_BankF: ; 0x3f38a
+ channelcount 3
+ channel 4, Data_3f4db
+ channel 5, Data_3f4f8
+ channel 7, Data_3f519
+
+Cry_0A_Header_BankF: ; 0x3f393
+ channelcount 3
+ channel 4, Data_3f976
+ channel 5, Data_3f995
+ channel 7, Data_3f9b8
+
+Cry_0B_Header_BankF: ; 0x3f39c
+ channelcount 3
+ channel 4, Data_3f807
+ channel 5, Data_3f832
+ channel 7, Data_3f851
+
+Cry_0C_Header_BankF: ; 0x3f3a5
+ channelcount 3
+ channel 4, Data_3f86a
+ channel 5, Data_3f891
+ channel 7, Data_3f8b7
+
+Cry_0D_Header_BankF: ; 0x3f3ae
+ channelcount 3
+ channel 4, Data_3f8d6
+ channel 5, Data_3f8f5
+ channel 7, Data_3f924
+
+Cry_0E_Header_BankF: ; 0x3f
+ channelcount 3
+ channel 4, Data_3f75b
+ channel 5, Data_3f76e
+ channel 7, Data_3f781
+
+Cry_0F_Header_BankF: ; 0x3f
+ channelcount 3
+ channel 4, Data_3f69d
+ channel 5, Data_3f6b8
+ channel 7, Data_3f6d3
+
+Cry_10_Header_BankF: ; 0x3f3b7
+ channelcount 3
+ channel 4, Data_3f6e3
+ channel 5, Data_3f706
+ channel 7, Data_3f729
+
+Cry_11_Header_BankF: ; 0x3f3c0
+ channelcount 3
+ channel 4, Data_3f5bf
+ channel 5, Data_3f5de
+ channel 7, Data_3f601
+
+Cry_12_Header_BankF: ; 0x3f3c9
+ channelcount 3
+ channel 4, Data_3fad7
+ channel 5, Data_3faea
+ channel 7, Data_3fafd
+
+Cry_13_Header_BankF: ; 0x3f3d2
+ channelcount 3
+ channel 4, Data_3fb0a
+ channel 5, Data_3fb25
+ channel 7, Data_3fb40
+
+Cry_14_Header_BankF: ; 0x3f3db
+ channelcount 3
+ channel 4, Data_3fb53
+ channel 5, Data_3fb62
+ channel 7, Data_3fb71
+
+Cry_15_Header_BankF: ; 0x3f3e4
+ channelcount 3
+ channel 4, Data_3fbe1
+ channel 5, Data_3fbfc
+ channel 7, Data_3fc17
+
+Cry_16_Header_BankF: ; 0x3f3ed
+ channelcount 3
+ channel 4, Data_3fa74
+ channel 5, Data_3fa83
+ channel 7, Data_3fa92
+
+Cry_17_Header_BankF: ; 0x3f3f6
+ channelcount 3
+ channel 4, Data_3fc2a
+ channel 5, Data_3fc3d
+ channel 7, Data_3fc50
+
+Cry_18_Header_BankF: ; 0x3f3ff
+ channelcount 3
+ channel 4, Data_3fd3a
+ channel 5, Data_3fd5d
+ channel 7, Data_3fd80
+
+Cry_19_Header_BankF: ; 0x3f408
+ channelcount 3
+ channel 4, Data_3fa52
+ channel 5, Data_3fa61
+ channel 7, Data_3fa73
+
+Cry_1A_Header_BankF: ; 0x3f411
+ channelcount 3
+ channel 4, Data_3fcab
+ channel 5, Data_3fcc6
+ channel 7, Data_3fce1
+
+Cry_1B_Header_BankF: ; 0x3f41a
+ channelcount 3
+ channel 4, Data_3fa9c
+ channel 5, Data_3fab3
+ channel 7, Data_3faca
+
+Cry_1C_Header_BankF: ; 0x3f423
+ channelcount 3
+ channel 4, Data_3fc5d
+ channel 5, Data_3fc80
+ channel 7, Data_3fc9b
+
+Cry_1D_Header_BankF: ; 0x3f42c
+ channelcount 3
+ channel 4, Data_3fcf4
+ channel 5, Data_3fd0f
+ channel 7, Data_3fd2a
+
+Cry_1E_Header_BankF: ; 0x3f435
+ channelcount 3
+ channel 4, Data_3fb7b
+ channel 5, Data_3fb9e
+ channel 7, Data_3fbc5
+
+Cry_1F_Header_BankF: ; 0x3f43e
+ channelcount 3
+ channel 4, Data_3fd93
+ channel 5, Data_3fda6
+ channel 7, Data_3fdb9
+
+Cry_20_Header_BankF: ; 0x3f447
+ channelcount 3
+ channel 4, Data_3fdc6
+ channel 5, Data_3fdd9
+ channel 7, Data_3fdec
+
+Cry_21_Header_BankF: ; 0x3f450
+ channelcount 3
+ channel 4, Data_3fdf9
+ channel 5, Data_3fe1c
+ channel 7, Data_3fe3e
+
+Cry_22_Header_BankF: ; 0x3f459
+ channelcount 3
+ channel 4, Data_3fe3f
+ channel 5, Data_3fe52
+ channel 7, Data_3fe65
+
+Cry_23_Header_BankF: ; 0x3f462
+ channelcount 3
+ channel 4, Data_3f532
+ channel 5, Data_3f549
+ channel 7, Data_3f55c
+
+Cry_24_Header_BankF: ; 0x3f46b
+ channelcount 3
+ channel 4, Data_3f569
+ channel 5, Data_3f58c
+ channel 7, Data_3f5af
+
+Cry_25_Header_BankF: ; 0x3f474
+ channelcount 3
+ channel 4, Data_3f617
+ channel 5, Data_3f62e
+ channel 7, Data_3f645
+
+ dr $3f48f, $3f4db
+
+Data_3f4db:
+ dr $3f4db, $3f4f8
+
+Data_3f4f8:
+ dr $3f4f8, $3f519
+
+Data_3f519:
+ dr $3f519, $3f532
+
+Data_3f532:
+ dr $3f532, $3f549
+
+Data_3f549:
+ dr $3f549, $3f55c
+
+Data_3f55c:
+ dr $3f55c, $3f569
+
+Data_3f569:
+ dr $3f569, $3f58c
+
+Data_3f58c:
+ dr $3f58c, $3f5af
+
+Data_3f5af:
+ dr $3f5af, $3f5bf
+
+Data_3f5bf:
+ dr $3f5bf, $3f5de
+
+Data_3f5de:
+ dr $3f5de, $3f601
+
+Data_3f601:
+ dr $3f601, $3f617
+
+Data_3f617:
+ dr $3f617, $3f62e
+
+Data_3f62e:
+ dr $3f62e, $3f645
+
+Data_3f645:
+ dr $3f645, $3f652
+
+Data_3f652:
+ dr $3f652, $3f671
+
+Data_3f671:
+ dr $3f671, $3f690
+
+Data_3f690:
+ dr $3f690, $3f69d
+
+Data_3f69d:
+ dr $3f69d, $3f6b8
+
+Data_3f6b8:
+ dr $3f6b8, $3f6d3
+
+Data_3f6d3:
+ dr $3f6d3, $3f6e3
+
+Data_3f6e3:
+ dr $3f6e3, $3f706
+
+Data_3f706:
+ dr $3f706, $3f729
+
+Data_3f729:
+ dr $3f729, $3f733
+
+Data_3f733:
+ dr $3f733, $3f742
+
+Data_3f742:
+ dr $3f742, $3f751
+
+Data_3f751:
+ dr $3f751, $3f75b
+
+Data_3f75b:
+ dr $3f75b, $3f76e
+
+Data_3f76e:
+ dr $3f76e, $3f781
+
+Data_3f781:
+ dr $3f781, $3f78b
+
+Data_3f78b:
+ dr $3f78b, $3f7a5
+
+Data_3f7a5:
+ dr $3f7a5, $3f7a6
+
+Data_3f7a6:
+ dr $3f7a6, $3f7b9
+
+Data_3f7b9:
+ dr $3f7b9, $3f7c8
+
+Data_3f7c8:
+ dr $3f7c8, $3f7d7
+
+Data_3f7d7:
+ dr $3f7d7, $3f7e1
+
+Data_3f7e1:
+ dr $3f7e1, $3f7f4
+
+Data_3f7f4:
+ dr $3f7f4, $3f806
+
+Data_3f806:
+ dr $3f806, $3f807
+
+Data_3f807:
+ dr $3f807, $3f832
+
+Data_3f832:
+ dr $3f832, $3f851
+
+Data_3f851:
+ dr $3f851, $3f86a
+
+Data_3f86a:
+ dr $3f86a, $3f891
+
+Data_3f891:
+ dr $3f891, $3f8b7
+
+Data_3f8b7:
+ dr $3f8b7, $3f8b8
+
+Data_3f8b8:
+ dr $3f8b8, $3f8c7
+
+Data_3f8c7:
+ dr $3f8c7, $3f8d5
+
+Data_3f8d5:
+ dr $3f8d5, $3f8d6
+
+Data_3f8d6:
+ dr $3f8d6, $3f8f5
+
+Data_3f8f5:
+ dr $3f8f5, $3f924
+
+Data_3f924:
+ dr $3f924, $3f943
+
+Data_3f943:
+ dr $3f943, $3f956
+
+Data_3f956:
+ dr $3f956, $3f969
+
+Data_3f969:
+ dr $3f969, $3f976
+
+Data_3f976:
+ dr $3f976, $3f995
+
+Data_3f995:
+ dr $3f995, $3f9b8
+
+Data_3f9b8:
+ dr $3f9b8, $3f9d1
+
+Data_3f9d1:
+ dr $3f9d1, $3f9e4
+
+Data_3f9e4:
+ dr $3f9e4, $3f9f7
+
+Data_3f9f7:
+ dr $3f9f7, $3fa01
+
+Data_3fa01:
+ dr $3fa01, $3fa20
+
+Data_3fa20:
+ dr $3fa20, $3fa3f
+
+Data_3fa3f:
+ dr $3fa3f, $3fa52
+
+Data_3fa52:
+ dr $3fa52, $3fa61
+
+Data_3fa61:
+ dr $3fa61, $3fa73
+
+Data_3fa73:
+ dr $3fa73, $3fa74
+
+Data_3fa74:
+ dr $3fa74, $3fa83
+
+Data_3fa83:
+ dr $3fa83, $3fa92
+
+Data_3fa92:
+ dr $3fa92, $3fa9c
+
+Data_3fa9c:
+ dr $3fa9c, $3fab3
+
+Data_3fab3:
+ dr $3fab3, $3faca
+
+Data_3faca:
+ dr $3faca, $3fad7
+
+Data_3fad7:
+ dr $3fad7, $3faea
+
+Data_3faea:
+ dr $3faea, $3fafd
+
+Data_3fafd:
+ dr $3fafd, $3fb0a
+
+Data_3fb0a:
+ dr $3fb0a, $3fb25
+
+Data_3fb25:
+ dr $3fb25, $3fb40
+
+Data_3fb40:
+ dr $3fb40, $3fb53
+
+Data_3fb53:
+ dr $3fb53, $3fb62
+
+Data_3fb62:
+ dr $3fb62, $3fb71
+
+Data_3fb71:
+ dr $3fb71, $3fb7b
+
+Data_3fb7b:
+ dr $3fb7b, $3fb9e
+
+Data_3fb9e:
+ dr $3fb9e, $3fbc5
+
+Data_3fbc5:
+ dr $3fbc5, $3fbe1
+
+Data_3fbe1:
+ dr $3fbe1, $3fbfc
+
+Data_3fbfc:
+ dr $3fbfc, $3fc17
+
+Data_3fc17:
+ dr $3fc17, $3fc2a
+
+Data_3fc2a:
+ dr $3fc2a, $3fc3d
+
+Data_3fc3d:
+ dr $3fc3d, $3fc50
+
+Data_3fc50:
+ dr $3fc50, $3fc5d
+
+Data_3fc5d:
+ dr $3fc5d, $3fc80
+
+Data_3fc80:
+ dr $3fc80, $3fc9b
+
+Data_3fc9b:
+ dr $3fc9b, $3fcab
+
+Data_3fcab:
+ dr $3fcab, $3fcc6
+
+Data_3fcc6:
+ dr $3fcc6, $3fce1
+
+Data_3fce1:
+ dr $3fce1, $3fcf4
+
+Data_3fcf4:
+ dr $3fcf4, $3fd0f
+
+Data_3fd0f:
+ dr $3fd0f, $3fd2a
+
+Data_3fd2a:
+ dr $3fd2a, $3fd3a
+
+Data_3fd3a:
+ dr $3fd3a, $3fd5d
+
+Data_3fd5d:
+ dr $3fd5d, $3fd80
+
+Data_3fd80:
+ dr $3fd80, $3fd93
+
+Data_3fd93:
+ dr $3fd93, $3fda6
+
+Data_3fda6:
+ dr $3fda6, $3fdb9
+
+Data_3fdb9:
+ dr $3fdb9, $3fdc6
+
+Data_3fdc6:
+ dr $3fdc6, $3fdd9
+
+Data_3fdd9:
+ dr $3fdd9, $3fdec
+
+Data_3fdec:
+ dr $3fdec, $3fdf9
+
+Data_3fdf9:
+ dr $3fdf9, $3fe1c
+
+Data_3fe1c:
+ dr $3fe1c, $3fe3e
+
+Data_3fe3e:
+ dr $3fe3e, $3fe3f
+
+Data_3fe3f:
+ dr $3fe3f, $3fe52
+
+Data_3fe52:
+ dr $3fe52, $3fe65
+
+Data_3fe65:
+ dr $3fe65, $3fe72
diff --git a/audio/engine_10.asm b/audio/engine_10.asm
new file mode 100755
index 0000000..ad64e36
--- /dev/null
+++ b/audio/engine_10.asm
@@ -0,0 +1,19 @@
+ dr $40000, $40ca2
+
+SongHeaderPointers10: ; 0x40ca2
+ dw Music_Nothing10
+ dw Music_RedField
+ dw Music_CatchEmBlue
+ dw Music_HurryUpBlue
+ dw Music_HiScore
+ dw Music_GameOver
+; 0x40cae
+
+INCLUDE "audio/music/nothing10.asm"
+INCLUDE "audio/music/redfield.asm"
+INCLUDE "audio/music/catchemblue.asm"
+INCLUDE "audio/music/hiscore.asm"
+INCLUDE "audio/music/gameover.asm"
+INCLUDE "audio/music/hurryupblue.asm"
+
+ dr $4255b, $44000
diff --git a/audio/engine_11.asm b/audio/engine_11.asm
new file mode 100755
index 0000000..4c77c26
--- /dev/null
+++ b/audio/engine_11.asm
@@ -0,0 +1,17 @@
+ dr $44000, $44ca2
+
+SongHeaderPointers11: ; 0x44ca2
+ dw Music_Nothing11
+ dw Music_WhackTheDiglett
+ dw Music_WhackTheDugtrio
+ dw Music_SeelStage
+ dw Music_Title
+; 0x44cac
+
+INCLUDE "audio/music/nothing11.asm"
+INCLUDE "audio/music/whackthediglett.asm"
+INCLUDE "audio/music/whackthedugtrio.asm"
+INCLUDE "audio/music/seelstage.asm"
+INCLUDE "audio/music/title.asm"
+
+ dr $462d3, $48000
diff --git a/audio/engine_12.asm b/audio/engine_12.asm
new file mode 100755
index 0000000..2f17123
--- /dev/null
+++ b/audio/engine_12.asm
@@ -0,0 +1,17 @@
+ dr $48000, $48ca2
+
+SongHeaderPointers12: ; 0x48ca2
+ dw Music_Nothing12
+ dw Music_MewtwoStage
+ dw Music_Options
+ dw Music_FieldSelect
+ dw Music_MeowthStage
+; 0x48cac
+
+INCLUDE "audio/music/nothing12.asm"
+INCLUDE "audio/music/mewtwostage.asm"
+INCLUDE "audio/music/options.asm"
+INCLUDE "audio/music/fieldselect.asm"
+INCLUDE "audio/music/meowthstage.asm"
+
+ dr $49c04, $4c000
diff --git a/audio/engine_13.asm b/audio/engine_13.asm
new file mode 100755
index 0000000..2f6668a
--- /dev/null
+++ b/audio/engine_13.asm
@@ -0,0 +1,13 @@
+ dr $4c000, $4cca2
+
+SongHeaderPointers13: ; 0x4cca2
+ dw Music_Nothing13
+ dw Music_EndCredits
+ dw Music_NameEntry
+; 0x4cca8
+
+INCLUDE "audio/music/nothing13.asm"
+INCLUDE "audio/music/endcredits.asm"
+INCLUDE "audio/music/nameentry.asm"
+
+ dr $4def4, $50000
diff --git a/audio/pikapcm.asm b/audio/pikapcm.asm
new file mode 100755
index 0000000..6b4bbfe
--- /dev/null
+++ b/audio/pikapcm.asm
@@ -0,0 +1,141 @@
+PlayPikachuSoundClip: ; 0x50000
+; Plays the pcm (pulse-code modulation) sound clip of one of the pikachu noises.
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, PikachuSoundClipPointers
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push hl
+ di
+ ld b, $4
+.asm_50010
+ ld a, [rLY]
+ and a
+ jr nz, .asm_50010
+ dec b
+ jr nz, .asm_50010
+ xor a
+ ld [rNR50], a
+ ld [rNR51], a
+ ld a, $80
+ ld [rNR52], a
+ xor a
+ ld [rNR30], a
+ ld hl, wd84b
+ ld c, $30
+ ld b, $10
+.asm_5002b
+ ld a, [$ff00+c]
+ ld [hli], a
+ ld a, $ff
+ ld [$ff00+c], a
+ inc c
+ dec b
+ jr nz, .asm_5002b
+ ld a, $80
+ ld [rNR30], a
+ ld a, $ff
+ ld [rNR31], a
+ ld a, $20
+ ld [rNR32], a
+ ld a, $ff
+ ld [rNR33], a
+ ld a, $87
+ ld [rNR34], a
+ ld a, $77
+ ld [rNR50], a
+ ld a, $44
+ ld [rNR51], a
+ pop hl
+ call PlayPikachuPCM
+ xor a
+ ld [rNR50], a
+ ld [rNR51], a
+ ld [rNR52], a
+ ld hl, wd84b
+ ld c, $30
+ ld b, $10
+.asm_50062
+ ld a, [hli]
+ ld [$ff00+c], a
+ inc c
+ dec b
+ jr nz, .asm_50062
+ ld a, $77
+ ld [rNR50], a
+ ld a, $ff
+ ld [rNR51], a
+ ld a, $80
+ ld [rNR52], a
+ ei
+ ret
+
+PikachuSoundClipPointers: ; 0x50076
+ dw PikachuBillboardBonusSoundClip
+ dw PikachuThundershockSoundClip
+
+PikachuBillboardBonusSoundClip: ; 0x5007a
+ dw $caf ; length of the pcm data (todo: there is probably a way to do this dynamically with rgbds)
+ INCBIN "audio/sound_clips/pi_ka_chu.pcm"
+
+ db $1f ; unused
+
+PikachuThundershockSoundClip: ; 0x50d2c
+ dw $1227 ; length of the pcm data (todo: there is probably a way to do this dynamically with rgbds)
+ INCBIN "audio/sound_clips/piiiiikaaaa.pcm"
+
+ db $f0, $00, $00 ; unused
+
+PlayPikachuPCM: ; 0x51f56
+; Plays the audio PCM at [hl]
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ; bc = number of bytes in the sound clip's PCM (pulse-code modulation)
+.loop
+ ld a, [hli]
+ ld d, a
+ ld a, $3
+.playSingleSample
+ dec a
+ jr nz, .playSingleSample
+ call LoadNextSoundClipSample
+ call PlaySoundClipSample
+ call LoadNextSoundClipSample
+ call PlaySoundClipSample
+ call LoadNextSoundClipSample
+ call PlaySoundClipSample
+ call LoadNextSoundClipSample
+ call PlaySoundClipSample
+ call LoadNextSoundClipSample
+ call PlaySoundClipSample
+ call LoadNextSoundClipSample
+ call PlaySoundClipSample
+ call LoadNextSoundClipSample
+ call PlaySoundClipSample
+ call LoadNextSoundClipSample
+ dec bc
+ ld a, c
+ or b
+ jr nz, .loop
+ ret
+
+LoadNextSoundClipSample: ; 0x51f94
+ ld a, d
+ and $80
+ srl a
+ srl a
+ ld [rNR32], a
+ sla d
+ ret
+
+PlaySoundClipSample: ; 0x51fa0
+ ld a, $3
+.loop
+ dec a
+ jr nz, .loop
+ ret
diff --git a/macros/sound.asm b/macros/sound.asm
index 8b8de34..2f88716 100755
--- a/macros/sound.asm
+++ b/macros/sound.asm
@@ -1,3 +1,13 @@
+channelcount: MACRO
+nchannels = \1 - 1
+ ENDM
+
+channel: MACRO
+ db (nchannels << 6) | \1
+ dw \2
+nchannels = 0
+ ENDM
+
note: MACRO
dn (\1), (\2) - 1
ENDM
@@ -227,4 +237,3 @@ callchannel: macro
endchannel: macro
db $ff
endm
-
diff --git a/main.asm b/main.asm
index dbdbf19..f8c948b 100755
--- a/main.asm
+++ b/main.asm
@@ -48668,7 +48668,7 @@ Func_3174c: ; 0x3174c
callba Func_30253
ld de, $2525
call PlaySoundEffect
- ld bc, $2cbf
+ ld bc, Data_2cbf
ld [$ff8a], a
callba Func_3118f
.asm_3177a
@@ -48690,7 +48690,7 @@ SlotOnPic: ; 0x34000
SlotOffPic: ; 0x34180
INCBIN "gfx/billboard/slot/slot_off.2bpp"
- dr $34300, $37f00
+SECTION "bankd.2", ROMX [$7f00], BANK[$d]
StageSeelBonusCollisionMasks: ; 0x37f00
INCBIN "data/collision/masks/seel_bonus.masks"
@@ -48707,7 +48707,8 @@ Data_38020:
Data_38030:
db $a9, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
- dr $38040, $3809a ; 0x38000
+
+ dr $38040, $3809a ; 38040
Data_3809a:
db $00, $00, $00
@@ -48717,7 +48718,7 @@ Data_3809a:
Data_380a6:
db $59, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
- dr $380b6, $38156 ; 0x38000
+ dr $380b6, $38156 ; 380b6
Data_38156:
db $99, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
@@ -48725,11 +48726,11 @@ Data_38156:
Data_39166:
db $99, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
- dr $39176, $3a176 ; 0x38000
+ dr $39176, $3a176 ; 39176
Data_3a176:
db $a1, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
- dr $3a186, $3a9e6 ; 0x38000
+ dr $3a186, $3a9e6 ; 3a186
Data_3a9e6:
db $79, $5d, $08, $00, $0b, $8c, $d0, $f4, $60, $00, $00, $00, $00, $00, $00, $00
@@ -48752,2705 +48753,31 @@ Data_3aa66:
Data_3aa76:
db $b9, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
- dr $3aa86, $3c000 ; 0x38000
-
SECTION "bankf", ROMX, BANK[$f]
-Func_3c000: ; 0x3c000
- push hl
- push de
- push bc
- push af
- call Func_3cb1b
- ld hl, wdd01
- ld de, $01af
-.clearLoop
- xor a
- ld [hli], a
- dec de
- ld a, e
- or d
- jr nz, .clearLoop
- ld hl, rNR50
- xor a
- ld [hli], a
- ld [hli], a
- ld a, $80
- ld [hli], a
- ld hl, rNR10
- ld e, $4
-.asm_3c022
- xor a
- ld [hli], a
- ld [hli], a
- ld a, $8
- ld [hli], a
- xor a
- ld [hli], a
- ld a, $80
- ld [hli], a
- dec e
- jr nz, .asm_3c022
- ld a, $8
- ld [wde9a], a
- ld a, $77
- ld [wde98], a
- call Func_3cb15
- pop af
- pop bc
- pop de
- pop hl
- ret
-
-Func_3c042: ; 0x3c042
- ld a, [de]
- inc de
- and $7
- ld [wdeae], a
- ld c, a
- ld b, $0
- ld hl, WRAMPointerTable_3cc92
- add hl, bc
- add hl, bc
- ld c, [hl]
- inc hl
- ld b, [hl]
- ld hl, $0002
- add hl, bc
- res 0, [hl]
- push de
- xor a
- ld hl, $0000
- add hl, bc
- ld e, $32
-.loop
- ld [hli], a
- dec e
- jr nz, .loop
- ld hl, $0017
- add hl, bc
- xor a
- ld [hli], a
- inc a
- ld [hl], a
- ld hl, $0028
- add hl, bc
- ld [hl], a
- pop de
- ld hl, $0005
- add hl, bc
- ld a, [de]
- ld [hli], a
- inc de
- ld a, [de]
- ld [hl], a
- inc de
- ld hl, $0000
- add hl, bc
- ld a, [wde9b]
- ld [hli], a
- ld a, [wde9c]
- ld [hl], a
- ret
-
- dr $3c08b, $3c090
-
-PlaySong_BankF: ; 0x3c090
- push de
- call Func_3c000
- pop de
- call Func_3cb1b
- ld hl, wde9b
- ld [hl], e
- inc hl
- ld [hl], d
- ld hl, SongHeaderPointers0F
- add hl, de
- add hl, de
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld a, [de]
- rlca
- rlca
- and $3
- inc a
-.asm_3c0ac
- push af
- call Func_3c042
- call Func_3cadf
- pop af
- dec a
- jr nz, .asm_3c0ac
- call Func_3cb15
- ret
-
- dr $3c0bb, $3c0c0
-
-PlaySoundEffect_BankF: ; 0x3c0c0
- call Func_3cb1b
- ld hl, wde9b
- ld [hl], e
- inc hl
- ld [hl], d
- ld hl, PointerTable_3e3ce
- add hl, de
- add hl, de
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld a, [de]
- rlca
- rlca
- and $3
- inc a
-.asm_3c0d7
- push af
- call Func_3c042
- ld hl, $0002
- add hl, bc
- set 3, [hl]
- call Func_3cadf
- pop af
- dec a
- jr nz, .asm_3c0d7
- call Func_3cb15
- ret
-
- dr $3c0ec, $3c0f0
-
-PlayCry_BankF: ; 0x3c0f0
-; Plays a Pokemon cry.
-; Input: e = mon id
- call Func_3cb1b
- ld a, e
- and a
- ret z
- dec e
- ld d, $0
- ld hl, CryData
- add hl, de
- add hl, de
- add hl, de
- add hl, de
- add hl, de
- add hl, de
- ld e, [hl]
- inc hl
- ld d, [hl] ; de = base cry id
- inc hl
- ld a, [hli]
- ld [wdea8], a
- ld a, [hli]
- ld [wdea9], a ; dea8 = cry pitch
- ld a, [hli]
- ld [wdeaa], a
- ld a, [hl]
- ld [wdeab], a ; deaa = cry length
- ld hl, wde9b
- ld [hl], e
- inc hl
- ld [hl], d
- ld hl, CryBasePointers
- add hl, de
- add hl, de
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld a, [de]
- rlca
- rlca
- and $3
- inc a
-.asm_3c12a
- push af
- call Func_3c042
- ld hl, $0002
- add hl, bc
- set 5, [hl]
- ld hl, $0003
- add hl, bc
- set 4, [hl]
- ld hl, $0026
- add hl, bc
- ld a, [wdea8]
- ld [hli], a
- ld a, [wdea9]
- ld [hl], a
- ld a, [wde97]
- and $3
- cp $3
- jr nc, .asm_3c15b
- ld hl, $0017
- add hl, bc
- ld a, [wdeaa]
- ld [hli], a
- ld a, [wdeab]
- ld [hl], a
-.asm_3c15b
- call Func_3cadf
- pop af
- dec a
- jr nz, .asm_3c12a
- ld a, [wdeac]
- and a
- jr nz, .asm_3c173
- ld a, [wde98]
- ld [wdeac], a
- ld a, $77
- ld [wde98], a
-.asm_3c173
- ld a, $1
- ld [wdead], a
- call Func_3cb15
- ret
-
- dr $3c17c, $3c180
-
-Func_3c180: ; 0x3c180
- ld a, [wdd00]
- and a
- ret z
- xor a
- ld [wde97], a
- ld [wde99], a
- ld bc, wdd01
-.asm_3c18f
- ld hl, $0002
- add hl, bc
- bit 0, [hl]
- jp z, .asm_3c22d
- ld hl, $0014
- add hl, bc
- ld a, [hl]
- cp $2
- jr c, .asm_3c1a4
- dec [hl]
- jr .asm_3c1c1
-
-.asm_3c1a4
- ld hl, $001c
- add hl, bc
- ld a, [hl]
- ld hl, $001b
- add hl, bc
- ld [hl], a
- ld hl, $0025
- add hl, bc
- ld a, [hl]
- ld hl, $0024
- add hl, bc
- ld [hl], a
- ld hl, $0003
- add hl, bc
- res 1, [hl]
- call Func_3c670
-.asm_3c1c1
- ld hl, $000d
- add hl, bc
- ld a, [hli]
- ld [wde91], a
- ld a, [hli]
- ld [wde92], a
- ld a, [hli]
- ld [wde93], a
- ld a, [hl]
- ld [wde94], a
- call Func_3c4f0
- call Func_3c632
- ld a, [wdead]
- and a
- jr z, .asm_3c20a
- ld a, [wde97]
- cp $4
- jr nc, .asm_3c219
- ld hl, wddcb
- bit 0, [hl]
- jr nz, .asm_3c204
- ld hl, wddfd
- bit 0, [hl]
- jr nz, .asm_3c204
- ld hl, wde2f
- bit 0, [hl]
- jr nz, .asm_3c204
- ld hl, wde61
- bit 0, [hl]
- jr z, .asm_3c20a
-.asm_3c204
- ld hl, $000b
- add hl, bc
- set 5, [hl]
-.asm_3c20a
- ld a, [wde97]
- cp $4
- jr nc, .asm_3c219
- ld hl, $00ca
- add hl, bc
- bit 0, [hl]
- jr nz, .asm_3c227
-.asm_3c219
- call Func_3c24d
- ld hl, $0019
- add hl, bc
- ld a, [wde99]
- or [hl]
- ld [wde99], a
-.asm_3c227
- ld hl, $000b
- add hl, bc
- xor a
- ld [hl], a
-.asm_3c22d
- ld hl, $0032
- add hl, bc
- ld c, l
- ld b, h
- ld a, [wde97]
- inc a
- ld [wde97], a
- cp $8
- jp nz, .asm_3c18f
- call Func_3c40d
- ld a, [wde98]
- ld [rNR50], a
- ld a, [wde99]
- ld [rNR51], a
- ret
-
-Func_3c24d: ; 0x3c24d
- ld hl, PointerTable_3c25e
- ld a, [wde97]
- and $7
- add a
- ld e, a
- ld d, $0
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp [hl]
-
-PointerTable_3c25e: ; 0x3c25e
- dw Func_3c26e
- dw Func_3c2e0
- dw Func_3c349
- dw Func_3c3cf
- dw Func_3c26e
- dw Func_3c2e0
- dw Func_3c349
- dw Func_3c3cf
-
-Func_3c26e: ; 0x3c26e
- ld hl, $000b
- add hl, bc
- bit 3, [hl]
- jr z, .asm_3c27b
- ld a, [wde9a]
- ld [rNR10], a
-.asm_3c27b
- bit 5, [hl]
- jr nz, .asm_3c2ba
- bit 4, [hl]
- jr nz, .asm_3c2c6
- bit 6, [hl]
- jr nz, .asm_3c2b4
- bit 1, [hl]
- jr z, .asm_3c295
- ld a, [wde93]
- ld [rNR13], a
- ld a, [wde94]
- ld [rNR14], a
-.asm_3c295
- bit 2, [hl]
- jr z, .asm_3c2a5
- ld a, [wde92]
- ld [rNR12], a
- ld a, [wde94]
- or $80
- ld [rNR14], a
-.asm_3c2a5
- bit 0, [hl]
- ret z
- ld a, [wde91]
- ld d, a
- ld a, [rNR11]
- and $3f
- or d
- ld [rNR11], a
- ret
-
-.asm_3c2b4
- ld a, [wde93]
- ld [rNR13], a
- ret
-
-.asm_3c2ba
- ld a, $8
- ld [rNR12], a
- ld a, [wde94]
- or $80
- ld [rNR14], a
- ret
-
-.asm_3c2c6
- ld hl, wde91
- ld a, $3f
- or [hl]
- ld [rNR11], a
- ld a, [wde92]
- ld [rNR12], a
- ld a, [wde93]
- ld [rNR13], a
- ld a, [wde94]
- or $80
- ld [rNR14], a
- ret
-
-Func_3c2e0: ; 0x3c2e0
- ld hl, $000b
- add hl, bc
- bit 5, [hl]
- jr nz, .asm_3c323
- bit 4, [hl]
- jr nz, .asm_3c32f
- bit 6, [hl]
- jr nz, .asm_3c31d
- bit 1, [hl]
- jr z, .asm_3c2fe
- ld a, [wde93]
- ld [rNR23], a
- ld a, [wde94]
- ld [rNR24], a
-.asm_3c2fe
- bit 2, [hl]
- jr z, .asm_3c30e
- ld a, [wde92]
- ld [rNR22], a
- ld a, [wde94]
- or $80
- ld [rNR24], a
-.asm_3c30e
- bit 0, [hl]
- ret z
- ld a, [wde91]
- ld d, a
- ld a, [rNR21]
- and $3f
- or d
- ld [rNR21], a
- ret
-
-.asm_3c31d
- ld a, [wde93]
- ld [rNR23], a
- ret
-
-.asm_3c323
- ld a, $8
- ld [rNR22], a
- ld a, [wde94]
- or $80
- ld [rNR24], a
- ret
-
-.asm_3c32f
- ld hl, wde91
- ld a, $3f
- or [hl]
- ld [rNR21], a
- ld a, [wde92]
- ld [rNR22], a
- ld a, [wde93]
- ld [rNR23], a
- ld a, [wde94]
- or $80
- ld [rNR24], a
- ret
-
-Func_3c349: ; 0x3c349
- ld hl, $000b
- add hl, bc
- bit 5, [hl]
- jr nz, .asm_3c387
- bit 4, [hl]
- jr nz, .asm_3c38b
- bit 6, [hl]
- jr nz, .asm_3c381
- bit 1, [hl]
- jr z, .asm_3c367
- ld a, [wde93]
- ld [rNR33], a
- ld a, [wde94]
- ld [rNR34], a
-.asm_3c367
- bit 2, [hl]
- ret z
- xor a
- ld [rNR30], a
- call LoadWavePattern
- ld a, $80
- ld [rNR30], a
- ld a, [wde93]
- ld [rNR33], a
- ld a, [wde94]
- or $80
- ld [rNR34], a
- ret
-
-.asm_3c381
- ld a, [wde93]
- ld [rNR33], a
- ret
-
-.asm_3c387
- xor a
- ld [rNR30], a
- ret
-
-.asm_3c38b
- ld a, $3f
- ld [rNR31], a
- xor a
- ld [rNR30], a
- call LoadWavePattern
- ld a, $80
- ld [rNR30], a
- ld a, [wde93]
- ld [rNR33], a
- ld a, [wde94]
- or $80
- ld [rNR34], a
- ret
-
-LoadWavePattern: ; 0x3c3a6
- push hl
- ld a, [wde92]
- and $f
- ld l, a
- ld h, $0
- add hl, hl
- add hl, hl
- add hl, hl
- add hl, hl
- ld de, WavePatterns_BankF
- add hl, de
- ld de, rWave_0
- push bc
- ld b, $10
-.loop
- ld a, [hli]
- ld [de], a
- inc de
- dec b
- jr nz, .loop
- pop bc
- pop hl
- ld a, [wde92]
- and $f0
- sla a
- ld [rNR32], a ; set volume of wave channel
- ret
-
-Func_3c3cf: ; 0x3c3cf
- ld hl, $000b
- add hl, bc
- bit 5, [hl]
- jr nz, .asm_3c3f1
- bit 4, [hl]
- jr nz, .asm_3c3fa
- bit 1, [hl]
- jr z, .asm_3c3e4
- ld a, [wde93]
- ld [rNR43], a
-.asm_3c3e4
- bit 2, [hl]
- ret z
- ld a, [wde92]
- ld [rNR42], a
- ld a, $80
- ld [rNR44], a
- ret
-
-.asm_3c3f1
- ld a, $8
- ld [rNR42], a
- ld a, $80
- ld [rNR44], a
- ret
-
-.asm_3c3fa
- ld a, $3f
- ld [rNR41], a
- ld a, [wde92]
- ld [rNR42], a
- ld a, [wde93]
- ld [rNR43], a
- ld a, $80
- ld [rNR44], a
- ret
-
-Func_3c40d: ; 0x3c40d
- ld a, [wdea2]
- and a
- ret z
- ld a, [wdea3]
- and a
- jr z, .asm_3c41d
- dec a
- ld [wdea3], a
- ret
-
-.asm_3c41d
- ld a, [wdea2]
- ld d, a
- and $7f
- ld [wdea3], a
- ld a, [wde98]
- and $7
- bit 7, d
- jr nz, .asm_3c448
- and a
- jr z, .asm_3c435
- dec a
- jr .asm_3c454
-
-.asm_3c435
- ld a, [wdea4]
- ld e, a
- ld a, [wdea5]
- ld d, a
- push bc
- call PlaySong_BankF
- pop bc
- ld hl, wdea2
- set 7, [hl]
- ret
-
-.asm_3c448
- cp $7
- jr nc, .asm_3c44f
- inc a
- jr .asm_3c454
-
-.asm_3c44f
- xor a
- ld [wdea2], a
- ret
-
-.asm_3c454
- ld d, a
- swap a
- or d
- ld [wde98], a
- ret
-
-Func_3c45c: ; 0x3c45c
- ld hl, $0003
- add hl, bc
- bit 1, [hl]
- ret z
- ld hl, $0014
- add hl, bc
- ld a, [hl]
- ld hl, wde95
- sub [hl]
- jr nc, .asm_3c470
- ld a, $1
-.asm_3c470
- ld [hl], a
- ld hl, $000f
- add hl, bc
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld hl, $001f
- add hl, bc
- ld a, e
- sub [hl]
- ld e, a
- ld a, d
- sbc $0
- ld d, a
- ld hl, $0020
- add hl, bc
- sub [hl]
- jr nc, .asm_3c4ab
- ld hl, $0004
- add hl, bc
- set 1, [hl]
- ld hl, $000f
- add hl, bc
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld hl, $001f
- add hl, bc
- ld a, [hl]
- sub e
- ld e, a
- ld a, d
- sbc $0
- ld d, a
- ld hl, $0020
- add hl, bc
- ld a, [hl]
- sub d
- ld d, a
- jr .asm_3c4c9
-
-.asm_3c4ab
- ld hl, $0004
- add hl, bc
- res 1, [hl]
- ld hl, $000f
- add hl, bc
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld hl, $001f
- add hl, bc
- ld a, e
- sub [hl]
- ld e, a
- ld a, d
- sbc $0
- ld d, a
- ld hl, $0020
- add hl, bc
- sub [hl]
- ld d, a
-.asm_3c4c9
- push bc
- ld hl, wde95
- ld b, $0
-.asm_3c4cf
- inc b
- ld a, e
- sub [hl]
- ld e, a
- jr nc, .asm_3c4cf
- ld a, d
- and a
- jr z, .asm_3c4dc
- dec d
- jr .asm_3c4cf
-
-.asm_3c4dc
- ld a, e
- add [hl]
- ld d, b
- pop bc
- ld hl, $0021
- add hl, bc
- ld [hl], d
- ld hl, $0022
- add hl, bc
- ld [hl], a
- ld hl, $0023
- add hl, bc
- xor a
- ld [hl], a
-
- ; fall through
-
-Func_3c4f0: ; 0x3c4f0
- ld hl, $0003
- add hl, bc
- bit 2, [hl]
- jr z, .asm_3c50b
- ld hl, $001a
- add hl, bc
- ld a, [hl]
- rlca
- rlca
- ld [hl], a
- and $c0
- ld [wde91], a
- ld hl, $000b
- add hl, bc
- set 0, [hl]
-.asm_3c50b
- ld hl, $0003
- add hl, bc
- bit 4, [hl]
- jr z, .asm_3c529
- ld hl, $0026
- add hl, bc
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld hl, wde93
- ld a, [hli]
- ld h, [hl]
- ld l, a
- add hl, de
- ld e, l
- ld d, h
- ld hl, wde93
- ld [hl], e
- inc hl
- ld [hl], d
-.asm_3c529
- ld hl, $0003
- add hl, bc
- bit 1, [hl]
- jp z, .asm_3c5c1
- ld hl, $000f
- add hl, bc
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld hl, $0004
- add hl, bc
- bit 1, [hl]
- jr z, .asm_3c574
- ld hl, $0021
- add hl, bc
- ld l, [hl]
- ld h, $0
- add hl, de
- ld d, h
- ld e, l
- ld hl, $0022
- add hl, bc
- ld a, [hl]
- ld hl, $0023
- add hl, bc
- add [hl]
- ld [hl], a
- ld a, $0
- adc e
- ld e, a
- ld a, $0
- adc d
- ld d, a
- ld hl, $0020
- add hl, bc
- ld a, [hl]
- cp d
- jp c, .asm_3c5a1
- jr nz, .asm_3c5b4
- ld hl, $001f
- add hl, bc
- ld a, [hl]
- cp e
- jp c, .asm_3c5a1
- jr .asm_3c5b4
-
-.asm_3c574
- ld a, e
- ld hl, $0021
- add hl, bc
- ld e, [hl]
- sub e
- ld e, a
- ld a, d
- sbc $0
- ld d, a
- ld hl, $0022
- add hl, bc
- ld a, [hl]
- add a
- ld [hl], a
- ld a, e
- sbc $0
- ld e, a
- ld a, d
- sbc $0
- ld d, a
- ld hl, $0020
- add hl, bc
- ld a, d
- cp [hl]
- jr c, .asm_3c5a1
- jr nz, .asm_3c5b4
- ld hl, $001f
- add hl, bc
- ld a, e
- cp [hl]
- jr nc, .asm_3c5b4
-.asm_3c5a1
- ld hl, $0003
- add hl, bc
- res 1, [hl]
- ld hl, $0004
- add hl, bc
- res 1, [hl]
- ld hl, $0020
- add hl, bc
- ld e, [hl]
- inc hl
- ld d, [hl]
-.asm_3c5b4
- ld hl, $000f
- add hl, bc
- ld [hl], e
- inc hl
- ld [hl], d
- ld hl, $000b
- add hl, bc
- set 1, [hl]
-.asm_3c5c1
- ld hl, $0003
- add hl, bc
- bit 0, [hl]
- jr z, .asm_3c61a
- ld hl, $001b
- add hl, bc
- ld a, [hl]
- and a
- jr nz, .asm_3c5e3
- ld hl, $001d
- add hl, bc
- ld a, [hl]
- and a
- jr z, .asm_3c61a
- ld d, a
- ld hl, $001e
- add hl, bc
- ld a, [hl]
- and $f
- jr z, .asm_3c5e6
-.asm_3c5e3
- dec [hl]
- jr .asm_3c61a
-
-.asm_3c5e6
- ld a, [hl]
- swap [hl]
- or [hl]
- ld [hl], a
- ld a, [wde93]
- ld e, a
- ld hl, $0004
- add hl, bc
- bit 0, [hl]
- jr z, .asm_3c605
- res 0, [hl]
- ld a, d
- and $f
- ld d, a
- ld a, e
- sub d
- jr nc, .asm_3c611
- ld a, $0
- jr .asm_3c611
-
-.asm_3c605
- set 0, [hl]
- ld a, d
- and $f0
- swap a
- add e
- jr nc, .asm_3c611
- ld a, $ff
-.asm_3c611
- ld [wde93], a
- ld hl, $000b
- add hl, bc
- set 6, [hl]
-.asm_3c61a
- ld hl, $0003
- add hl, bc
- bit 3, [hl]
- ret z
- ld hl, $0024
- add hl, bc
- ld a, [hl]
- and a
- jr z, .asm_3c62b
- dec [hl]
- ret
-
-.asm_3c62b
- ld hl, $000b
- add hl, bc
- set 5, [hl]
- ret
-
-Func_3c632: ; 0x3c632
- ld hl, $0002
- add hl, bc
- bit 4, [hl]
- ret z
- ld a, [wde9f]
- and a
- jr z, .asm_3c644
- dec a
- ld [wde9f], a
- ret
-
-.asm_3c644
- ld hl, wde9d
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld a, [de]
- inc de
- cp $ff
- ret z
- and $f
- inc a
- ld [wde9f], a
- ld a, [de]
- inc de
- ld [wde92], a
- ld a, [de]
- inc de
- ld [wde93], a
- xor a
- ld [wde94], a
- ld hl, wde9d
- ld [hl], e
- inc hl
- ld [hl], d
- ld hl, $000b
- add hl, bc
- set 4, [hl]
- ret
-
-Func_3c670: ; 0x3c670
- call Func_3ca10
- cp $ff
- jr z, .asm_3c6c9
- cp $d0
- jr c, .asm_3c680
-.asm_3c67b
- call Func_3c786
- jr Func_3c670
-
-.asm_3c680
- ld hl, $0002
- add hl, bc
- bit 3, [hl]
- jp nz, Func_3c723
- bit 5, [hl]
- jp nz, Func_3c723
- bit 4, [hl]
- jp nz, Func_3c750
- ld a, [wde96]
- and $f
- call Func_3ca5b
- ld a, [wde96]
- swap a
- and $f
- jr z, .asm_3c6c2
- ld hl, $0011
- add hl, bc
- ld [hl], a
- ld e, a
- ld hl, $0012
- add hl, bc
- ld d, [hl]
- call Func_3ca2b
- ld hl, $000f
- add hl, bc
- ld [hl], e
- inc hl
- ld [hl], d
- ld hl, $000b
- add hl, bc
- set 4, [hl]
- jp Func_3c45c
-
-.asm_3c6c2
- ld hl, $000b
- add hl, bc
- set 5, [hl]
- ret
-
-.asm_3c6c9
- ld hl, $0002
- add hl, bc
- bit 1, [hl]
- jr nz, .asm_3c67b
- ld a, [wde97]
- cp $4
- jr nc, .asm_3c6e0
- ld hl, $00ca
- add hl, bc
- bit 0, [hl]
- jr nz, .asm_3c6f6
-.asm_3c6e0
- ld hl, $0002
- add hl, bc
- bit 5, [hl]
- call nz, Func_3c704
- ld a, [wde97]
- cp $4
- jr nz, .asm_3c6f6
- xor a
- ld [rNR10], a
- ld [wde9a], a
-.asm_3c6f6
- ld hl, $0002
- add hl, bc
- res 0, [hl]
- ld hl, $0000
- add hl, bc
- xor a
- ld [hli], a
- ld [hli], a
- ret
-
-Func_3c704: ; 0x3c704
- ld a, [wde97]
- cp $4
- ret nz
- xor a
- ld hl, wde21
- ld [hli], a
- ld [hl], a
- ld hl, wde85
- ld [hli], a
- ld [hl], a
- ld a, [wdeac]
- ld [wde98], a
- xor a
- ld [wdeac], a
- ld [wdead], a
- ret
-
-Func_3c723: ; 0x3c723
- ld hl, $000b
- add hl, bc
- set 4, [hl]
- ld a, [wde96]
- call Func_3ca5b
- call Func_3ca10
- ld hl, $000e
- add hl, bc
- ld [hl], a
- call Func_3ca10
- ld hl, $000f
- add hl, bc
- ld [hl], a
- ld a, [wde97]
- and $3
- cp $3
- ret z
- call Func_3ca10
- ld hl, $0010
- add hl, bc
- ld [hl], a
- ret
-
-Func_3c750: ; 0x3c750
- ld a, [wde97]
- cp $3
- ret nz
- ld a, [wde96]
- and $f
- call Func_3ca5b
- ld a, [wdea1]
- ld e, a
- ld d, $0
- ld hl, $4ba2
- add hl, de
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [wde96]
- swap a
- and $f
- ret z
- ld e, a
- ld d, $0
- add hl, de
- add hl, de
- ld a, [hli]
- ld [wde9d], a
- ld a, [hl]
- ld [wde9e], a
- xor a
- ld [wde9f], a
- ret
-
-Func_3c786: ; 0x3c786
- ld a, [wde96]
- sub $d0
- ld e, a
- ld d, $0
- ld hl, PointerTable_3c797
- add hl, de
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp [hl]
-
-PointerTable_3c797: ; 0x3c797
- dw Func_3c9b6
- dw Func_3c9b6
- dw Func_3c9b6
- dw Func_3c9b6
- dw Func_3c9b6
- dw Func_3c9b6
- dw Func_3c9b6
- dw Func_3c9b6
- dw Func_3c973
- dw Func_3c9c1
- dw Func_3c9aa
- dw Func_3c994
- dw Func_3c9a1
- dw Func_3c987
- dw Func_3c939
- dw Func_3c951
- dw Func_3c8ff
- dw Func_3c8c4
- dw Func_3c8b5
- dw Func_3c95f
- dw Func_3c9ca
- dw Func_3c9da
- dw Func_3c926
- dw Func_3c7f7
- dw Func_3c7f7
- dw Func_3c9e9
- dw Func_3c7f7
- dw Func_3c7f7
- dw Func_3ca05
- dw Func_3ca0b
- dw Func_3c7f7
- dw Func_3c7f7
- dw Func_3c7f7
- dw Func_3c7f7
- dw Func_3c7f7
- dw Func_3c7f7
- dw Func_3c7f7
- dw Func_3c7f7
- dw Func_3c7f7
- dw Func_3c7f7
- dw Func_3c7f7
- dw Func_3c7f7
- dw Func_3c885
- dw Func_3c88e
- dw Func_3c833
- dw Func_3c843
- dw Func_3c80d
- dw Func_3c7f8
-
-Func_3c7f7: ; 0x3c7f7
- ret
-
-Func_3c7f8: ; 0x3c7f8
- ld hl, $0002
- add hl, bc
- res 1, [hl]
- ld hl, $0007
- add hl, bc
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld hl, $0005
- add hl, bc
- ld [hl], e
- inc hl
- ld [hl], d
- ret
-
-Func_3c80d: ; 0x3c80d
- call Func_3ca10
- ld e, a
- call Func_3ca10
- ld d, a
- push de
- ld hl, $0005
- add hl, bc
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld hl, $0007
- add hl, bc
- ld [hl], e
- inc hl
- ld [hl], d
- pop de
- ld hl, $0005
- add hl, bc
- ld [hl], e
- inc hl
- ld [hl], d
- ld hl, $0002
- add hl, bc
- set 1, [hl]
- ret
-
-Func_3c833: ; 0x3c833
- call Func_3ca10
- ld e, a
- call Func_3ca10
- ld d, a
- ld hl, $0005
- add hl, bc
- ld [hl], e
- inc hl
- ld [hl], d
- ret
-
-Func_3c843: ; 0x3c843
- call Func_3ca10
- ld hl, $0002
- add hl, bc
- bit 2, [hl]
- jr nz, .asm_3c859
- and a
- jr z, .asm_3c862
- dec a
- set 2, [hl]
- ld hl, $0016
- add hl, bc
- ld [hl], a
-.asm_3c859
- ld hl, $0016
- add hl, bc
- ld a, [hl]
- and a
- jr z, .asm_3c872
- dec [hl]
-.asm_3c862
- call Func_3ca10
- ld e, a
- call Func_3ca10
- ld d, a
- ld hl, $0005
- add hl, bc
- ld [hl], e
- inc hl
- ld [hl], d
- ret
-
-.asm_3c872
- ld hl, $0002
- add hl, bc
- res 2, [hl]
- ld hl, $0005
- add hl, bc
- ld e, [hl]
- inc hl
- ld d, [hl]
- inc de
- inc de
- ld [hl], d
- dec hl
- ld [hl], e
- ret
-
-Func_3c885: ; 0x3c885
- call Func_3ca10
- ld hl, $000c
- add hl, bc
- ld [hl], a
- ret
-
-Func_3c88e: ; 0x3c88e
- call Func_3ca10
- ld hl, $000c
- add hl, bc
- cp [hl]
- jr z, .asm_3c8a5
- ld hl, $0005
- add hl, bc
- ld e, [hl]
- inc hl
- ld d, [hl]
- inc de
- inc de
- ld [hl], d
- dec hl
- ld [hl], e
- ret
-
-.asm_3c8a5
- call Func_3ca10
- ld e, a
- call Func_3ca10
- ld d, a
- ld hl, $0005
- add hl, bc
- ld [hl], e
- inc hl
- ld [hl], d
- ret
-
-Func_3c8b5: ; 0x3c8b5
- call Func_3ca10
- ld hl, $0025
- add hl, bc
- ld [hl], a
- ld hl, $0003
- add hl, bc
- set 3, [hl]
- ret
-
-Func_3c8c4: ; 0x3c8c4
- ld hl, $0003
- add hl, bc
- set 0, [hl]
- ld hl, $0004
- add hl, bc
- res 0, [hl]
- call Func_3ca10
- ld hl, $001c
- add hl, bc
- ld [hl], a
- ld hl, $001b
- add hl, bc
- ld [hl], a
- call Func_3ca10
- ld hl, $001d
- add hl, bc
- ld d, a
- and $f0
- swap a
- srl a
- ld e, a
- adc $0
- swap a
- or e
- ld [hl], a
- ld hl, $001e
- add hl, bc
- ld a, d
- and $f
- ld d, a
- swap a
- or d
- ld [hl], a
- ret
-
-Func_3c8ff: ; 0x3c8ff
- call Func_3ca10
- ld [wde95], a
- call Func_3ca10
- ld d, a
- and $f
- ld e, a
- ld a, d
- swap a
- and $f
- ld d, a
- call Func_3ca2b
- ld hl, $001f
- add hl, bc
- ld [hl], e
- ld hl, $0020
- add hl, bc
- ld [hl], d
- ld hl, $0003
- add hl, bc
- set 1, [hl]
- ret
-
-Func_3c926: ; 0x3c926
- ld hl, $0003
- add hl, bc
- set 4, [hl]
- ld hl, $0027
- add hl, bc
- call Func_3ca10
- ld [hld], a
- call Func_3ca10
- ld [hl], a
- ret
-
-Func_3c939: ; 0x3c939
- ld hl, $0003
- add hl, bc
- set 2, [hl]
- call Func_3ca10
- rrca
- rrca
- ld hl, $001a
- add hl, bc
- ld [hl], a
- and $c0
- ld hl, $000d
- add hl, bc
- ld [hl], a
- ret
-
-Func_3c951: ; 0x3c951
- ld hl, $0002
- add hl, bc
- bit 3, [hl]
- jr z, .asm_3c95c
- res 3, [hl]
- ret
-
-.asm_3c95c
- set 3, [hl]
- ret
-
-Func_3c95f: ; 0x3c95f
- ld hl, $0002
- add hl, bc
- bit 4, [hl]
- jr z, .asm_3c96a
- res 4, [hl]
- ret
-
-.asm_3c96a
- set 4, [hl]
- call Func_3ca10
- ld [wdea1], a
- ret
-
-Func_3c973: ; 0x3c973
- call Func_3ca10
- ld hl, $0028
- add hl, bc
- ld [hl], a
- ld a, [wde97]
- and $3
- cp $3
- ret z
- call Func_3c9a1
- ret
-
-Func_3c987: ; 0x3c987
- call Func_3ca10
- ld [wde9a], a
- ld hl, $000b
- add hl, bc
- set 3, [hl]
- ret
-
-Func_3c994: ; 0x3c994
- call Func_3ca10
- rrca
- rrca
- and $c0
- ld hl, $000d
- add hl, bc
- ld [hl], a
- ret
-
-Func_3c9a1: ; 0x3c9a1
- call Func_3ca10
- ld hl, $000e
- add hl, bc
- ld [hl], a
- ret
-
-Func_3c9aa: ; 0x3c9aa
- call Func_3ca10
- ld d, a
- call Func_3ca10
- ld e, a
- call Func_3ca95
- ret
-
-Func_3c9b6: ; 0x3c9b6
- ld hl, $0012
- add hl, bc
- ld a, [wde96]
- and $7
- ld [hl], a
- ret
-
-Func_3c9c1: ; 0x3c9c1
- call Func_3ca10
- ld hl, $0013
- add hl, bc
- ld [hl], a
- ret
-
-Func_3c9ca: ; 0x3c9ca
- ld a, [wde97]
- call Func_3caf4
- call Func_3ca10
- ld hl, $0019
- add hl, bc
- and [hl]
- ld [hl], a
- ret
-
-Func_3c9da: ; 0x3c9da
- call Func_3ca10
- ld a, [wdea2]
- and a
- ret nz
- ld a, [wde96]
- ld [wde98], a
- ret
-
-Func_3c9e9: ; 0x3c9e9
- call Func_3ca10
- ld e, a
- cp $80
- jr nc, .asm_3c9f5
- ld d, $0
- jr .asm_3c9f7
-
-.asm_3c9f5
- ld d, $ff
-.asm_3c9f7
- ld hl, $0017
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- add hl, de
- ld e, l
- ld d, h
- call Func_3ca95
- ret
-
-Func_3ca05: ; 0x3ca05
- ld a, $1
- ld [wdead], a
- ret
-
-Func_3ca0b: ; 0x3ca0b
- xor a
- ld [wdead], a
- ret
-
-Func_3ca10: ; 0x3ca10
- push hl
- push de
- ld hl, $0005
- add hl, bc
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld a, [de]
- ld [wde96], a
- inc de
- ld hl, $0005
- add hl, bc
- ld [hl], e
- inc hl
- ld [hl], d
- pop de
- pop hl
- ld a, [wde96]
- ret
-
-Func_3ca2b: ; 0x3ca2b
- ld hl, $0013
- add hl, bc
- ld a, [hl]
- swap a
- and $f
- add d
- push af
- ld hl, $0013
- add hl, bc
- ld a, [hl]
- and $f
- ld l, a
- ld d, $0
- ld h, d
- add hl, de
- add hl, hl
- ld de, $4b20 ; todo
- add hl, de
- ld e, [hl]
- inc hl
- ld d, [hl]
- pop af
-.asm_3ca4b
- cp $7
- jr nc, .asm_3ca56
- sra d
- rr e
- inc a
- jr .asm_3ca4b
-
-.asm_3ca56
- ld a, d
- and $7
- ld d, a
- ret
-
-Func_3ca5b: ; 0x3ca5b
- inc a
- ld e, a
- ld d, $0
- ld hl, $0028
- add hl, bc
- ld a, [hl]
- ld l, $0
- call Func_3ca86
- ld a, l
- ld hl, $0017
- add hl, bc
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld hl, $0015
- add hl, bc
- ld l, [hl]
- call Func_3ca86
- ld e, l
- ld d, h
- ld hl, $0015
- add hl, bc
- ld [hl], e
- ld hl, $0014
- add hl, bc
- ld [hl], d
- ret
-
-Func_3ca86: ; 0x3ca86
- ld h, $0
-.asm_3ca88
- srl a
- jr nc, .asm_3ca8d
- add hl, de
-.asm_3ca8d
- sla e
- rl d
- and a
- jr nz, .asm_3ca88
- ret
-
-Func_3ca95: ; 0x3ca95
- push bc
- ld a, [wde97]
- cp $4
- jr nc, .asm_3cab7
- ld bc, wdd01
- call Func_3cad1
- ld bc, wdd33
- call Func_3cad1
- ld bc, wdd65
- call Func_3cad1
- ld bc, wdd97
- call Func_3cad1
- jr .asm_3cacf
-
-.asm_3cab7
- ld bc, wddc9
- call Func_3cad1
- ld bc, wddfb
- call Func_3cad1
- ld bc, wde2d
- call Func_3cad1
- ld bc, wde5f
- call Func_3cad1
-.asm_3cacf
- pop bc
- ret
-
-Func_3cad1: ; 0x3cad1
- ld hl, $0017
- add hl, bc
- ld [hl], e
- inc hl
- ld [hl], d
- xor a
- ld hl, $0015
- add hl, bc
- ld [hl], a
- ret
-
-Func_3cadf: ; 0x3cadf
- call Func_3cb06
- ld a, [wdeae]
- jr .asm_3caea
-
- ld a, [wde97]
-.asm_3caea
- call Func_3caf4
- ld hl, $0002
- add hl, bc
- set 0, [hl]
- ret
-
-Func_3caf4: ; 0x3caf4
- push de
- and $3
- ld e, a
- ld d, $0
- ld hl, Data_3cc8e
- add hl, de
- ld a, [hl]
- ld hl, $0019
- add hl, bc
- ld [hl], a
- pop de
- ret
-
-Func_3cb06: ; 0x3cb06
- ld a, [wdeae]
- and $3
- cp $0
- ret nz
- xor a
- ld [rNR10], a
- ld [wde9a], a
- ret
-
-Func_3cb15: ; 0x3cb15
- ld a, $1
- ld [wdd00], a
- ret
-
-Func_3cb1b: ; 0x3cb1b
- xor a
- ld [wdd00], a
- ret
-
- dr $3cb20, $3cb52
-
-WavePatterns_BankF:
-WavePattern0_BankF: ; 0x3cb52
- db $02, $46, $8A, $CE, $FF, $FE, $ED, $DC, $CB, $A9, $87, $65, $44, $33, $22, $11
-WavePattern1_BankF: ; 0x3cb62
- db $02, $46, $8A, $CE, $EF, $FF, $FE, $EE, $DD, $CB, $A9, $87, $65, $43, $22, $11
-WavePattern2_BankF: ; 0x3cb72
- db $01, $23, $43, $21, $FE, $CA, $8A, $CE, $01, $23, $43, $21, $FE, $CA, $8A, $CE
-WavePattern3_BankF: ; 0x3cb82
- db $00, $11, $22, $33, $44, $33, $22, $11, $FF, $EE, $CC, $AA, $88, $AA, $CC, $EE
-WavePattern4_BankF: ; 0x3cb92
- db $00, $11, $22, $33, $44, $33, $22, $11, $FF, $EE, $CC, $AA, $88, $AA, $CC, $EE
-
- dr $3cba2, $3cc8e
-
-Data_3cc8e: ; 0x3cc8e
- db $11, $22, $44, $88
-
-WRAMPointerTable_3cc92: ; 0x3cc92
- dw $DD01
- dw $DD33
- dw $DD65
- dw $DD97
-
- dr $3cc9a, $3cca2
-
-SongHeaderPointers0F: ; 0x3cca2
- dw Music_Nothing0F
- dw Music_BlueField
- dw Music_CatchEmRed
- dw Music_HurryUpRed
- dw Music_Pokedex
- dw Music_GastlyInTheGraveyard
- dw Music_HaunterInTheGraveyard
- dw Music_GengarInTheGraveyard
-; 0x3ccb2
-
-INCLUDE "audio/music/nothing0f.asm"
-INCLUDE "audio/music/bluefield.asm"
-INCLUDE "audio/music/catchemred.asm"
-INCLUDE "audio/music/pokedex.asm"
-INCLUDE "audio/music/hurryupred.asm"
-INCLUDE "audio/music/gastlyinthegraveyard.asm"
-INCLUDE "audio/music/haunterinthegraveyard.asm"
-INCLUDE "audio/music/gengarinthegraveyard.asm"
-
-PointerTable_3e3ce: ; 0x3e3ce
- dw $646A
- dw $6480
- dw $649A
- dw $64BA
- dw $64D0
- dw $64E0
- dw $64F0
- dw $6500
- dw $651A
- dw $652E
- dw $6544
- dw $6554
- dw $657C
- dw $6589
- dw $659F
- dw $65B5
- dw $65C5
- dw $65E2
- dw $65F4
- dw $6606
- dw $6618
- dw $662A
- dw $663C
- dw $664E
- dw $6660
- dw $6672
- dw $6684
- dw $6696
- dw $66A8
- dw $66BA
- dw $66CC
- dw $66DE
- dw $66F0
- dw $6702
- dw $671A
- dw $675D
- dw $6810
- dw $68AE
- dw $696D
- dw $6A25
- dw $6A68
- dw $6A82
- dw $6B17
- dw $6BF9
- dw $6C17
- dw $6C31
- dw $6C4B
- dw $6C7D
- dw $6C8F
- dw $6CA7
- dw $6CB7
- dw $6CD1
- dw $6CE9
- dw $6CFF
- dw $6D15
- dw $6D31
- dw $6D4D
- dw $6D65
- dw $6D78
- dw $6D98
- dw $6DB0
- dw $6DC0
- dw $6DD0
- dw $6DE3
- dw $6DF3
- dw $6E1C
- dw $6E32
- dw $6E48
- dw $6E5E
- dw $6E78
- dw $6E92
- dw $6EAA
- dw $6EC4
- dw $6ED4
- dw $6EEA
- dw $6F00
- dw $6F16
- dw $6F27
-
- dr $3e46a, $3ef63
-
-CryBasePointers: ; 0x3ef63
- dw Cry_00_Header_BankF
- dw Cry_01_Header_BankF
- dw Cry_02_Header_BankF
- dw Cry_03_Header_BankF
- dw Cry_04_Header_BankF
- dw Cry_05_Header_BankF
- dw Cry_06_Header_BankF
- dw Cry_07_Header_BankF
- dw Cry_08_Header_BankF
- dw Cry_09_Header_BankF
- dw Cry_0A_Header_BankF
- dw Cry_0B_Header_BankF
- dw Cry_0C_Header_BankF
- dw Cry_0D_Header_BankF
- dw Cry_0E_Header_BankF
- dw Cry_0F_Header_BankF
- dw Cry_10_Header_BankF
- dw Cry_11_Header_BankF
- dw Cry_12_Header_BankF
- dw Cry_13_Header_BankF
- dw Cry_14_Header_BankF
- dw Cry_15_Header_BankF
- dw Cry_16_Header_BankF
- dw Cry_17_Header_BankF
- dw Cry_18_Header_BankF
- dw Cry_19_Header_BankF
- dw Cry_1A_Header_BankF
- dw Cry_1B_Header_BankF
- dw Cry_1C_Header_BankF
- dw Cry_1D_Header_BankF
- dw Cry_1E_Header_BankF
- dw Cry_1F_Header_BankF
- dw Cry_20_Header_BankF
- dw Cry_21_Header_BankF
- dw Cry_22_Header_BankF
- dw Cry_23_Header_BankF
- dw Cry_24_Header_BankF
- dw Cry_25_Header_BankF
-
-CryData: ; 0x3efaf
-; Each entry is in the following format:
-; [base cry id], [pitch], [length
- dw $000F, $0080, $0081 ; BULBASAUR
- dw $000F, $0020, $0100 ; IVYSAUR
- dw $000F, $0000, $0140 ; VENUSAUR
- dw $0004, $0060, $00C0 ; CHARMANDER
- dw $0004, $0020, $00C0 ; CHARMELEON
- dw $0004, $0000, $0100 ; CHARIZARD
- dw $001D, $0060, $00C0 ; SQUIRTLE
- dw $001D, $0020, $00C0 ; WARTORTLE
- dw $0013, $0000, $0100 ; BLASTOISE
- dw $0016, $0080, $00A0 ; CATERPIE
- dw $001C, $00CC, $0081 ; METAPOD
- dw $0016, $0077, $00C0 ; BUTTERFREE
- dw $0015, $00EE, $0081 ; WEEDLE
- dw $0013, $00FF, $0081 ; KAKUNA
- dw $0013, $0060, $0100 ; BEEDRILL
- dw $000E, $00DF, $0084 ; PIDGEY
- dw $0014, $0028, $0140 ; PIDGEOTTO
- dw $0014, $0011, $017F ; PIDGEOT
- dw $0022, $0000, $0100 ; RATTATA
- dw $0022, $0020, $017F ; RATICATE
- dw $0010, $0000, $0100 ; SPEAROW
- dw $0018, $0040, $0120 ; FEAROW
- dw $0017, $0012, $00C0 ; EKANS
- dw $0017, $00E0, $0090 ; ARBOK
- dw $000F, $00EE, $0081 ; PIKACHU
- dw $0009, $00EE, $0088 ; RAICHU
- dw $0000, $0020, $00C0 ; SANDSHREW
- dw $0000, $00FF, $017F ; SANDSLASH
- dw $0001, $0000, $0100 ; NIDORAN_F
- dw $0001, $002C, $0160 ; NIDORINA
- dw $000A, $0000, $0100 ; NIDOQUEEN
- dw $0000, $0000, $0100 ; NIDORAN_M
- dw $0000, $002C, $0140 ; NIDORINO
- dw $0009, $0000, $0100 ; NIDOKING
- dw $0019, $00CC, $0081 ; CLEFAIRY
- dw $0019, $00AA, $00A0 ; CLEFABLE
- dw $0024, $004F, $0090 ; VULPIX
- dw $0024, $0088, $00E0 ; NINETALES
- dw $000E, $00FF, $00B5 ; JIGGLYPUFF
- dw $000E, $0068, $00E0 ; WIGGLYTUFF
- dw $001D, $00E0, $0100 ; ZUBAT
- dw $001D, $00FA, $0100 ; GOLBAT
- dw $0008, $00DD, $0081 ; ODDISH
- dw $0008, $00AA, $00C0 ; GLOOM
- dw $0023, $0022, $017F ; VILEPLUME
- dw $001E, $0020, $0160 ; PARAS
- dw $001E, $0042, $017F ; PARASECT
- dw $001A, $0044, $00C0 ; VENONAT
- dw $001A, $0029, $0100 ; VENOMOTH
- dw $000B, $00AA, $0081 ; DIGLETT
- dw $000B, $002A, $0090 ; DUGTRIO
- dw $0019, $0077, $0090 ; MEOWTH
- dw $0019, $0099, $017F ; PERSIAN
- dw $0021, $0020, $00E0 ; PSYDUCK
- dw $0021, $00FF, $00C0 ; GOLDUCK
- dw $000A, $00DD, $00E0 ; MANKEY
- dw $000A, $00AF, $00C0 ; PRIMEAPE
- dw $001F, $0020, $00C0 ; GROWLITHE
- dw $0015, $0000, $0100 ; ARCANINE
- dw $000E, $00FF, $017F ; POLIWAG
- dw $000E, $0077, $00E0 ; POLIWHIRL
- dw $000E, $0000, $017F ; POLIWRATH
- dw $001C, $00C0, $0081 ; ABRA
- dw $001C, $00A8, $0140 ; KADABRA
- dw $001C, $0098, $017F ; ALAKAZAM
- dw $001F, $00EE, $0081 ; MACHOP
- dw $001F, $0048, $00E0 ; MACHOKE
- dw $001F, $0008, $0140 ; MACHAMP
- dw $0021, $0055, $0081 ; BELLSPROUT
- dw $0025, $0044, $00A0 ; WEEPINBELL
- dw $0025, $0066, $014C ; VICTREEBEL
- dw $001A, $0000, $0100 ; TENTACOOL
- dw $001A, $00EE, $017F ; TENTACRUEL
- dw $0024, $00F0, $0090 ; GEODUDE
- dw $0024, $0000, $0100 ; GRAVELER
- dw $0012, $00E0, $00C0 ; GOLEM
- dw $0025, $0000, $0100 ; PONYTA
- dw $0025, $0020, $0140 ; RAPIDASH
- dw $0002, $0000, $0100 ; SLOWPOKE
- dw $001F, $0000, $0100 ; SLOWBRO
- dw $001C, $0080, $00E0 ; MAGNEMITE
- dw $001C, $0020, $0140 ; MAGNETON
- dw $0010, $00DD, $0081 ; FARFETCH_D
- dw $000B, $00BB, $0081 ; DODUO
- dw $000B, $0099, $00A0 ; DODRIO
- dw $000C, $0088, $0140 ; SEEL
- dw $000C, $0023, $017F ; DEWGONG
- dw $0005, $0000, $0100 ; GRIMER
- dw $0007, $00EF, $017F ; MUK
- dw $0018, $0000, $0100 ; SHELLDER
- dw $0018, $006F, $0160 ; CLOYSTER
- dw $001C, $0000, $0100 ; GASTLY
- dw $001C, $0030, $00C0 ; HAUNTER
- dw $0007, $0000, $017F ; GENGAR
- dw $0017, $00FF, $0140 ; ONIX
- dw $000D, $0088, $00A0 ; DROWZEE
- dw $000D, $00EE, $00C0 ; HYPNO
- dw $0020, $0020, $0160 ; KRABBY
- dw $0020, $00EE, $0160 ; KINGLER
- dw $0006, $00ED, $0100 ; VOLTORB
- dw $0006, $00A8, $0110 ; ELECTRODE
- dw $000B, $0000, $0100 ; EXEGGCUTE
- dw $000D, $0000, $0100 ; EXEGGUTOR
- dw $0019, $0000, $0100 ; CUBONE
- dw $0008, $004F, $00E0 ; MAROWAK
- dw $0012, $0080, $0140 ; HITMONLEE
- dw $000C, $00EE, $0140 ; HITMONCHAN
- dw $000C, $0000, $0100 ; LICKITUNG
- dw $0012, $00E6, $015D ; KOFFING
- dw $0012, $00FF, $017F ; WEEZING
- dw $0004, $0000, $0100 ; RHYHORN
- dw $0011, $0000, $0100 ; RHYDON
- dw $0014, $000A, $0140 ; CHANSEY
- dw $0012, $0000, $0100 ; TANGELA
- dw $0003, $0000, $0100 ; KANGASKHAN
- dw $0019, $0099, $0090 ; HORSEA
- dw $0019, $003C, $0081 ; SEADRA
- dw $0016, $0080, $00C0 ; GOLDEEN
- dw $0016, $0010, $017F ; SEAKING
- dw $001E, $0002, $00A0 ; STARYU
- dw $001E, $0000, $0100 ; STARMIE
- dw $0020, $0008, $00C0 ; MR_MIME
- dw $0016, $0000, $0100 ; SCYTHER
- dw $000D, $00FF, $017F ; JYNX
- dw $0006, $008F, $017F ; ELECTABUZZ
- dw $0004, $00FF, $00B0 ; MAGMAR
- dw $0014, $0000, $0100 ; PINSIR
- dw $001D, $0011, $00C0 ; TAUROS
- dw $0017, $0080, $0080 ; MAGIKARP
- dw $0017, $0000, $0100 ; GYARADOS
- dw $001B, $0000, $0100 ; LAPRAS
- dw $000E, $00FF, $017F ; DITTO
- dw $001A, $0088, $00E0 ; EEVEE
- dw $001A, $00AA, $017F ; VAPOREON
- dw $001A, $003D, $0100 ; JOLTEON
- dw $001A, $0010, $00A0 ; FLAREON
- dw $0025, $00AA, $017F ; PORYGON
- dw $001F, $00F0, $0081 ; OMANYTE
- dw $001F, $00FF, $00C0 ; OMASTAR
- dw $0016, $00BB, $00C0 ; KABUTO
- dw $0018, $00EE, $0081 ; KABUTOPS
- dw $0023, $0020, $0170 ; AERODACTYL
- dw $0005, $0055, $0081 ; SNORLAX
- dw $0009, $0080, $00C0 ; ARTICUNO
- dw $0018, $00FF, $0100 ; ZAPDOS
- dw $0009, $00F8, $00C0 ; MOLTRES
- dw $000F, $0060, $00C0 ; DRATINI
- dw $000F, $0040, $0100 ; DRAGONAIR
- dw $000F, $003C, $0140 ; DRAGONITE
- dw $001E, $0099, $017F ; MEWTWO
- dw $001E, $00EE, $017F ; MEW
-
-Cry_00_Header_BankF: ; 0x3f339
- db $84
- dw $7733
- db $05
- dw $7742
- db $07
- dw $7751
-
-Cry_01_Header_BankF: ; 0x3f342
- db $84
- dw $7943
- db $05
- dw $7956
- db $07
- dw $7969
-
-Cry_02_Header_BankF: ; 0x3f34b
- db $84
- dw $78B8
- db $05
- dw $78C7
- db $07
- dw $78D5
-
-Cry_03_Header_BankF: ; 0x3f354
- db $84
- dw $7652
- db $05
- dw $7671
- db $07
- dw $7690
-
-Cry_04_Header_BankF: ; 0x3f35d
- db $84
- dw $7A01
- db $05
- dw $7A20
- db $07
- dw $7A3F
-
-Cry_05_Header_BankF: ; 0x3f366
- db $84
- dw $77E1
- db $05
- dw $77F4
- db $07
- dw $7806
-
-Cry_06_Header_BankF: ; 0x3f36f
- db $84
- dw $778B
- db $05
- dw $77A5
- db $07
- dw $77A6
-
-Cry_07_Header_BankF: ; 0x3f378
- db $84
- dw $77B9
- db $05
- dw $77C8
- db $07
- dw $77D7
-
-Cry_08_Header_BankF: ; 0x3f381
- db $84
- dw $79D1
- db $05
- dw $79E4
- db $07
- dw $79F7
-
-Cry_09_Header_BankF: ; 0x3f38a
- db $84
- dw $74DB
- db $05
- dw $74F8
- db $07
- dw $7519
-
-Cry_0A_Header_BankF: ; 0x3f393
- db $84
- dw $7976
- db $05
- dw $7995
- db $07
- dw $79B8
-
-Cry_0B_Header_BankF: ; 0x3f39c
- db $84
- dw $7807
- db $05
- dw $7832
- db $07
- dw $7851
-
-Cry_0C_Header_BankF: ; 0x3f3a5
- db $84
- dw $786A
- db $05
- dw $7891
- db $07
- dw $78B7
-
-Cry_0D_Header_BankF: ; 0x3f3ae
- db $84
- dw $78D6
- db $05
- dw $78F5
- db $07
- dw $7924
-
-Cry_0E_Header_BankF: ; 0x3f
- db $84
- dw $775B
- db $05
- dw $776E
- db $07
- dw $7781
-
-Cry_0F_Header_BankF: ; 0x3f
- db $84
- dw $769D
- db $05
- dw $76B8
- db $07
- dw $76D3
-
-Cry_10_Header_BankF: ; 0x3f3b7
- db $84
- dw $76E3
- db $05
- dw $7706
- db $07
- dw $7729
-
-Cry_11_Header_BankF: ; 0x3f3c0
- db $84
- dw $75BF
- db $05
- dw $75DE
- db $07
- dw $7601
-
-Cry_12_Header_BankF: ; 0x3f3c9
- db $84
- dw $7AD7
- db $05
- dw $7AEA
- db $07
- dw $7AFD
-
-Cry_13_Header_BankF: ; 0x3f3d2
- db $84
- dw $7B0A
- db $05
- dw $7B25
- db $07
- dw $7B40
-
-Cry_14_Header_BankF: ; 0x3f3db
- db $84
- dw $7B53
- db $05
- dw $7B62
- db $07
- dw $7B71
-
-Cry_15_Header_BankF: ; 0x3f3e4
- db $84
- dw $7BE1
- db $05
- dw $7BFC
- db $07
- dw $7C17
-
-Cry_16_Header_BankF: ; 0x3f3ed
- db $84
- dw $7A74
- db $05
- dw $7A83
- db $07
- dw $7A92
-
-Cry_17_Header_BankF: ; 0x3f3f6
- db $84
- dw $7C2A
- db $05
- dw $7C3D
- db $07
- dw $7C50
-
-Cry_18_Header_BankF: ; 0x3f3ff
- db $84
- dw $7D3A
- db $05
- dw $7D5D
- db $07
- dw $7D80
-
-Cry_19_Header_BankF: ; 0x3f408
- db $84
- dw $7A52
- db $05
- dw $7A61
- db $07
- dw $7A73
-
-Cry_1A_Header_BankF: ; 0x3f411
- db $84
- dw $7CAB
- db $05
- dw $7CC6
- db $07
- dw $7CE1
-
-Cry_1B_Header_BankF: ; 0x3f41a
- db $84
- dw $7A9C
- db $05
- dw $7AB3
- db $07
- dw $7ACA
-
-Cry_1C_Header_BankF: ; 0x3f423
- db $84
- dw $7C5D
- db $05
- dw $7C80
- db $07
- dw $7C9B
-
-Cry_1D_Header_BankF: ; 0x3f42c
- db $84
- dw $7CF4
- db $05
- dw $7D0F
- db $07
- dw $7D2A
-
-Cry_1E_Header_BankF: ; 0x3f435
- db $84
- dw $7B7B
- db $05
- dw $7B9E
- db $07
- dw $7BC5
-
-Cry_1F_Header_BankF: ; 0x3f43e
- db $84
- dw $7D93
- db $05
- dw $7DA6
- db $07
- dw $7DB9
-
-Cry_20_Header_BankF: ; 0x3f447
- db $84
- dw $7DC6
- db $05
- dw $7DD9
- db $07
- dw $7DEC
-
-Cry_21_Header_BankF: ; 0x3f450
- db $84
- dw $7DF9
- db $05
- dw $7E1C
- db $07
- dw $7E3E
-
-Cry_22_Header_BankF: ; 0x3f459
- db $84
- dw $7E3F
- db $05
- dw $7E52
- db $07
- dw $7E65
-
-Cry_23_Header_BankF: ; 0x3f462
- db $84
- dw $7532
- db $05
- dw $7549
- db $07
- dw $755C
-
-Cry_24_Header_BankF: ; 0x3f46b
- db $84
- dw $7569
- db $05
- dw $758C
- db $07
- dw $75AF
-
-Cry_25_Header_BankF: ; 0x3f474
- db $84
- dw $7617
- db $05
- dw $762E
- db $07
- dw $7645
-
- dr $3f48f, $40000
+INCLUDE "audio/engine_0f.asm"
SECTION "bank10", ROMX, BANK[$10]
- dr $40000, $40ca2
-
-SongHeaderPointers10: ; 0x40ca2
- dw Music_Nothing10
- dw Music_RedField
- dw Music_CatchEmBlue
- dw Music_HurryUpBlue
- dw Music_HiScore
- dw Music_GameOver
-; 0x40cae
-
-INCLUDE "audio/music/nothing10.asm"
-INCLUDE "audio/music/redfield.asm"
-INCLUDE "audio/music/catchemblue.asm"
-INCLUDE "audio/music/hiscore.asm"
-INCLUDE "audio/music/gameover.asm"
-INCLUDE "audio/music/hurryupblue.asm"
-
- dr $4255b, $44000
+INCLUDE "audio/engine_10.asm"
SECTION "bank11", ROMX, BANK[$11]
- dr $44000, $44ca2
-
-SongHeaderPointers11: ; 0x44ca2
- dw Music_Nothing11
- dw Music_WhackTheDiglett
- dw Music_WhackTheDugtrio
- dw Music_SeelStage
- dw Music_Title
-; 0x44cac
-
-INCLUDE "audio/music/nothing11.asm"
-INCLUDE "audio/music/whackthediglett.asm"
-INCLUDE "audio/music/whackthedugtrio.asm"
-INCLUDE "audio/music/seelstage.asm"
-INCLUDE "audio/music/title.asm"
-
- dr $462d3, $48000
+INCLUDE "audio/engine_11.asm"
SECTION "bank12", ROMX, BANK[$12]
- dr $48000, $48ca2
-
-SongHeaderPointers12: ; 0x48ca2
- dw Music_Nothing12
- dw Music_MewtwoStage
- dw Music_Options
- dw Music_FieldSelect
- dw Music_MeowthStage
-; 0x48cac
-
-INCLUDE "audio/music/nothing12.asm"
-INCLUDE "audio/music/mewtwostage.asm"
-INCLUDE "audio/music/options.asm"
-INCLUDE "audio/music/fieldselect.asm"
-INCLUDE "audio/music/meowthstage.asm"
-
- dr $49c04, $4c000
+INCLUDE "audio/engine_12.asm"
SECTION "bank13", ROMX, BANK[$13]
- dr $4c000, $4cca2
-
-SongHeaderPointers13: ; 0x4cca2
- dw Music_Nothing13
- dw Music_EndCredits
- dw Music_NameEntry
-; 0x4cca8
-
-INCLUDE "audio/music/nothing13.asm"
-INCLUDE "audio/music/endcredits.asm"
-INCLUDE "audio/music/nameentry.asm"
-
- dr $4def4, $50000
+INCLUDE "audio/engine_13.asm"
SECTION "bank14", ROMX, BANK[$14]
-PlayPikachuSoundClip: ; 0x50000
-; Plays the pcm (pulse-code modulation) sound clip of one of the pikachu noises.
- sla a
- ld c, a
- ld b, $0
- ld hl, PikachuSoundClipPointers
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- push hl
- di
- ld b, $4
-.asm_50010
- ld a, [rLY]
- and a
- jr nz, .asm_50010
- dec b
- jr nz, .asm_50010
- xor a
- ld [rNR50], a
- ld [rNR51], a
- ld a, $80
- ld [rNR52], a
- xor a
- ld [rNR30], a
- ld hl, wd84b
- ld c, $30
- ld b, $10
-.asm_5002b
- ld a, [$ff00+c]
- ld [hli], a
- ld a, $ff
- ld [$ff00+c], a
- inc c
- dec b
- jr nz, .asm_5002b
- ld a, $80
- ld [rNR30], a
- ld a, $ff
- ld [rNR31], a
- ld a, $20
- ld [rNR32], a
- ld a, $ff
- ld [rNR33], a
- ld a, $87
- ld [rNR34], a
- ld a, $77
- ld [rNR50], a
- ld a, $44
- ld [rNR51], a
- pop hl
- call PlayPikachuPCM
- xor a
- ld [rNR50], a
- ld [rNR51], a
- ld [rNR52], a
- ld hl, wd84b
- ld c, $30
- ld b, $10
-.asm_50062
- ld a, [hli]
- ld [$ff00+c], a
- inc c
- dec b
- jr nz, .asm_50062
- ld a, $77
- ld [rNR50], a
- ld a, $ff
- ld [rNR51], a
- ld a, $80
- ld [rNR52], a
- ei
- ret
-
-PikachuSoundClipPointers: ; 0x50076
- dw PikachuBillboardBonusSoundClip
- dw PikachuThundershockSoundClip
-
-PikachuBillboardBonusSoundClip: ; 0x5007a
- dw $caf ; length of the pcm data (todo: there is probably a way to do this dynamically with rgbds)
- INCBIN "audio/sound_clips/pi_ka_chu.pcm"
-
- db $1f ; unused
-
-PikachuThundershockSoundClip: ; 0x50d2c
- dw $1227 ; length of the pcm data (todo: there is probably a way to do this dynamically with rgbds)
- INCBIN "audio/sound_clips/piiiiikaaaa.pcm"
-
- db $f0, $00, $00 ; unused
-
-PlayPikachuPCM: ; 0x51f56
-; Plays the audio PCM at [hl]
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
- ; bc = number of bytes in the sound clip's PCM (pulse-code modulation)
-.loop
- ld a, [hli]
- ld d, a
- ld a, $3
-.playSingleSample
- dec a
- jr nz, .playSingleSample
- call LoadNextSoundClipSample
- call PlaySoundClipSample
- call LoadNextSoundClipSample
- call PlaySoundClipSample
- call LoadNextSoundClipSample
- call PlaySoundClipSample
- call LoadNextSoundClipSample
- call PlaySoundClipSample
- call LoadNextSoundClipSample
- call PlaySoundClipSample
- call LoadNextSoundClipSample
- call PlaySoundClipSample
- call LoadNextSoundClipSample
- call PlaySoundClipSample
- call LoadNextSoundClipSample
- dec bc
- ld a, c
- or b
- jr nz, .loop
- ret
-
-LoadNextSoundClipSample: ; 0x51f94
- ld a, d
- and $80
- srl a
- srl a
- ld [rNR32], a
- sla d
- ret
-
-PlaySoundClipSample: ; 0x51fa0
- ld a, $3
-.loop
- dec a
- jr nz, .loop
- ret
-
- dr $51fa6, $54000
-
-SECTION "bank15", ROMX, BANK[$15]
+INCLUDE "audio/pikapcm.asm"
- dr $54000, $58000 ; 0x54000
+; bank $15 is blank
SECTION "bank16", ROMX, BANK[$16]