pokeyellow/engine/pikachu_pcm.asm

155 lines
3.0 KiB
NASM
Executable File

PlayPikachuSoundClip:: ; f0000 (3c:4000)
ld a, e
ld e, a
ld d, $0
ld hl, PikachuCriesPointerTable
add hl, de
add hl, de
add hl, de
ld b, [hl] ; bank of pikachu cry data
inc hl
ld a, [hli] ; cry data pointer
ld h, [hl]
ld l, a
ld c, $4
.loop
dec c
jr z, .done_delay
call DelayFrame
jr .loop
.done_delay
di
push bc
push hl
ld a, $80
ld [rNR52], a
ld a, $77
ld [rNR50], a
xor a
ld [rNR30], a
ld hl, $ff30 ; wave data
ld de, wRedrawRowOrColumnSrcTiles
.saveWaveDataLoop
ld a, [hl]
ld [de], a
inc de
ld a, $ff
ld [hli], a
ld a, l
cp $40 ; end of wave data
jr nz, .saveWaveDataLoop
ld a, $80
ld [rNR30], a
ld a, [rNR51]
or $44
ld [rNR51], 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
pop hl
pop bc
call PlayPikachuPCM
xor a
ld [wc0f3], a
ld [wc0f4], a
ld a, $80
ld [rNR52], a
xor a
ld [rNR30], a
ld hl, $ff30
ld de, wRedrawRowOrColumnSrcTiles
.reloadWaveDataLoop
ld a, [de]
inc de
ld [hli], a
ld a, l
cp $40 ; end of wave data
jr nz, .reloadWaveDataLoop
ld a, $80
ld [rNR30], a
ld a, [rNR51]
and $bb
ld [rNR51], a
xor a
ld [wChannelSoundIDs+CH4], a
ld [wChannelSoundIDs+CH5], a
ld [wChannelSoundIDs+CH6], a
ld [wChannelSoundIDs+CH7], a
ld a, [H_LOADEDROMBANK]
ei
ret
PikachuCriesPointerTable: ; f008e (3c:408e)
; format:
; db bank
; dw pointer to cry
; bank 21
pikacry_def PikachuCry1 ; 21:4000
pikacry_def PikachuCry2 ; 21:491a
pikacry_def PikachuCry3 ; 21:4fdc
pikacry_def PikachuCry4 ; 21:59ee
; bank 22
pikacry_def PikachuCry5 ; 22:4000
pikacry_def PikachuCry6 ; 22:5042
pikacry_def PikachuCry7 ; 22:6254
; bank 23
pikacry_def PikachuCry8 ; 23:4000
pikacry_def PikachuCry9 ; 23:50ca
pikacry_def PikachuCry10 ; 23:5e0c
; bank 24
pikacry_def PikachuCry11 ; 24:4000
pikacry_def PikachuCry12 ; 24:4722
pikacry_def PikachuCry13 ; 24:54a4
; bank 25
pikacry_def PikachuCry14 ; 25:4000
pikacry_def PikachuCry15 ; 25:589a
; banks 31-34, in no particular order
pikacry_def PikachuCry16 ; 31:4000
pikacry_def PikachuCry17 ; 34:4000
pikacry_def PikachuCry18 ; 31:549a
pikacry_def PikachuCry19 ; 33:4000
pikacry_def PikachuCry20 ; 32:4000
pikacry_def PikachuCry21 ; 32:6002
pikacry_def PikachuCry22 ; 31:63a4
pikacry_def PikachuCry23 ; 34:4862
pikacry_def PikachuCry24 ; 33:5632
pikacry_def PikachuCry25 ; 34:573c
pikacry_def PikachuCry26 ; 33:725c
; bank 35
pikacry_def PikachuCry27 ; 35:4000
pikacry_def PikachuCry28 ; 35:4b5a
pikacry_def PikachuCry29 ; 35:5da4
pikacry_def PikachuCry30 ; 35:69ce
pikacry_def PikachuCry31 ; 35:6e80
; bank 36
pikacry_def PikachuCry32 ; 36:4000
pikacry_def PikachuCry33 ; 36:458a
pikacry_def PikachuCry34 ; 36:523c
; bank 37
pikacry_def PikachuCry35 ; 37:4000
pikacry_def PikachuCry36 ; 37:522a
; banks 36-38
pikacry_def PikachuCry37 ; 38:4000
pikacry_def PikachuCry38 ; 38:4dfa
pikacry_def PikachuCry39 ; 37:6e0c
pikacry_def PikachuCry40 ; 38:5a64
pikacry_def PikachuCry41 ; 36:6746
pikacry_def PikachuCry42 ; 38:6976