diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2016-12-06 21:56:48 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2016-12-06 21:56:48 -0500 |
commit | 09db40d83edac1f125fdb54669be1707ae3a07f6 (patch) | |
tree | 551e949d11ec472c0b1d74ef283c45c60033ac6b | |
parent | e935cd885be225472e077466508f815e7c203296 (diff) |
Split out audio engine copies
-rwxr-xr-x | audio/engine_0f.asm | 2733 | ||||
-rwxr-xr-x | audio/engine_10.asm | 19 | ||||
-rwxr-xr-x | audio/engine_11.asm | 17 | ||||
-rwxr-xr-x | audio/engine_12.asm | 17 | ||||
-rwxr-xr-x | audio/engine_13.asm | 13 | ||||
-rwxr-xr-x | audio/pikapcm.asm | 141 | ||||
-rwxr-xr-x | macros/sound.asm | 11 | ||||
-rwxr-xr-x | main.asm | 2701 |
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 - @@ -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] |