pokepinball/audio/engine_10.asm
Xillicis fb7aa4b2e0
Update to rgbds v0.8.0 (#57)
* First test commit

* XIL: All changes for pokepinball to work with rgbds v0.8.0
2024-12-22 17:53:44 -06:00

2184 lines
30 KiB
NASM

Func_40000:
push hl
push de
push bc
push af
call Func_40b1b
ld hl, wChannel0
ld de, wdeb0 - wChannel0
.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
.loop
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, .loop
ld a, $8
ld [wde9a], a
ld a, $77
ld [wde98], a
call Func_40b15
pop af
pop bc
pop de
pop hl
ret
Func_40042:
ld a, [de]
inc de
and $7
ld [wdeae], a
ld c, a
ld b, $0
ld hl, ChannelPointers_Bank10
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
Unused_4008b: ; 4008b
db $d8, $d9, $da, $53, $30
PlaySong_Bank10:
push de
call Func_40000
pop de
call Func_40b1b
ld hl, wde9b
ld [hl], e
inc hl
ld [hl], d
ld hl, SongHeaderPointers_Bank10
add hl, de
add hl, de
ld e, [hl]
inc hl
ld d, [hl]
ld a, [de]
rlca
rlca
and $3
inc a
.asm_400ac
push af
call Func_40042
call Func_40adf
pop af
dec a
jr nz, .asm_400ac
call Func_40b15
ret
Unused_400bb: ; 400bb
db $2e, $3d, $3e, $0d, $0e
PlaySoundEffect_Bank10:
call Func_40b1b
ld hl, wde9b
ld [hl], e
inc hl
ld [hl], d
ld hl, SoundEffects_Bank10
add hl, de
add hl, de
ld e, [hl]
inc hl
ld d, [hl]
ld a, [de]
rlca
rlca
and $3
inc a
.asm_400d7
push af
call Func_40042
ld hl, $0002
add hl, bc
set 3, [hl]
call Func_40adf
pop af
dec a
jr nz, .asm_400d7
call Func_40b15
ret
Unused_400ec:
; ???
db $77, $EF, $F0, $F1
PlayCry_Bank10:
; Plays a Pokemon cry.
; Input: e = mon id
call Func_40b1b
ld a, e
and a
ret z
dec e
ld d, $0
ld hl, CryData_Bank10
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_Bank10
add hl, de
add hl, de
ld e, [hl]
inc hl
ld d, [hl]
ld a, [de]
rlca
rlca
and $3
inc a
.asm_4012a
push af
call Func_40042
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_4015b
ld hl, $0017
add hl, bc
ld a, [wdeaa]
ld [hli], a
ld a, [wdeab]
ld [hl], a
.asm_4015b
call Func_40adf
pop af
dec a
jr nz, .asm_4012a
ld a, [wdeac]
and a
jr nz, .asm_40173
ld a, [wde98]
ld [wdeac], a
ld a, $77
ld [wde98], a
.asm_40173
ld a, $1
ld [wdead], a
call Func_40b15
ret
Unused_4017c: ; 0x4017c
; ???
db $EE, $CD, $51, $30
Func_40180:
ld a, [wdd00]
and a
ret z
xor a
ld [wde97], a
ld [wde99], a
ld bc, wChannel0
.asm_4018f
ld hl, $0002
add hl, bc
bit 0, [hl]
jp z, .asm_4022d
ld hl, $0014
add hl, bc
ld a, [hl]
cp $2
jr c, .asm_401a4
dec [hl]
jr .asm_401c1
.asm_401a4
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_40670
.asm_401c1
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_404f0
call Func_40632
ld a, [wdead]
and a
jr z, .asm_4020a
ld a, [wde97]
cp $4
jr nc, .asm_40219
ld hl, wChannel4 + 2
bit 0, [hl]
jr nz, .asm_40204
ld hl, wChannel5 + 2
bit 0, [hl]
jr nz, .asm_40204
ld hl, wChannel6 + 2
bit 0, [hl]
jr nz, .asm_40204
ld hl, wChannel7 + 2
bit 0, [hl]
jr z, .asm_4020a
.asm_40204
ld hl, $000b
add hl, bc
set 5, [hl]
.asm_4020a
ld a, [wde97]
cp $4
jr nc, .asm_40219
ld hl, $00ca
add hl, bc
bit 0, [hl]
jr nz, .asm_40227
.asm_40219
call Func_4024d
ld hl, $0019
add hl, bc
ld a, [wde99]
or [hl]
ld [wde99], a
.asm_40227
ld hl, $000b
add hl, bc
xor a
ld [hl], a
.asm_4022d
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_4018f
call Func_4040d
ld a, [wde98]
ldh [rNR50], a
ld a, [wde99]
ldh [rNR51], a
ret
Func_4024d:
ld hl, PointerTable_4025e
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_4025e:
dw Func_4026e
dw Func_402e0
dw Func_40349
dw Func_403cf
dw Func_4026e
dw Func_402e0
dw Func_40349
dw Func_403cf
Func_4026e:
ld hl, $000b
add hl, bc
bit 3, [hl]
jr z, .asm_4027b
ld a, [wde9a]
ldh [rNR10], a
.asm_4027b
bit 5, [hl]
jr nz, .asm_402ba
bit 4, [hl]
jr nz, .asm_402c6
bit 6, [hl]
jr nz, .asm_402b4
bit 1, [hl]
jr z, .asm_40295
ld a, [wde93]
ldh [rNR13], a
ld a, [wde94]
ldh [rNR14], a
.asm_40295
bit 2, [hl]
jr z, .asm_402a5
ld a, [wde92]
ldh [rNR12], a
ld a, [wde94]
or $80
ldh [rNR14], a
.asm_402a5
bit 0, [hl]
ret z
ld a, [wde91]
ld d, a
ldh a, [rNR11]
and $3f
or d
ldh [rNR11], a
ret
.asm_402b4
ld a, [wde93]
ldh [rNR13], a
ret
.asm_402ba
ld a, $8
ldh [rNR12], a
ld a, [wde94]
or $80
ldh [rNR14], a
ret
.asm_402c6
ld hl, wde91
ld a, $3f
or [hl]
ldh [rNR11], a
ld a, [wde92]
ldh [rNR12], a
ld a, [wde93]
ldh [rNR13], a
ld a, [wde94]
or $80
ldh [rNR14], a
ret
Func_402e0:
ld hl, $000b
add hl, bc
bit 5, [hl]
jr nz, .asm_40323
bit 4, [hl]
jr nz, .asm_4032f
bit 6, [hl]
jr nz, .asm_4031d
bit 1, [hl]
jr z, .asm_402fe
ld a, [wde93]
ldh [rNR23], a
ld a, [wde94]
ldh [rNR24], a
.asm_402fe
bit 2, [hl]
jr z, .asm_4030e
ld a, [wde92]
ldh [rNR22], a
ld a, [wde94]
or $80
ldh [rNR24], a
.asm_4030e
bit 0, [hl]
ret z
ld a, [wde91]
ld d, a
ldh a, [rNR21]
and $3f
or d
ldh [rNR21], a
ret
.asm_4031d
ld a, [wde93]
ldh [rNR23], a
ret
.asm_40323
ld a, $8
ldh [rNR22], a
ld a, [wde94]
or $80
ldh [rNR24], a
ret
.asm_4032f
ld hl, wde91
ld a, $3f
or [hl]
ldh [rNR21], a
ld a, [wde92]
ldh [rNR22], a
ld a, [wde93]
ldh [rNR23], a
ld a, [wde94]
or $80
ldh [rNR24], a
ret
Func_40349:
ld hl, $000b
add hl, bc
bit 5, [hl]
jr nz, .asm_40387
bit 4, [hl]
jr nz, .asm_4038b
bit 6, [hl]
jr nz, .asm_40381
bit 1, [hl]
jr z, .asm_40367
ld a, [wde93]
ldh [rNR33], a
ld a, [wde94]
ldh [rNR34], a
.asm_40367
bit 2, [hl]
ret z
xor a
ldh [rNR30], a
call LoadWavePattern_Bank10
ld a, $80
ldh [rNR30], a
ld a, [wde93]
ldh [rNR33], a
ld a, [wde94]
or $80
ldh [rNR34], a
ret
.asm_40381
ld a, [wde93]
ldh [rNR33], a
ret
.asm_40387
xor a
ldh [rNR30], a
ret
.asm_4038b
ld a, $3f
ldh [rNR31], a
xor a
ldh [rNR30], a
call LoadWavePattern_Bank10
ld a, $80
ldh [rNR30], a
ld a, [wde93]
ldh [rNR33], a
ld a, [wde94]
or $80
ldh [rNR34], a
ret
LoadWavePattern_Bank10:
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_Bank10
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
ldh [rNR32], a ; set volume of wave channel
ret
Func_403cf:
ld hl, $000b
add hl, bc
bit 5, [hl]
jr nz, .asm_403f1
bit 4, [hl]
jr nz, .asm_403fa
bit 1, [hl]
jr z, .asm_403e4
ld a, [wde93]
ldh [rNR43], a
.asm_403e4
bit 2, [hl]
ret z
ld a, [wde92]
ldh [rNR42], a
ld a, $80
ldh [rNR44], a
ret
.asm_403f1
ld a, $8
ldh [rNR42], a
ld a, $80
ldh [rNR44], a
ret
.asm_403fa
ld a, $3f
ldh [rNR41], a
ld a, [wde92]
ldh [rNR42], a
ld a, [wde93]
ldh [rNR43], a
ld a, $80
ldh [rNR44], a
ret
Func_4040d:
ld a, [wdea2]
and a
ret z
ld a, [wdea3]
and a
jr z, .asm_4041d
dec a
ld [wdea3], a
ret
.asm_4041d
ld a, [wdea2]
ld d, a
and $7f
ld [wdea3], a
ld a, [wde98]
and $7
bit 7, d
jr nz, .asm_40448
and a
jr z, .asm_40435
dec a
jr .asm_40454
.asm_40435
ld a, [wdea4]
ld e, a
ld a, [wdea5]
ld d, a
push bc
call PlaySong_Bank10
pop bc
ld hl, wdea2
set 7, [hl]
ret
.asm_40448
cp $7
jr nc, .asm_4044f
inc a
jr .asm_40454
.asm_4044f
xor a
ld [wdea2], a
ret
.asm_40454
ld d, a
swap a
or d
ld [wde98], a
ret
Func_4045c:
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_40470
ld a, $1
.asm_40470
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_404ab
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_404c9
.asm_404ab
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_404c9
push bc
ld hl, wde95
ld b, $0
.asm_404cf
inc b
ld a, e
sub [hl]
ld e, a
jr nc, .asm_404cf
ld a, d
and a
jr z, .asm_404dc
dec d
jr .asm_404cf
.asm_404dc
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_404f0:
ld hl, $0003
add hl, bc
bit 2, [hl]
jr z, .asm_4050b
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_4050b
ld hl, $0003
add hl, bc
bit 4, [hl]
jr z, .asm_40529
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_40529
ld hl, $0003
add hl, bc
bit 1, [hl]
jp z, .asm_405c1
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_40574
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_405a1
jr nz, .asm_405b4
ld hl, $001f
add hl, bc
ld a, [hl]
cp e
jp c, .asm_405a1
jr .asm_405b4
.asm_40574
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_405a1
jr nz, .asm_405b4
ld hl, $001f
add hl, bc
ld a, e
cp [hl]
jr nc, .asm_405b4
.asm_405a1
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_405b4
ld hl, $000f
add hl, bc
ld [hl], e
inc hl
ld [hl], d
ld hl, $000b
add hl, bc
set 1, [hl]
.asm_405c1
ld hl, $0003
add hl, bc
bit 0, [hl]
jr z, .asm_4061a
ld hl, $001b
add hl, bc
ld a, [hl]
and a
jr nz, .asm_405e3
ld hl, $001d
add hl, bc
ld a, [hl]
and a
jr z, .asm_4061a
ld d, a
ld hl, $001e
add hl, bc
ld a, [hl]
and $f
jr z, .asm_405e6
.asm_405e3
dec [hl]
jr .asm_4061a
.asm_405e6
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_40605
res 0, [hl]
ld a, d
and $f
ld d, a
ld a, e
sub d
jr nc, .asm_40611
ld a, $0
jr .asm_40611
.asm_40605
set 0, [hl]
ld a, d
and $f0
swap a
add e
jr nc, .asm_40611
ld a, $ff
.asm_40611
ld [wde93], a
ld hl, $000b
add hl, bc
set 6, [hl]
.asm_4061a
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_4062b
dec [hl]
ret
.asm_4062b
ld hl, $000b
add hl, bc
set 5, [hl]
ret
Func_40632:
ld hl, $0002
add hl, bc
bit 4, [hl]
ret z
ld a, [wde9f]
and a
jr z, .asm_40644
dec a
ld [wde9f], a
ret
.asm_40644
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_40670:
call Func_40a10
cp $ff
jr z, .asm_406c9
cp $d0
jr c, .asm_40680
.asm_4067b
call Func_40786
jr Func_40670
.asm_40680
ld hl, $0002
add hl, bc
bit 3, [hl]
jp nz, Func_40723
bit 5, [hl]
jp nz, Func_40723
bit 4, [hl]
jp nz, Func_40750
ld a, [wde96]
and $f
call Func_40a5b
ld a, [wde96]
swap a
and $f
jr z, .asm_406c2
ld hl, $0011
add hl, bc
ld [hl], a
ld e, a
ld hl, $0012
add hl, bc
ld d, [hl]
call Func_40a2b
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_4045c
.asm_406c2
ld hl, $000b
add hl, bc
set 5, [hl]
ret
.asm_406c9
ld hl, $0002
add hl, bc
bit 1, [hl]
jr nz, .asm_4067b
ld a, [wde97]
cp $4
jr nc, .asm_406e0
ld hl, $00ca
add hl, bc
bit 0, [hl]
jr nz, .asm_406f6
.asm_406e0
ld hl, $0002
add hl, bc
bit 5, [hl]
call nz, Func_40704
ld a, [wde97]
cp $4
jr nz, .asm_406f6
xor a
ldh [rNR10], a
ld [wde9a], a
.asm_406f6
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_40704:
ld a, [wde97]
cp $4
ret nz
xor a
ld hl, wChannel5 + $26
ld [hli], a
ld [hl], a
ld hl, wChannel7 + $26
ld [hli], a
ld [hl], a
ld a, [wdeac]
ld [wde98], a
xor a
ld [wdeac], a
ld [wdead], a
ret
Func_40723:
ld hl, $000b
add hl, bc
set 4, [hl]
ld a, [wde96]
call Func_40a5b
call Func_40a10
ld hl, $000e
add hl, bc
ld [hl], a
call Func_40a10
ld hl, $000f
add hl, bc
ld [hl], a
ld a, [wde97]
and $3
cp $3
ret z
call Func_40a10
ld hl, $0010
add hl, bc
ld [hl], a
ret
Func_40750:
ld a, [wde97]
cp $3
ret nz
ld a, [wde96]
and $f
call Func_40a5b
ld a, [wdea1]
ld e, a
ld d, $0
ld hl, Drumkits_Bank10
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_40786:
ld a, [wde96]
sub $d0
ld e, a
ld d, $0
ld hl, PointerTable_40797
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
jp hl
PointerTable_40797:
dw Func_409b6
dw Func_409b6
dw Func_409b6
dw Func_409b6
dw Func_409b6
dw Func_409b6
dw Func_409b6
dw Func_409b6
dw Func_40973
dw Func_409c1
dw Func_409aa
dw Func_40994
dw Func_409a1
dw Func_40987
dw Func_40939
dw Func_40951
dw Func_408ff
dw Func_408c4
dw Func_408b5
dw Func_4095f
dw Func_409ca
dw Func_409da
dw Func_40926
dw Func_407f7
dw Func_407f7
dw Func_409e9
dw Func_407f7
dw Func_407f7
dw Func_40a05
dw Func_40a0b
dw Func_407f7
dw Func_407f7
dw Func_407f7
dw Func_407f7
dw Func_407f7
dw Func_407f7
dw Func_407f7
dw Func_407f7
dw Func_407f7
dw Func_407f7
dw Func_407f7
dw Func_407f7
dw Func_40885
dw Func_4088e
dw Func_40833
dw Func_40843
dw Func_4080d
dw Func_407f8
Func_407f7:
ret
Func_407f8:
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_4080d:
call Func_40a10
ld e, a
call Func_40a10
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_40833:
call Func_40a10
ld e, a
call Func_40a10
ld d, a
ld hl, $0005
add hl, bc
ld [hl], e
inc hl
ld [hl], d
ret
Func_40843:
call Func_40a10
ld hl, $0002
add hl, bc
bit 2, [hl]
jr nz, .asm_40859
and a
jr z, .asm_40862
dec a
set 2, [hl]
ld hl, $0016
add hl, bc
ld [hl], a
.asm_40859
ld hl, $0016
add hl, bc
ld a, [hl]
and a
jr z, .asm_40872
dec [hl]
.asm_40862
call Func_40a10
ld e, a
call Func_40a10
ld d, a
ld hl, $0005
add hl, bc
ld [hl], e
inc hl
ld [hl], d
ret
.asm_40872
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_40885:
call Func_40a10
ld hl, $000c
add hl, bc
ld [hl], a
ret
Func_4088e:
call Func_40a10
ld hl, $000c
add hl, bc
cp [hl]
jr z, .asm_408a5
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_408a5
call Func_40a10
ld e, a
call Func_40a10
ld d, a
ld hl, $0005
add hl, bc
ld [hl], e
inc hl
ld [hl], d
ret
Func_408b5:
call Func_40a10
ld hl, $0025
add hl, bc
ld [hl], a
ld hl, $0003
add hl, bc
set 3, [hl]
ret
Func_408c4:
ld hl, $0003
add hl, bc
set 0, [hl]
ld hl, $0004
add hl, bc
res 0, [hl]
call Func_40a10
ld hl, $001c
add hl, bc
ld [hl], a
ld hl, $001b
add hl, bc
ld [hl], a
call Func_40a10
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_408ff:
call Func_40a10
ld [wde95], a
call Func_40a10
ld d, a
and $f
ld e, a
ld a, d
swap a
and $f
ld d, a
call Func_40a2b
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_40926:
ld hl, $0003
add hl, bc
set 4, [hl]
ld hl, $0027
add hl, bc
call Func_40a10
ld [hld], a
call Func_40a10
ld [hl], a
ret
Func_40939:
ld hl, $0003
add hl, bc
set 2, [hl]
call Func_40a10
rrca
rrca
ld hl, $001a
add hl, bc
ld [hl], a
and $c0
ld hl, $000d
add hl, bc
ld [hl], a
ret
Func_40951:
ld hl, $0002
add hl, bc
bit 3, [hl]
jr z, .asm_4095c
res 3, [hl]
ret
.asm_4095c
set 3, [hl]
ret
Func_4095f:
ld hl, $0002
add hl, bc
bit 4, [hl]
jr z, .asm_4096a
res 4, [hl]
ret
.asm_4096a
set 4, [hl]
call Func_40a10
ld [wdea1], a
ret
Func_40973:
call Func_40a10
ld hl, $0028
add hl, bc
ld [hl], a
ld a, [wde97]
and $3
cp $3
ret z
call Func_409a1
ret
Func_40987:
call Func_40a10
ld [wde9a], a
ld hl, $000b
add hl, bc
set 3, [hl]
ret
Func_40994:
call Func_40a10
rrca
rrca
and $c0
ld hl, $000d
add hl, bc
ld [hl], a
ret
Func_409a1:
call Func_40a10
ld hl, $000e
add hl, bc
ld [hl], a
ret
Func_409aa:
call Func_40a10
ld d, a
call Func_40a10
ld e, a
call Func_40a95
ret
Func_409b6:
ld hl, $0012
add hl, bc
ld a, [wde96]
and $7
ld [hl], a
ret
Func_409c1:
call Func_40a10
ld hl, $0013
add hl, bc
ld [hl], a
ret
Func_409ca:
ld a, [wde97]
call Func_40af4
call Func_40a10
ld hl, $0019
add hl, bc
and [hl]
ld [hl], a
ret
Func_409da:
call Func_40a10
ld a, [wdea2]
and a
ret nz
ld a, [wde96]
ld [wde98], a
ret
Func_409e9:
call Func_40a10
; cast to s16
ld e, a
cp $80
jr nc, .asm_409f5
ld d, $0
jr .asm_409f7
.asm_409f5
ld d, $ff
.asm_409f7
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_40a95
ret
Func_40a05:
ld a, $1
ld [wdead], a
ret
Func_40a0b:
xor a
ld [wdead], a
ret
Func_40a10:
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_40a2b:
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, Data_40b20
add hl, de
ld e, [hl]
inc hl
ld d, [hl]
pop af
.asm_40a4b
cp $7
jr nc, .asm_40a56
sra d
rr e
inc a
jr .asm_40a4b
.asm_40a56
ld a, d
and $7
ld d, a
ret
Func_40a5b:
inc a
ld e, a
ld d, $0
ld hl, $0028
add hl, bc
ld a, [hl]
ld l, $0
call Func_40a86
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_40a86
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_40a86:
ld h, $0
.asm_40a88
srl a
jr nc, .asm_40a8d
add hl, de
.asm_40a8d
sla e
rl d
and a
jr nz, .asm_40a88
ret
Func_40a95:
push bc
ld a, [wde97]
cp $4
jr nc, .asm_40ab7
ld bc, wChannel0
call Func_40ad1
ld bc, wChannel1
call Func_40ad1
ld bc, wChannel2
call Func_40ad1
ld bc, wChannel3
call Func_40ad1
jr .asm_40acf
.asm_40ab7
ld bc, wChannel4
call Func_40ad1
ld bc, wChannel5
call Func_40ad1
ld bc, wChannel6
call Func_40ad1
ld bc, wChannel7
call Func_40ad1
.asm_40acf
pop bc
ret
Func_40ad1:
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_40adf:
call Func_40b06
ld a, [wdeae]
jr .asm_40aea
ld a, [wde97]
.asm_40aea
call Func_40af4
ld hl, $0002
add hl, bc
set 0, [hl]
ret
Func_40af4:
push de
and $3
ld e, a
ld d, $0
ld hl, Data_40c8e
add hl, de
ld a, [hl]
ld hl, $0019
add hl, bc
ld [hl], a
pop de
ret
Func_40b06:
ld a, [wdeae]
and $3
cp $0
ret nz
xor a
ldh [rNR10], a
ld [wde9a], a
ret
Func_40b15:
ld a, $1
ld [wdd00], a
ret
Func_40b1b:
xor a
ld [wdd00], a
ret
Data_40b20:
dw $0000
dw $f82c
dw $f89d
dw $f907
dw $f96b
dw $f9ca
dw $fa23
dw $fa77
dw $fac7
dw $fb12
dw $fb58
dw $fb9b
dw $fbda
dw $fc16
dw $fc4e
dw $fc83
dw $fcb5
dw $fce5
dw $fd11
dw $fd3b
dw $fd63
dw $fd89
dw $fdac
dw $fdcd
dw $fded
WavePatterns_Bank10:
INCLUDE "audio/wave_samples.asm"
INCLUDE "audio/drumkits_10.asm"
Data_40c8e:
db $11, $22, $44, $88
ChannelPointers_Bank10:
dw wChannel0
dw wChannel1
dw wChannel2
dw wChannel3
dw wChannel4
dw wChannel5
dw wChannel6
dw wChannel7
SongHeaderPointers_Bank10:
dw Music_Nothing10
dw Music_BlueField
dw Music_CatchEmBlue
dw Music_HurryUpBlue
dw Music_HiScore
dw Music_GameOver
INCLUDE "audio/music/nothing10.asm"
INCLUDE "audio/music/bluefield.asm"
INCLUDE "audio/music/catchemblue.asm"
INCLUDE "audio/music/hiscore.asm"
INCLUDE "audio/music/gameover.asm"
INCLUDE "audio/music/hurryupblue.asm"
SoundEffects_Bank10:
dw Sfx_SoundEffect0_Bank10
dw Sfx_SoundEffect1_Bank10
dw Sfx_SoundEffect2_Bank10
dw Sfx_SoundEffect3_Bank10
dw Sfx_SoundEffect4_Bank10
dw Sfx_SoundEffect5_Bank10
dw Sfx_SoundEffect6_Bank10
dw Sfx_SoundEffect7_Bank10
dw Sfx_SoundEffect8_Bank10
dw Sfx_SoundEffect9_Bank10
dw Sfx_SoundEffect10_Bank10
dw Sfx_SoundEffect11_Bank10
dw Sfx_SoundEffect12_Bank10
dw Sfx_SoundEffect13_Bank10
dw Sfx_SoundEffect14_Bank10
dw Sfx_SoundEffect15_Bank10
dw Sfx_SoundEffect16_Bank10
dw Sfx_SoundEffect17_Bank10
dw Sfx_SoundEffect18_Bank10
dw Sfx_SoundEffect19_Bank10
dw Sfx_SoundEffect20_Bank10
dw Sfx_SoundEffect21_Bank10
dw Sfx_SoundEffect22_Bank10
dw Sfx_SoundEffect23_Bank10
dw Sfx_SoundEffect24_Bank10
dw Sfx_SoundEffect25_Bank10
dw Sfx_SoundEffect26_Bank10
dw Sfx_SoundEffect27_Bank10
dw Sfx_SoundEffect28_Bank10
dw Sfx_SoundEffect29_Bank10
dw Sfx_SoundEffect30_Bank10
dw Sfx_SoundEffect31_Bank10
dw Sfx_SoundEffect32_Bank10
dw Sfx_SoundEffect33_Bank10
dw Sfx_SoundEffect34_Bank10
dw Sfx_SoundEffect35_Bank10
dw Sfx_SoundEffect36_Bank10
dw Sfx_SoundEffect37_Bank10
dw Sfx_SoundEffect38_Bank10
dw Sfx_SoundEffect39_Bank10
dw Sfx_SoundEffect40_Bank10
dw Sfx_SoundEffect41_Bank10
dw Sfx_SoundEffect42_Bank10
dw Sfx_SoundEffect43_Bank10
dw Sfx_SoundEffect44_Bank10
dw Sfx_SoundEffect45_Bank10
dw Sfx_SoundEffect46_Bank10
dw Sfx_SoundEffect47_Bank10
dw Sfx_SoundEffect48_Bank10
dw Sfx_SoundEffect49_Bank10
dw Sfx_SoundEffect50_Bank10
dw Sfx_SoundEffect51_Bank10
dw Sfx_SoundEffect52_Bank10
dw Sfx_SoundEffect53_Bank10
dw Sfx_SoundEffect54_Bank10
dw Sfx_SoundEffect55_Bank10
dw Sfx_SoundEffect56_Bank10
dw Sfx_SoundEffect57_Bank10
dw Sfx_SoundEffect58_Bank10
dw Sfx_SoundEffect59_Bank10
dw Sfx_SoundEffect60_Bank10
dw Sfx_SoundEffect61_Bank10
dw Sfx_SoundEffect62_Bank10
dw Sfx_SoundEffect63_Bank10
dw Sfx_SoundEffect64_Bank10
dw Sfx_SoundEffect65_Bank10
dw Sfx_SoundEffect66_Bank10
dw Sfx_SoundEffect67_Bank10
dw Sfx_SoundEffect68_Bank10
dw Sfx_SoundEffect69_Bank10
dw Sfx_SoundEffect70_Bank10
dw Sfx_SoundEffect71_Bank10
dw Sfx_SoundEffect72_Bank10
dw Sfx_SoundEffect73_Bank10
dw Sfx_SoundEffect74_Bank10
dw Sfx_SoundEffect75_Bank10
dw Sfx_SoundEffect76_Bank10
dw Sfx_SoundEffect77_Bank10
INCLUDE "audio/sfx_10.asm"
CryBasePointers_Bank10:
dw Cry_00_Bank10
dw Cry_01_Bank10
dw Cry_02_Bank10
dw Cry_03_Bank10
dw Cry_04_Bank10
dw Cry_05_Bank10
dw Cry_06_Bank10
dw Cry_07_Bank10
dw Cry_08_Bank10
dw Cry_09_Bank10
dw Cry_0A_Bank10
dw Cry_0B_Bank10
dw Cry_0C_Bank10
dw Cry_0D_Bank10
dw Cry_0E_Bank10
dw Cry_0F_Bank10
dw Cry_10_Bank10
dw Cry_11_Bank10
dw Cry_12_Bank10
dw Cry_13_Bank10
dw Cry_14_Bank10
dw Cry_15_Bank10
dw Cry_16_Bank10
dw Cry_17_Bank10
dw Cry_18_Bank10
dw Cry_19_Bank10
dw Cry_1A_Bank10
dw Cry_1B_Bank10
dw Cry_1C_Bank10
dw Cry_1D_Bank10
dw Cry_1E_Bank10
dw Cry_1F_Bank10
dw Cry_20_Bank10
dw Cry_21_Bank10
dw Cry_22_Bank10
dw Cry_23_Bank10
dw Cry_24_Bank10
dw Cry_25_Bank10
CryData_Bank10:
; 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
INCLUDE "audio/cries_10.asm"