summaryrefslogtreecommitdiff
path: root/audio.asm
diff options
context:
space:
mode:
Diffstat (limited to 'audio.asm')
-rw-r--r--audio.asm233
1 files changed, 7 insertions, 226 deletions
diff --git a/audio.asm b/audio.asm
index 9675c98a..94d63f25 100644
--- a/audio.asm
+++ b/audio.asm
@@ -352,248 +352,30 @@ INCLUDE "audio/sfx/cry21_3.asm"
INCLUDE "audio/sfx/cry22_3.asm"
-
SECTION "Audio Engine 1", ROMX
-PlayBattleMusic::
- xor a
- ld [wAudioFadeOutControl], a
- ld [wLowHealthAlarm], a
- dec a
- ld [wNewSoundID], a
- call PlaySound ; stop music
- call DelayFrame
- ld c, BANK(Music_GymLeaderBattle)
- ld a, [wGymLeaderNo]
- and a
- jr z, .notGymLeaderBattle
- ld a, MUSIC_GYM_LEADER_BATTLE
- jr .playSong
-.notGymLeaderBattle
- ld a, [wCurOpponent]
- cp OPP_ID_OFFSET
- jr c, .wildBattle
- cp OPP_SONY3
- jr z, .finalBattle
- cp OPP_LANCE
- jr nz, .normalTrainerBattle
- ld a, MUSIC_GYM_LEADER_BATTLE ; lance also plays gym leader theme
- jr .playSong
-.normalTrainerBattle
- ld a, MUSIC_TRAINER_BATTLE
- jr .playSong
-.finalBattle
- ld a, MUSIC_FINAL_BATTLE
- jr .playSong
-.wildBattle
- ld a, MUSIC_WILD_BATTLE
-.playSong
- jp PlayMusic
-
-
+INCLUDE "audio/play_battle_music.asm"
INCLUDE "audio/engine_1.asm"
+INCLUDE "audio/alternate_tempo.asm"
-; an alternate start for MeetRival which has a different first measure
-Music_RivalAlternateStart::
- ld c, BANK(Music_MeetRival)
- ld a, MUSIC_MEET_RIVAL
- call PlayMusic
- ld hl, wChannelCommandPointers
- ld de, Music_MeetRival_branch_b1a2
- call Audio1_OverwriteChannelPointer
- ld de, Music_MeetRival_branch_b21d
- call Audio1_OverwriteChannelPointer
- ld de, Music_MeetRival_branch_b2b5
-
-Audio1_OverwriteChannelPointer:
- ld a, e
- ld [hli], a
- ld a, d
- ld [hli], a
- ret
-
-; an alternate tempo for MeetRival which is slightly slower
-Music_RivalAlternateTempo::
- ld c, BANK(Music_MeetRival)
- ld a, MUSIC_MEET_RIVAL
- call PlayMusic
- ld hl, wChannelCommandPointers
- ld de, Music_MeetRival_branch_b119
- jp Audio1_OverwriteChannelPointer
-
-; applies both the alternate start and alternate tempo
-Music_RivalAlternateStartAndTempo::
- call Music_RivalAlternateStart
- ld hl, wChannelCommandPointers
- ld de, Music_MeetRival_branch_b19b
- jp Audio1_OverwriteChannelPointer
-
-; an alternate tempo for Cities1 which is used for the Hall of Fame room
-Music_Cities1AlternateTempo::
- ld a, 10
- ld [wAudioFadeOutCounterReloadValue], a
- ld [wAudioFadeOutCounter], a
- ld a, $ff ; stop playing music after the fade-out is finished
- ld [wAudioFadeOutControl], a
- ld c, 100
- call DelayFrames ; wait for the fade-out to finish
- ld c, BANK(Music_Cities1)
- ld a, MUSIC_CITIES1
- call PlayMusic
- ld hl, wChannelCommandPointers
- ld de, Music_Cities1_branch_aa6f
- jp Audio1_OverwriteChannelPointer
+SECTION "Low Health Alarm (Audio Engine 2)", ROMX
+INCLUDE "audio/low_health_alarm.asm"
-SECTION "Audio Engine 2", ROMX
-Music_DoLowHealthAlarm::
- ld a, [wLowHealthAlarm]
- cp $ff
- jr z, .disableAlarm
-
- bit 7, a ;alarm enabled?
- ret z ;nope
-
- and $7f ;low 7 bits are the timer.
- jr nz, .asm_21383 ;if timer > 0, play low tone.
-
- call .playToneHi
- ld a, 30 ;keep this tone for 30 frames.
- jr .asm_21395 ;reset the timer.
-
-.asm_21383
- cp 20
- jr nz, .asm_2138a ;if timer == 20,
- call .playToneLo ;actually set the sound registers.
-
-.asm_2138a
- ld a, $86
- ld [wChannelSoundIDs + Ch5], a ;disable sound channel?
- ld a, [wLowHealthAlarm]
- and $7f ;decrement alarm timer.
- dec a
-
-.asm_21395
- ; reset the timer and enable flag.
- set 7, a
- ld [wLowHealthAlarm], a
- ret
-
-.disableAlarm
- xor a
- ld [wLowHealthAlarm], a ;disable alarm
- ld [wChannelSoundIDs + Ch5], a ;re-enable sound channel?
- ld de, .toneDataSilence
- jr .playTone
-
-;update the sound registers to change the frequency.
-;the tone set here stays until we change it.
-.playToneHi
- ld de, .toneDataHi
- jr .playTone
-
-.playToneLo
- ld de, .toneDataLo
-
-;update sound channel 1 to play the alarm, overriding all other sounds.
-.playTone
- ld hl, rNR10 ;channel 1 sound register
- ld c, $5
- xor a
-
-.copyLoop
- ld [hli], a
- ld a, [de]
- inc de
- dec c
- jr nz, .copyLoop
- ret
-
-;bytes to write to sound channel 1 registers for health alarm.
-;starting at FF11 (FF10 is always zeroed), so these bytes are:
-;length, envelope, freq lo, freq hi
-.toneDataHi
- db $A0,$E2,$50,$87
-
-.toneDataLo
- db $B0,$E2,$EE,$86
-
-;written to stop the alarm
-.toneDataSilence
- db $00,$00,$00,$80
-
-
-INCLUDE "engine/menu/bills_pc.asm"
+SECTION "Audio Engine 2", ROMX
INCLUDE "audio/engine_2.asm"
-
-
-Music_PokeFluteInBattle::
- ; begin playing the "caught mon" sound effect
- ld a, SFX_CAUGHT_MON
- call PlaySoundWaitForCurrent
- ; then immediately overwrite the channel pointers
- ld hl, wChannelCommandPointers + Ch5 * 2
- ld de, SFX_Pokeflute_Ch5
- call Audio2_OverwriteChannelPointer
- ld de, SFX_Pokeflute_Ch6
- call Audio2_OverwriteChannelPointer
- ld de, SFX_Pokeflute_Ch7
-
-Audio2_OverwriteChannelPointer:
- ld a, e
- ld [hli], a
- ld a, d
- ld [hli], a
- ret
+INCLUDE "audio/poke_flute.asm"
SECTION "Audio Engine 3", ROMX
-PlayPokedexRatingSfx::
- ld a, [$ffdc]
- ld c, $0
- ld hl, OwnedMonValues
-.getSfxPointer
- cp [hl]
- jr c, .gotSfxPointer
- inc c
- inc hl
- jr .getSfxPointer
-.gotSfxPointer
- push bc
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySoundWaitForCurrent
- pop bc
- ld b, $0
- ld hl, PokedexRatingSfxPointers
- add hl, bc
- add hl, bc
- ld a, [hli]
- ld c, [hl]
- call PlayMusic
- jp PlayDefaultMusic
-
-PokedexRatingSfxPointers:
- db SFX_DENIED, BANK(SFX_Denied_3)
- db SFX_POKEDEX_RATING, BANK(SFX_Pokedex_Rating_1)
- db SFX_GET_ITEM_1, BANK(SFX_Get_Item1_1)
- db SFX_CAUGHT_MON, BANK(SFX_Caught_Mon)
- db SFX_LEVEL_UP, BANK(SFX_Level_Up)
- db SFX_GET_KEY_ITEM, BANK(SFX_Get_Key_Item_1)
- db SFX_GET_ITEM_2, BANK(SFX_Get_Item2_1)
-
-OwnedMonValues:
- db 10, 40, 60, 90, 120, 150, $ff
-
-
+INCLUDE "audio/pokedex_rating_sfx.asm"
INCLUDE "audio/engine_3.asm"
-
SECTION "Music 1", ROMX
INCLUDE "audio/music/pkmnhealed.asm"
@@ -663,4 +445,3 @@ INCLUDE "audio/music/surfing.asm"
INCLUDE "audio/music/jigglypuffsong.asm"
INCLUDE "audio/music/halloffame.asm"
INCLUDE "audio/music/credits.asm"
-