mirror of
https://github.com/pret/pokered.git
synced 2024-10-22 22:55:31 +00:00
Merge pull request #256 from Rangi42/master
Add subdirectories to engine/ similar to pokecrystal
This commit is contained in:
commit
c85050497c
125 changed files with 349 additions and 343 deletions
231
audio.asm
231
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
|
||||
SECTION "Low Health Alarm (Audio Engine 2)", ROMX
|
||||
|
||||
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
|
||||
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"
|
||||
|
||||
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"
|
||||
|
||||
|
|
50
audio/alternate_tempo.asm
Normal file
50
audio/alternate_tempo.asm
Normal file
|
@ -0,0 +1,50 @@
|
|||
; 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
|
75
audio/low_health_alarm.asm
Normal file
75
audio/low_health_alarm.asm
Normal file
|
@ -0,0 +1,75 @@
|
|||
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
|
|
@ -1,3 +1,5 @@
|
|||
; This file is INCLUDEd three times, once in each audio engine.
|
||||
|
||||
dw $F82C ; C_
|
||||
dw $F89D ; C#
|
||||
dw $F907 ; D_
|
||||
|
|
34
audio/play_battle_music.asm
Normal file
34
audio/play_battle_music.asm
Normal file
|
@ -0,0 +1,34 @@
|
|||
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
|
18
audio/poke_flute.asm
Normal file
18
audio/poke_flute.asm
Normal file
|
@ -0,0 +1,18 @@
|
|||
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
|
36
audio/pokedex_rating_sfx.asm
Normal file
36
audio/pokedex_rating_sfx.asm
Normal file
|
@ -0,0 +1,36 @@
|
|||
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
|
|
@ -1,3 +1,5 @@
|
|||
; This file is INCLUDEd three times, once for each audio engine.
|
||||
|
||||
dw .wave0
|
||||
dw .wave1
|
||||
dw .wave2
|
||||
|
|
7
data/hm_moves.asm
Normal file
7
data/hm_moves.asm
Normal file
|
@ -0,0 +1,7 @@
|
|||
HMMoveArray:
|
||||
db CUT
|
||||
db FLY
|
||||
db SURF
|
||||
db STRENGTH
|
||||
db FLASH
|
||||
db -1
|
|
@ -279,7 +279,7 @@ INCLUDE "data/trainer_pic_money_pointers.asm"
|
|||
|
||||
INCLUDE "text/trainer_names.asm"
|
||||
|
||||
INCLUDE "engine/battle/bank_e_misc.asm"
|
||||
INCLUDE "engine/battle/misc.asm"
|
||||
|
||||
INCLUDE "engine/battle/read_trainer_party.asm"
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue