mirror of
https://github.com/pret/pokeyellow.git
synced 2026-05-09 20:32:11 -05:00
todo: correct address comments note: tx_pre_constants are not 100% accurate, but they work well enough to have yellow build correctly
417 lines
7.0 KiB
NASM
417 lines
7.0 KiB
NASM
Audio2_PlaySound:: ; 218bb (8:58bb)
|
|
ld [wSoundID], a
|
|
ld a, [wSoundID]
|
|
cp $ff
|
|
jp z, Audio2_2193c
|
|
cp $e9
|
|
jp z, Audio2_218db
|
|
jp c, Audio2_218db
|
|
cp $fe
|
|
jr z, .asm_218d5
|
|
jp nc, Audio2_218db
|
|
.asm_218d5
|
|
call Func_22aa
|
|
jp Audio2_21940
|
|
|
|
Audio2_218db: ; 218db (8:58db)
|
|
ld l, a
|
|
ld e, a
|
|
ld h, $0
|
|
ld d, h
|
|
add hl, hl
|
|
add hl, de
|
|
ld de, SFX_Headers_2
|
|
add hl, de
|
|
ld a, h
|
|
ld [wSfxHeaderPointer], a
|
|
ld a, l
|
|
ld [wSfxHeaderPointer + 1], a
|
|
ld a, [hl]
|
|
and $c0
|
|
rlca
|
|
rlca
|
|
ld c, a
|
|
.asm_218f4
|
|
ld d, c
|
|
ld a, c
|
|
add a
|
|
add c
|
|
ld c, a
|
|
ld b, $0
|
|
ld a, [wSfxHeaderPointer]
|
|
ld h, a
|
|
ld a, [wSfxHeaderPointer + 1]
|
|
ld l, a
|
|
add hl, bc
|
|
ld c, d
|
|
ld a, [hl]
|
|
and $f
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, wChannelSoundIDs
|
|
add hl, de
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .asm_21930
|
|
ld a, e
|
|
cp $7
|
|
jr nz, .asm_21927
|
|
ld a, [wSoundID]
|
|
cp $14
|
|
jr nc, .asm_21920
|
|
ret
|
|
.asm_21920
|
|
ld a, [hl]
|
|
cp $14
|
|
jr z, .asm_21930
|
|
jr c, .asm_21930
|
|
.asm_21927
|
|
ld a, [wSoundID]
|
|
cp [hl]
|
|
jr z, .asm_21930
|
|
jr c, .asm_21930
|
|
ret
|
|
.asm_21930
|
|
call Func_22c0
|
|
ld a, c
|
|
and a
|
|
jp z, Audio2_21940
|
|
dec c
|
|
jp .asm_218f4
|
|
|
|
Audio2_2193c: ; 2193c (8:593c)
|
|
call Func_22d6
|
|
ret
|
|
|
|
Audio2_21940: ; 21940 (8:5940)
|
|
ld a, [wSoundID]
|
|
ld l, a
|
|
ld e, a
|
|
ld h, $0
|
|
ld d, h
|
|
add hl, hl
|
|
add hl, de
|
|
ld de, SFX_Headers_2
|
|
add hl, de
|
|
ld e, l
|
|
ld d, h
|
|
ld hl, wChannelCommandPointers
|
|
ld a, [de] ; get channel number
|
|
ld b, a
|
|
rlca
|
|
rlca
|
|
and $3
|
|
ld c, a
|
|
ld a, b
|
|
and $f
|
|
ld b, c
|
|
inc b
|
|
inc de
|
|
ld c, $0
|
|
.asm_21962
|
|
cp c
|
|
jr z, .asm_2196a
|
|
inc c
|
|
inc hl
|
|
inc hl
|
|
jr .asm_21962
|
|
.asm_2196a
|
|
push af
|
|
push hl
|
|
push bc
|
|
ld b, $0
|
|
ld c, a
|
|
cp $3
|
|
jr c, .asm_2197a
|
|
ld hl, wChannelFlags1
|
|
add hl, bc
|
|
set 2, [hl]
|
|
.asm_2197a
|
|
pop bc
|
|
pop hl
|
|
ld a, [de] ; get channel pointer
|
|
ld [hli], a
|
|
inc de
|
|
ld a, [de]
|
|
ld [hli], a
|
|
inc de
|
|
pop af
|
|
push hl
|
|
push bc
|
|
ld b, $0
|
|
ld c, a
|
|
ld hl, wChannelSoundIDs
|
|
add hl, bc
|
|
ld a, [wSoundID]
|
|
ld [hl], a
|
|
pop bc
|
|
pop hl
|
|
inc c
|
|
dec b
|
|
ld a, b
|
|
and a
|
|
ld a, [de]
|
|
inc de
|
|
jr nz, .asm_21962
|
|
ld a, [wSoundID]
|
|
cp $14
|
|
jr nc, .asm_219a3
|
|
jr .asm_219cd
|
|
.asm_219a3
|
|
ld a, [wSoundID]
|
|
cp $86
|
|
jr z, .asm_219cd
|
|
jr c, .asm_219ae
|
|
jr .asm_219cd
|
|
.asm_219ae
|
|
ld hl, wChannelSoundIDs + CH4
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
ld [hl], a
|
|
ld hl, wChannelCommandPointers + CH6 * 2 ; sfx noise channel pointer
|
|
ld de, Noise2_endchannel
|
|
ld [hl], e
|
|
inc hl
|
|
ld [hl], d ; overwrite pointer to point to endchannel
|
|
ld a, [wSavedVolume]
|
|
and a
|
|
jr nz, .asm_219cd
|
|
ld a, [rNR50]
|
|
ld [wSavedVolume], a
|
|
ld a, $77
|
|
ld [rNR50], a
|
|
.asm_219cd
|
|
ret
|
|
|
|
Noise2_endchannel: ; 222d5 (8:62d5)
|
|
endchannel
|
|
|
|
Music_PokeFluteInBattle:: ; 219cf (8:59cf)
|
|
; begin playing the "caught mon" sound effect
|
|
ld a, SFX_CAUGHT_MON
|
|
call PlaySoundWaitForCurrent
|
|
; then immediately overwrtie the channel pointers
|
|
ld hl, wChannelCommandPointers + CH4 * 2
|
|
ld de, SFX_08_PokeFlute_Ch1
|
|
call Audio2_OverwriteChannelPointer
|
|
ld de, SFX_08_PokeFlute_Ch2
|
|
call Audio2_OverwriteChannelPointer
|
|
ld de, SFX_08_PokeFlute_Ch3
|
|
|
|
Audio2_OverwriteChannelPointer: ; 219e6 (8:59e6)
|
|
ld a, e
|
|
ld [hli], a
|
|
ld a, d
|
|
ld [hli], a
|
|
ret
|
|
|
|
INCLUDE "audio/sfx/pokeflute_ch1_ch2.asm"
|
|
|
|
Audio2_219f8:: ; 219f8 (8:59f8)
|
|
xor a
|
|
ld [wUnusedC000], a
|
|
ld [wDisableChannelOutputWhenSfxEnds], a
|
|
ld [wMusicTempo + 1], a
|
|
ld [wMusicWaveInstrument], a
|
|
ld [wSfxWaveInstrument], a
|
|
ld d, $8
|
|
ld hl, wChannelReturnAddresses
|
|
call FillAudioRAM2
|
|
ld hl, wChannelCommandPointers
|
|
call FillAudioRAM2
|
|
ld d, $4
|
|
ld hl, wChannelSoundIDs
|
|
call FillAudioRAM2
|
|
ld hl, wChannelFlags1
|
|
call FillAudioRAM2
|
|
ld hl, wChannelDuties
|
|
call FillAudioRAM2
|
|
ld hl, wChannelDutyCycles
|
|
call FillAudioRAM2
|
|
ld hl, wChannelVibratoDelayCounters
|
|
call FillAudioRAM2
|
|
ld hl, wChannelVibratoExtents
|
|
call FillAudioRAM2
|
|
ld hl, wChannelVibratoRates
|
|
call FillAudioRAM2
|
|
ld hl, wChannelFrequencyLowBytes
|
|
call FillAudioRAM2
|
|
ld hl, wChannelVibratoDelayCounterReloadValues
|
|
call FillAudioRAM2
|
|
ld hl, wChannelFlags2
|
|
call FillAudioRAM2
|
|
ld hl, wChannelPitchBendLengthModifiers
|
|
call FillAudioRAM2
|
|
ld hl, wChannelPitchBendFrequencySteps
|
|
call FillAudioRAM2
|
|
ld hl, wChannelPitchBendFrequencyStepsFractionalPart
|
|
call FillAudioRAM2
|
|
ld hl, wChannelPitchBendCurrentFrequencyFractionalPart
|
|
call FillAudioRAM2
|
|
ld hl, wChannelPitchBendCurrentFrequencyHighBytes
|
|
call FillAudioRAM2
|
|
ld hl, wChannelPitchBendCurrentFrequencyLowBytes
|
|
call FillAudioRAM2
|
|
ld hl, wChannelPitchBendTargetFrequencyHighBytes
|
|
call FillAudioRAM2
|
|
ld hl, wChannelPitchBendTargetFrequencyLowBytes
|
|
call FillAudioRAM2
|
|
ld a, $1
|
|
ld hl, wChannelLoopCounters
|
|
call FillAudioRAM2
|
|
ld hl, wChannelNoteDelayCounters
|
|
call FillAudioRAM2
|
|
ld hl, wChannelNoteSpeeds
|
|
call FillAudioRAM2
|
|
ld [wMusicTempo], a
|
|
ld a, $ff
|
|
ld [wStereoPanning], a
|
|
xor a
|
|
ld [rNR50], a
|
|
ld a, $8
|
|
ld [rNR10], a
|
|
ld a, $0
|
|
ld [rNR51], a
|
|
xor a
|
|
ld [rNR30], a
|
|
ld a, $80
|
|
ld [rNR30], a
|
|
ld a, $77
|
|
ld [rNR50], a
|
|
ret
|
|
|
|
Audio2_21ab7:: ; 21ab7 (8:5ab7)
|
|
xor a
|
|
push de
|
|
ld h, d
|
|
ld l, e
|
|
add hl, hl
|
|
ld d, h
|
|
ld e, l
|
|
ld hl, wChannelReturnAddresses
|
|
add hl, de
|
|
ld [hli], a
|
|
ld [hl], a
|
|
ld hl, wChannelCommandPointers
|
|
add hl, de
|
|
ld [hli], a
|
|
ld [hl], a
|
|
pop de
|
|
ld hl, wChannelSoundIDs
|
|
add hl, de
|
|
ld [hl], a
|
|
ld hl, wChannelFlags1
|
|
add hl, de
|
|
ld [hl], a
|
|
ld hl, wChannelDuties
|
|
add hl, de
|
|
ld [hl], a
|
|
ld hl, wChannelDutyCycles
|
|
add hl, de
|
|
ld [hl], a
|
|
ld hl, wChannelVibratoDelayCounters
|
|
add hl, de
|
|
ld [hl], a
|
|
ld hl, wChannelVibratoExtents
|
|
add hl, de
|
|
ld [hl], a
|
|
ld hl, wChannelVibratoRates
|
|
add hl, de
|
|
ld [hl], a
|
|
ld hl, wChannelFrequencyLowBytes
|
|
add hl, de
|
|
ld [hl], a
|
|
ld hl, wChannelVibratoDelayCounterReloadValues
|
|
add hl, de
|
|
ld [hl], a
|
|
ld hl, wChannelPitchBendLengthModifiers
|
|
add hl, de
|
|
ld [hl], a
|
|
ld hl, wChannelPitchBendFrequencySteps
|
|
add hl, de
|
|
ld [hl], a
|
|
ld hl, wChannelPitchBendFrequencyStepsFractionalPart
|
|
add hl, de
|
|
ld [hl], a
|
|
ld hl, wChannelPitchBendCurrentFrequencyFractionalPart
|
|
add hl, de
|
|
ld [hl], a
|
|
ld hl, wChannelPitchBendCurrentFrequencyHighBytes
|
|
add hl, de
|
|
ld [hl], a
|
|
ld hl, wChannelPitchBendCurrentFrequencyLowBytes
|
|
add hl, de
|
|
ld [hl], a
|
|
ld hl, wChannelPitchBendTargetFrequencyHighBytes
|
|
add hl, de
|
|
ld [hl], a
|
|
ld hl, wChannelPitchBendTargetFrequencyLowBytes
|
|
add hl, de
|
|
ld [hl], a
|
|
ld hl, wChannelFlags2
|
|
add hl, de
|
|
ld [hl], a
|
|
ld a, $1
|
|
ld hl, wChannelLoopCounters
|
|
add hl, de
|
|
ld [hl], a
|
|
ld hl, wChannelNoteDelayCounters
|
|
add hl, de
|
|
ld [hl], a
|
|
ld hl, wChannelNoteSpeeds
|
|
add hl, de
|
|
ld [hl], a
|
|
ld a, e
|
|
cp $4
|
|
ret nz
|
|
ld a, $8
|
|
ld [rNR10], a
|
|
ret
|
|
|
|
Audio2_21b3f:: ; 21b3f (8:5b3f)
|
|
ld a, $80
|
|
ld [rNR52], a
|
|
ld [rNR30], a
|
|
xor a
|
|
ld [rNR51], a
|
|
ld [rNR32], a
|
|
ld a, $8
|
|
ld [rNR10], a
|
|
ld [rNR12], a
|
|
ld [rNR22], a
|
|
ld [rNR42], a
|
|
ld a, $40
|
|
ld [rNR14], a
|
|
ld [rNR24], a
|
|
ld [rNR44], a
|
|
ld a, $77
|
|
ld [rNR50], a
|
|
xor a
|
|
ld [wUnusedC000], a
|
|
ld [wDisableChannelOutputWhenSfxEnds], a
|
|
ld [wMuteAudioAndPauseMusic], a
|
|
ld [wMusicTempo + 1], a
|
|
ld [wSfxTempo + 1], a
|
|
ld [wMusicWaveInstrument], a
|
|
ld [wSfxWaveInstrument], a
|
|
ld d, $b0
|
|
ld hl, wChannelCommandPointers
|
|
call FillAudioRAM2
|
|
ld a, $1
|
|
ld d, $18
|
|
ld hl, wChannelNoteDelayCounters
|
|
call FillAudioRAM2
|
|
ld [wMusicTempo], a
|
|
ld [wSfxTempo], a
|
|
ld a, $ff
|
|
ld [wStereoPanning], a
|
|
ret
|
|
|
|
FillAudioRAM2: ; 21b94 (8:5b94)
|
|
ld b, d
|
|
.loop
|
|
ld [hli], a
|
|
dec b
|
|
jr nz, .loop
|
|
ret |