summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRangi <35663410+Rangi42@users.noreply.github.com>2020-07-03 09:38:52 -0400
committerGitHub <noreply@github.com>2020-07-03 09:38:52 -0400
commitc85050497c1bd062e9cd40bf5b32fa3beca366cc (patch)
tree9593ddd3ab820223ab580d5fc0ae133b485b8315
parent5559d51c863b6fb529ea0494d857950a36fe85b7 (diff)
parent87ef75c173b5d5f227912860487600b6f53d1d1f (diff)
Merge pull request #256 from Rangi42/master
Add subdirectories to engine/ similar to pokecrystal
-rw-r--r--audio.asm233
-rw-r--r--audio/alternate_tempo.asm50
-rw-r--r--audio/low_health_alarm.asm75
-rw-r--r--audio/notes.asm2
-rw-r--r--audio/play_battle_music.asm34
-rw-r--r--audio/poke_flute.asm18
-rw-r--r--audio/pokedex_rating_sfx.asm36
-rw-r--r--audio/wave_instruments.asm2
-rw-r--r--data/hm_moves.asm7
-rwxr-xr-xengine/battle/misc.asm (renamed from engine/battle/bank_e_misc.asm)0
-rw-r--r--engine/battle/move_effects/conversion.asm (renamed from engine/battle/moveEffects/conversion_effect.asm)0
-rw-r--r--engine/battle/move_effects/drain_hp.asm (renamed from engine/battle/moveEffects/drain_hp_effect.asm)0
-rw-r--r--engine/battle/move_effects/focus_energy.asm (renamed from engine/battle/moveEffects/focus_energy_effect.asm)0
-rw-r--r--engine/battle/move_effects/haze.asm (renamed from engine/battle/moveEffects/haze_effect.asm)0
-rw-r--r--engine/battle/move_effects/heal.asm (renamed from engine/battle/moveEffects/heal_effect.asm)0
-rw-r--r--engine/battle/move_effects/leech_seed.asm (renamed from engine/battle/moveEffects/leech_seed_effect.asm)0
-rw-r--r--engine/battle/move_effects/mist.asm (renamed from engine/battle/moveEffects/mist_effect.asm)0
-rw-r--r--engine/battle/move_effects/one_hit_ko.asm (renamed from engine/battle/moveEffects/one_hit_ko_effect.asm)0
-rw-r--r--engine/battle/move_effects/paralyze.asm (renamed from engine/battle/moveEffects/paralyze_effect.asm)0
-rw-r--r--engine/battle/move_effects/pay_day.asm (renamed from engine/battle/moveEffects/pay_day_effect.asm)0
-rw-r--r--engine/battle/move_effects/recoil.asm (renamed from engine/battle/moveEffects/recoil_effect.asm)0
-rw-r--r--engine/battle/move_effects/reflect_light_screen.asm (renamed from engine/battle/moveEffects/reflect_light_screen_effect.asm)0
-rw-r--r--engine/battle/move_effects/substitute.asm (renamed from engine/battle/moveEffects/substitute_effect.asm)0
-rw-r--r--engine/battle/move_effects/transform.asm (renamed from engine/battle/moveEffects/transform_effect.asm)0
-rw-r--r--engine/battle/trainer_ai.asm2
-rw-r--r--engine/debug/debug_party.asm (renamed from engine/debug1.asm)0
-rw-r--r--engine/debug/test_battle.asm (renamed from engine/test_battle.asm)0
-rw-r--r--engine/events/black_out.asm (renamed from engine/black_out.asm)0
-rwxr-xr-xengine/events/card_key.asm (renamed from engine/overworld/card_key.asm)0
-rwxr-xr-xengine/events/cinnabar_lab.asm (renamed from engine/overworld/cinnabar_lab.asm)0
-rwxr-xr-xengine/events/diploma.asm (renamed from engine/menu/diploma.asm)0
-rw-r--r--engine/events/display_pokedex.asm (renamed from engine/display_pokedex.asm)0
-rwxr-xr-xengine/events/elevator.asm (renamed from engine/predefs7.asm)0
-rwxr-xr-xengine/events/evolve_trade.asm (renamed from engine/evolve_trade.asm)0
-rwxr-xr-xengine/events/give_pokemon.asm (renamed from engine/give_pokemon.asm)0
-rw-r--r--engine/events/heal_party.asm (renamed from engine/heal_party.asm)0
-rwxr-xr-xengine/events/hidden_items.asm (renamed from engine/overworld/hidden_items.asm)0
-rwxr-xr-xengine/events/hidden_object_functions14.asm (renamed from engine/hidden_object_functions14.asm)0
-rwxr-xr-xengine/events/hidden_object_functions17.asm (renamed from engine/hidden_object_functions17.asm)0
-rwxr-xr-xengine/events/hidden_object_functions18.asm (renamed from engine/hidden_object_functions18.asm)0
-rwxr-xr-xengine/events/hidden_object_functions3.asm (renamed from engine/hidden_object_functions3.asm)0
-rwxr-xr-xengine/events/hidden_object_functions7.asm (renamed from engine/hidden_object_functions7.asm)0
-rwxr-xr-xengine/events/in_game_trades.asm (renamed from engine/in_game_trades.asm)0
-rwxr-xr-xengine/events/oaks_aide.asm (renamed from engine/overworld/oaks_aide.asm)0
-rwxr-xr-xengine/events/pewter_guys.asm (renamed from engine/overworld/pewter_guys.asm)0
-rw-r--r--engine/events/pick_up_item.asm (renamed from engine/overworld/item.asm)0
-rw-r--r--engine/events/poison.asm (renamed from engine/overworld/poison.asm)0
-rwxr-xr-xengine/events/pokecenter.asm (renamed from engine/overworld/pokecenter.asm)0
-rwxr-xr-xengine/events/pokedex_rating.asm (renamed from engine/pokedex_rating.asm)0
-rwxr-xr-xengine/events/pokemart.asm (renamed from engine/overworld/pokemart.asm)0
-rwxr-xr-xengine/events/prize_menu.asm (renamed from engine/menu/prize_menu.asm)0
-rwxr-xr-xengine/events/saffron_guards.asm (renamed from engine/overworld/saffron_guards.asm)0
-rw-r--r--engine/events/set_blackout_map.asm (renamed from engine/overworld/set_blackout_map.asm)0
-rwxr-xr-xengine/events/starter_dex.asm (renamed from engine/predefs17.asm)0
-rwxr-xr-xengine/events/vending_machine.asm (renamed from engine/menu/vending_machine.asm)0
-rwxr-xr-xengine/gfx/hp_bar.asm (renamed from engine/hp_bar.asm)0
-rwxr-xr-xengine/gfx/load_pokedex_tiles.asm (renamed from engine/load_pokedex_tiles.asm)0
-rwxr-xr-xengine/gfx/mon_icons.asm (renamed from engine/mon_party_sprites.asm)0
-rw-r--r--engine/gfx/oam_dma.asm (renamed from engine/oam_dma.asm)0
-rwxr-xr-xengine/gfx/palettes.asm (renamed from engine/palettes.asm)0
-rwxr-xr-xengine/gfx/screen_effects.asm (renamed from engine/predefs12.asm)0
-rw-r--r--engine/gfx/sprite_oam.asm (renamed from engine/overworld/oam.asm)0
-rw-r--r--engine/items/get_bag_item_quantity.asm (renamed from engine/get_bag_item_quantity.asm)0
-rwxr-xr-xengine/items/item_effects.asm (renamed from engine/items/items.asm)0
-rw-r--r--engine/items/subtract_paid_money.asm (renamed from engine/subtract_paid_money.asm)0
-rwxr-xr-xengine/items/town_map.asm (renamed from engine/town_map.asm)0
-rwxr-xr-xengine/link/cable_club.asm (renamed from engine/cable_club.asm)0
-rwxr-xr-xengine/link/cable_club_npc.asm (renamed from engine/overworld/cable_club_npc.asm)0
-rw-r--r--engine/link/print_waiting_text.asm (renamed from engine/print_waiting_text.asm)0
-rw-r--r--engine/math/bcd.asm (renamed from engine/bcd.asm)0
-rwxr-xr-xengine/math/multiply_divide.asm (renamed from engine/multiply_divide.asm)0
-rwxr-xr-xengine/math/random.asm (renamed from engine/random.asm)0
-rw-r--r--engine/menus/display_text_id_init.asm (renamed from engine/display_text_id_init.asm)0
-rw-r--r--engine/menus/draw_badges.asm (renamed from engine/menu/draw_badges.asm)0
-rw-r--r--engine/menus/draw_start_menu.asm (renamed from engine/menu/draw_start_menu.asm)0
-rwxr-xr-xengine/menus/league_pc.asm (renamed from engine/menu/league_pc.asm)0
-rwxr-xr-xengine/menus/main_menu.asm (renamed from engine/menu/main_menu.asm)0
-rwxr-xr-xengine/menus/naming_screen.asm (renamed from engine/menu/naming_screen.asm)0
-rwxr-xr-xengine/menus/oaks_pc.asm (renamed from engine/menu/oaks_pc.asm)0
-rwxr-xr-xengine/menus/party_menu.asm (renamed from engine/menu/party_menu.asm)0
-rwxr-xr-xengine/menus/pc.asm (renamed from engine/menu/pc.asm)0
-rwxr-xr-xengine/menus/players_pc.asm (renamed from engine/menu/players_pc.asm)0
-rwxr-xr-xengine/menus/pokedex.asm (renamed from engine/menu/pokedex.asm)0
-rwxr-xr-xengine/menus/save.asm (renamed from engine/save.asm)0
-rwxr-xr-xengine/menus/start_sub_menus.asm (renamed from engine/menu/start_sub_menus.asm)0
-rw-r--r--engine/menus/swap_items.asm (renamed from engine/menu/swap_items.asm)0
-rw-r--r--engine/menus/text_box.asm (renamed from engine/menu/text_box.asm)0
-rwxr-xr-xengine/movie/credits.asm (renamed from engine/HoF_room_pc.asm)0
-rwxr-xr-xengine/movie/evolution.asm (renamed from engine/evolution.asm)0
-rwxr-xr-xengine/movie/gamefreak.asm (renamed from engine/gamefreak.asm)0
-rwxr-xr-xengine/movie/hall_of_fame.asm (renamed from engine/hall_of_fame.asm)0
-rwxr-xr-xengine/movie/intro.asm (renamed from engine/intro.asm)0
-rwxr-xr-xengine/movie/oak_speech/clear_save.asm (renamed from engine/clear_save.asm)0
-rw-r--r--engine/movie/oak_speech/init_player_data.asm (renamed from engine/init_player_data.asm)0
-rwxr-xr-xengine/movie/oak_speech/oak_speech.asm (renamed from engine/oak_speech.asm)0
-rwxr-xr-xengine/movie/oak_speech/oak_speech2.asm (renamed from engine/oak_speech2.asm)0
-rwxr-xr-xengine/movie/titlescreen.asm (renamed from engine/titlescreen.asm)0
-rwxr-xr-xengine/movie/titlescreen2.asm (renamed from engine/titlescreen2.asm)0
-rwxr-xr-xengine/movie/trade.asm (renamed from engine/trade.asm)0
-rwxr-xr-xengine/movie/trade2.asm (renamed from engine/trade2.asm)0
-rwxr-xr-xengine/overworld/auto_movement.asm (renamed from engine/overworld/npc_movement.asm)0
-rwxr-xr-xengine/overworld/dust_smoke.asm (renamed from engine/overworld/ssanne.asm)0
-rw-r--r--engine/overworld/pathfinding.asm (renamed from engine/pathfinding.asm)0
-rw-r--r--engine/overworld/special_warps.asm (renamed from engine/special_warps.asm)0
-rw-r--r--engine/overworld/sprite_collisions.asm (renamed from engine/overworld/map_sprite_functions1.asm)0
-rw-r--r--engine/overworld/tilesets.asm (renamed from engine/overworld/tileset_header.asm)0
-rwxr-xr-xengine/overworld/trainer_sight.asm (renamed from engine/overworld/trainers.asm)0
-rwxr-xr-xengine/overworld/turn_sprite.asm (renamed from engine/turn_sprite.asm)0
-rw-r--r--engine/pokemon/add_mon.asm (renamed from engine/add_mon.asm)0
-rw-r--r--engine/pokemon/bills_pc.asm (renamed from engine/menu/bills_pc.asm)8
-rwxr-xr-xengine/pokemon/evos_moves.asm (renamed from engine/evos_moves.asm)0
-rwxr-xr-xengine/pokemon/experience.asm (renamed from engine/experience.asm)0
-rwxr-xr-xengine/pokemon/learn_move.asm (renamed from engine/learn_move.asm)0
-rw-r--r--engine/pokemon/load_mon_data.asm (renamed from engine/load_mon_data.asm)0
-rw-r--r--engine/pokemon/remove_mon.asm (renamed from engine/remove_pokemon.asm)0
-rwxr-xr-xengine/pokemon/set_types.asm (renamed from engine/predefs17_2.asm)0
-rwxr-xr-xengine/pokemon/status_ailments.asm (renamed from engine/status_ailments.asm)0
-rwxr-xr-xengine/pokemon/status_screen.asm (renamed from engine/menu/status_screen.asm)0
-rwxr-xr-xengine/slots/game_corner_slots.asm (renamed from engine/game_corner_slots.asm)0
-rwxr-xr-xengine/slots/game_corner_slots2.asm (renamed from engine/game_corner_slots2.asm)0
-rwxr-xr-xengine/slots/slot_machine.asm (renamed from engine/slot_machine.asm)0
-rw-r--r--home.asm2
-rwxr-xr-xhome/start_menu.asm (renamed from engine/menu/start_menu.asm)0
-rw-r--r--layout.link2
-rwxr-xr-xmain.asm223
125 files changed, 350 insertions, 344 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"
-
diff --git a/audio/alternate_tempo.asm b/audio/alternate_tempo.asm
new file mode 100644
index 00000000..6c2cdc49
--- /dev/null
+++ b/audio/alternate_tempo.asm
@@ -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
diff --git a/audio/low_health_alarm.asm b/audio/low_health_alarm.asm
new file mode 100644
index 00000000..514db55f
--- /dev/null
+++ b/audio/low_health_alarm.asm
@@ -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
diff --git a/audio/notes.asm b/audio/notes.asm
index 025eb6a8..75e1a0b7 100644
--- a/audio/notes.asm
+++ b/audio/notes.asm
@@ -1,3 +1,5 @@
+; This file is INCLUDEd three times, once in each audio engine.
+
dw $F82C ; C_
dw $F89D ; C#
dw $F907 ; D_
diff --git a/audio/play_battle_music.asm b/audio/play_battle_music.asm
new file mode 100644
index 00000000..35dd19ad
--- /dev/null
+++ b/audio/play_battle_music.asm
@@ -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
diff --git a/audio/poke_flute.asm b/audio/poke_flute.asm
new file mode 100644
index 00000000..f55a2a1f
--- /dev/null
+++ b/audio/poke_flute.asm
@@ -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
diff --git a/audio/pokedex_rating_sfx.asm b/audio/pokedex_rating_sfx.asm
new file mode 100644
index 00000000..a218d5e6
--- /dev/null
+++ b/audio/pokedex_rating_sfx.asm
@@ -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
diff --git a/audio/wave_instruments.asm b/audio/wave_instruments.asm
index fede06af..c915f18a 100644
--- a/audio/wave_instruments.asm
+++ b/audio/wave_instruments.asm
@@ -1,3 +1,5 @@
+; This file is INCLUDEd three times, once for each audio engine.
+
dw .wave0
dw .wave1
dw .wave2
diff --git a/data/hm_moves.asm b/data/hm_moves.asm
new file mode 100644
index 00000000..d72eddfe
--- /dev/null
+++ b/data/hm_moves.asm
@@ -0,0 +1,7 @@
+HMMoveArray:
+ db CUT
+ db FLY
+ db SURF
+ db STRENGTH
+ db FLASH
+ db -1
diff --git a/engine/battle/bank_e_misc.asm b/engine/battle/misc.asm
index 33af6f6f..33af6f6f 100755
--- a/engine/battle/bank_e_misc.asm
+++ b/engine/battle/misc.asm
diff --git a/engine/battle/moveEffects/conversion_effect.asm b/engine/battle/move_effects/conversion.asm
index f23c3d70..f23c3d70 100644
--- a/engine/battle/moveEffects/conversion_effect.asm
+++ b/engine/battle/move_effects/conversion.asm
diff --git a/engine/battle/moveEffects/drain_hp_effect.asm b/engine/battle/move_effects/drain_hp.asm
index e5f4681a..e5f4681a 100644
--- a/engine/battle/moveEffects/drain_hp_effect.asm
+++ b/engine/battle/move_effects/drain_hp.asm
diff --git a/engine/battle/moveEffects/focus_energy_effect.asm b/engine/battle/move_effects/focus_energy.asm
index 16dad7bb..16dad7bb 100644
--- a/engine/battle/moveEffects/focus_energy_effect.asm
+++ b/engine/battle/move_effects/focus_energy.asm
diff --git a/engine/battle/moveEffects/haze_effect.asm b/engine/battle/move_effects/haze.asm
index 47723ba2..47723ba2 100644
--- a/engine/battle/moveEffects/haze_effect.asm
+++ b/engine/battle/move_effects/haze.asm
diff --git a/engine/battle/moveEffects/heal_effect.asm b/engine/battle/move_effects/heal.asm
index 2e68acc0..2e68acc0 100644
--- a/engine/battle/moveEffects/heal_effect.asm
+++ b/engine/battle/move_effects/heal.asm
diff --git a/engine/battle/moveEffects/leech_seed_effect.asm b/engine/battle/move_effects/leech_seed.asm
index f4d3ee9c..f4d3ee9c 100644
--- a/engine/battle/moveEffects/leech_seed_effect.asm
+++ b/engine/battle/move_effects/leech_seed.asm
diff --git a/engine/battle/moveEffects/mist_effect.asm b/engine/battle/move_effects/mist.asm
index 65070a3e..65070a3e 100644
--- a/engine/battle/moveEffects/mist_effect.asm
+++ b/engine/battle/move_effects/mist.asm
diff --git a/engine/battle/moveEffects/one_hit_ko_effect.asm b/engine/battle/move_effects/one_hit_ko.asm
index 827e2197..827e2197 100644
--- a/engine/battle/moveEffects/one_hit_ko_effect.asm
+++ b/engine/battle/move_effects/one_hit_ko.asm
diff --git a/engine/battle/moveEffects/paralyze_effect.asm b/engine/battle/move_effects/paralyze.asm
index 95979ae6..95979ae6 100644
--- a/engine/battle/moveEffects/paralyze_effect.asm
+++ b/engine/battle/move_effects/paralyze.asm
diff --git a/engine/battle/moveEffects/pay_day_effect.asm b/engine/battle/move_effects/pay_day.asm
index e5daf014..e5daf014 100644
--- a/engine/battle/moveEffects/pay_day_effect.asm
+++ b/engine/battle/move_effects/pay_day.asm
diff --git a/engine/battle/moveEffects/recoil_effect.asm b/engine/battle/move_effects/recoil.asm
index 0f2f087b..0f2f087b 100644
--- a/engine/battle/moveEffects/recoil_effect.asm
+++ b/engine/battle/move_effects/recoil.asm
diff --git a/engine/battle/moveEffects/reflect_light_screen_effect.asm b/engine/battle/move_effects/reflect_light_screen.asm
index 2805a969..2805a969 100644
--- a/engine/battle/moveEffects/reflect_light_screen_effect.asm
+++ b/engine/battle/move_effects/reflect_light_screen.asm
diff --git a/engine/battle/moveEffects/substitute_effect.asm b/engine/battle/move_effects/substitute.asm
index 1bb6c887..1bb6c887 100644
--- a/engine/battle/moveEffects/substitute_effect.asm
+++ b/engine/battle/move_effects/substitute.asm
diff --git a/engine/battle/moveEffects/transform_effect.asm b/engine/battle/move_effects/transform.asm
index 9a5de9cc..9a5de9cc 100644
--- a/engine/battle/moveEffects/transform_effect.asm
+++ b/engine/battle/move_effects/transform.asm
diff --git a/engine/battle/trainer_ai.asm b/engine/battle/trainer_ai.asm
index 7755b50f..2850b9c2 100644
--- a/engine/battle/trainer_ai.asm
+++ b/engine/battle/trainer_ai.asm
@@ -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"
diff --git a/engine/debug1.asm b/engine/debug/debug_party.asm
index a5eb7dde..a5eb7dde 100644
--- a/engine/debug1.asm
+++ b/engine/debug/debug_party.asm
diff --git a/engine/test_battle.asm b/engine/debug/test_battle.asm
index d9dcf1fa..d9dcf1fa 100644
--- a/engine/test_battle.asm
+++ b/engine/debug/test_battle.asm
diff --git a/engine/black_out.asm b/engine/events/black_out.asm
index 6c358ce3..6c358ce3 100644
--- a/engine/black_out.asm
+++ b/engine/events/black_out.asm
diff --git a/engine/overworld/card_key.asm b/engine/events/card_key.asm
index c77d5fcd..c77d5fcd 100755
--- a/engine/overworld/card_key.asm
+++ b/engine/events/card_key.asm
diff --git a/engine/overworld/cinnabar_lab.asm b/engine/events/cinnabar_lab.asm
index e642840d..e642840d 100755
--- a/engine/overworld/cinnabar_lab.asm
+++ b/engine/events/cinnabar_lab.asm
diff --git a/engine/menu/diploma.asm b/engine/events/diploma.asm
index e53ef58f..e53ef58f 100755
--- a/engine/menu/diploma.asm
+++ b/engine/events/diploma.asm
diff --git a/engine/display_pokedex.asm b/engine/events/display_pokedex.asm
index d657ea85..d657ea85 100644
--- a/engine/display_pokedex.asm
+++ b/engine/events/display_pokedex.asm
diff --git a/engine/predefs7.asm b/engine/events/elevator.asm
index 752bdd1a..752bdd1a 100755
--- a/engine/predefs7.asm
+++ b/engine/events/elevator.asm
diff --git a/engine/evolve_trade.asm b/engine/events/evolve_trade.asm
index e17fc05c..e17fc05c 100755
--- a/engine/evolve_trade.asm
+++ b/engine/events/evolve_trade.asm
diff --git a/engine/give_pokemon.asm b/engine/events/give_pokemon.asm
index 03177e60..03177e60 100755
--- a/engine/give_pokemon.asm
+++ b/engine/events/give_pokemon.asm
diff --git a/engine/heal_party.asm b/engine/events/heal_party.asm
index 7aaa1bd1..7aaa1bd1 100644
--- a/engine/heal_party.asm
+++ b/engine/events/heal_party.asm
diff --git a/engine/overworld/hidden_items.asm b/engine/events/hidden_items.asm
index e40b0ac7..e40b0ac7 100755
--- a/engine/overworld/hidden_items.asm
+++ b/engine/events/hidden_items.asm
diff --git a/engine/hidden_object_functions14.asm b/engine/events/hidden_object_functions14.asm
index 9e14c6a7..9e14c6a7 100755
--- a/engine/hidden_object_functions14.asm
+++ b/engine/events/hidden_object_functions14.asm
diff --git a/engine/hidden_object_functions17.asm b/engine/events/hidden_object_functions17.asm
index bb2a358c..bb2a358c 100755
--- a/engine/hidden_object_functions17.asm
+++ b/engine/events/hidden_object_functions17.asm
diff --git a/engine/hidden_object_functions18.asm b/engine/events/hidden_object_functions18.asm
index c0e5aa34..c0e5aa34 100755
--- a/engine/hidden_object_functions18.asm
+++ b/engine/events/hidden_object_functions18.asm
diff --git a/engine/hidden_object_functions3.asm b/engine/events/hidden_object_functions3.asm
index 1237e960..1237e960 100755
--- a/engine/hidden_object_functions3.asm
+++ b/engine/events/hidden_object_functions3.asm
diff --git a/engine/hidden_object_functions7.asm b/engine/events/hidden_object_functions7.asm
index e18b9570..e18b9570 100755
--- a/engine/hidden_object_functions7.asm
+++ b/engine/events/hidden_object_functions7.asm
diff --git a/engine/in_game_trades.asm b/engine/events/in_game_trades.asm
index c01bc3c3..c01bc3c3 100755
--- a/engine/in_game_trades.asm
+++ b/engine/events/in_game_trades.asm
diff --git a/engine/overworld/oaks_aide.asm b/engine/events/oaks_aide.asm
index f5068fda..f5068fda 100755
--- a/engine/overworld/oaks_aide.asm
+++ b/engine/events/oaks_aide.asm
diff --git a/engine/overworld/pewter_guys.asm b/engine/events/pewter_guys.asm
index 532fa4bf..532fa4bf 100755
--- a/engine/overworld/pewter_guys.asm
+++ b/engine/events/pewter_guys.asm
diff --git a/engine/overworld/item.asm b/engine/events/pick_up_item.asm
index 9f19100a..9f19100a 100644
--- a/engine/overworld/item.asm
+++ b/engine/events/pick_up_item.asm
diff --git a/engine/overworld/poison.asm b/engine/events/poison.asm
index 5d8eb9fd..5d8eb9fd 100644
--- a/engine/overworld/poison.asm
+++ b/engine/events/poison.asm
diff --git a/engine/overworld/pokecenter.asm b/engine/events/pokecenter.asm
index f340e06d..f340e06d 100755
--- a/engine/overworld/pokecenter.asm
+++ b/engine/events/pokecenter.asm
diff --git a/engine/pokedex_rating.asm b/engine/events/pokedex_rating.asm
index f1aaf618..f1aaf618 100755
--- a/engine/pokedex_rating.asm
+++ b/engine/events/pokedex_rating.asm
diff --git a/engine/overworld/pokemart.asm b/engine/events/pokemart.asm
index 177e8a09..177e8a09 100755
--- a/engine/overworld/pokemart.asm
+++ b/engine/events/pokemart.asm
diff --git a/engine/menu/prize_menu.asm b/engine/events/prize_menu.asm
index 5e08bb8f..5e08bb8f 100755
--- a/engine/menu/prize_menu.asm
+++ b/engine/events/prize_menu.asm
diff --git a/engine/overworld/saffron_guards.asm b/engine/events/saffron_guards.asm
index 091cfa1a..091cfa1a 100755
--- a/engine/overworld/saffron_guards.asm
+++ b/engine/events/saffron_guards.asm
diff --git a/engine/overworld/set_blackout_map.asm b/engine/events/set_blackout_map.asm
index 14f0ba28..14f0ba28 100644
--- a/engine/overworld/set_blackout_map.asm
+++ b/engine/events/set_blackout_map.asm
diff --git a/engine/predefs17.asm b/engine/events/starter_dex.asm
index 21289c6a..21289c6a 100755
--- a/engine/predefs17.asm
+++ b/engine/events/starter_dex.asm
diff --git a/engine/menu/vending_machine.asm b/engine/events/vending_machine.asm
index 554c5d4f..554c5d4f 100755
--- a/engine/menu/vending_machine.asm
+++ b/engine/events/vending_machine.asm
diff --git a/engine/hp_bar.asm b/engine/gfx/hp_bar.asm
index 221bd7a9..221bd7a9 100755
--- a/engine/hp_bar.asm
+++ b/engine/gfx/hp_bar.asm
diff --git a/engine/load_pokedex_tiles.asm b/engine/gfx/load_pokedex_tiles.asm
index 70bcf04d..70bcf04d 100755
--- a/engine/load_pokedex_tiles.asm
+++ b/engine/gfx/load_pokedex_tiles.asm
diff --git a/engine/mon_party_sprites.asm b/engine/gfx/mon_icons.asm
index d2913715..d2913715 100755
--- a/engine/mon_party_sprites.asm
+++ b/engine/gfx/mon_icons.asm
diff --git a/engine/oam_dma.asm b/engine/gfx/oam_dma.asm
index b0d64675..b0d64675 100644
--- a/engine/oam_dma.asm
+++ b/engine/gfx/oam_dma.asm
diff --git a/engine/palettes.asm b/engine/gfx/palettes.asm
index 39991d48..39991d48 100755
--- a/engine/palettes.asm
+++ b/engine/gfx/palettes.asm
diff --git a/engine/predefs12.asm b/engine/gfx/screen_effects.asm
index 95f0ea25..95f0ea25 100755
--- a/engine/predefs12.asm
+++ b/engine/gfx/screen_effects.asm
diff --git a/engine/overworld/oam.asm b/engine/gfx/sprite_oam.asm
index 68128413..68128413 100644
--- a/engine/overworld/oam.asm
+++ b/engine/gfx/sprite_oam.asm
diff --git a/engine/get_bag_item_quantity.asm b/engine/items/get_bag_item_quantity.asm
index f10df1a0..f10df1a0 100644
--- a/engine/get_bag_item_quantity.asm
+++ b/engine/items/get_bag_item_quantity.asm
diff --git a/engine/items/items.asm b/engine/items/item_effects.asm
index 6e7bed1e..6e7bed1e 100755
--- a/engine/items/items.asm
+++ b/engine/items/item_effects.asm
diff --git a/engine/subtract_paid_money.asm b/engine/items/subtract_paid_money.asm
index fdefe3d6..fdefe3d6 100644
--- a/engine/subtract_paid_money.asm
+++ b/engine/items/subtract_paid_money.asm
diff --git a/engine/town_map.asm b/engine/items/town_map.asm
index 84a92994..84a92994 100755
--- a/engine/town_map.asm
+++ b/engine/items/town_map.asm
diff --git a/engine/cable_club.asm b/engine/link/cable_club.asm
index 141ed396..141ed396 100755
--- a/engine/cable_club.asm
+++ b/engine/link/cable_club.asm
diff --git a/engine/overworld/cable_club_npc.asm b/engine/link/cable_club_npc.asm
index bb0f7680..bb0f7680 100755
--- a/engine/overworld/cable_club_npc.asm
+++ b/engine/link/cable_club_npc.asm
diff --git a/engine/print_waiting_text.asm b/engine/link/print_waiting_text.asm
index c48459d3..c48459d3 100644
--- a/engine/print_waiting_text.asm
+++ b/engine/link/print_waiting_text.asm
diff --git a/engine/bcd.asm b/engine/math/bcd.asm
index 2d0b43df..2d0b43df 100644
--- a/engine/bcd.asm
+++ b/engine/math/bcd.asm
diff --git a/engine/multiply_divide.asm b/engine/math/multiply_divide.asm
index 6cdc6c87..6cdc6c87 100755
--- a/engine/multiply_divide.asm
+++ b/engine/math/multiply_divide.asm
diff --git a/engine/random.asm b/engine/math/random.asm
index 2fc83f6f..2fc83f6f 100755
--- a/engine/random.asm
+++ b/engine/math/random.asm
diff --git a/engine/display_text_id_init.asm b/engine/menus/display_text_id_init.asm
index 5043ad22..5043ad22 100644
--- a/engine/display_text_id_init.asm
+++ b/engine/menus/display_text_id_init.asm
diff --git a/engine/menu/draw_badges.asm b/engine/menus/draw_badges.asm
index 1888e32f..1888e32f 100644
--- a/engine/menu/draw_badges.asm
+++ b/engine/menus/draw_badges.asm
diff --git a/engine/menu/draw_start_menu.asm b/engine/menus/draw_start_menu.asm
index 21e444e9..21e444e9 100644
--- a/engine/menu/draw_start_menu.asm
+++ b/engine/menus/draw_start_menu.asm
diff --git a/engine/menu/league_pc.asm b/engine/menus/league_pc.asm
index 170c0ef3..170c0ef3 100755
--- a/engine/menu/league_pc.asm
+++ b/engine/menus/league_pc.asm
diff --git a/engine/menu/main_menu.asm b/engine/menus/main_menu.asm
index 8eda6744..8eda6744 100755
--- a/engine/menu/main_menu.asm
+++ b/engine/menus/main_menu.asm
diff --git a/engine/menu/naming_screen.asm b/engine/menus/naming_screen.asm
index 2b86d6f4..2b86d6f4 100755
--- a/engine/menu/naming_screen.asm
+++ b/engine/menus/naming_screen.asm
diff --git a/engine/menu/oaks_pc.asm b/engine/menus/oaks_pc.asm
index 03c9b8f1..03c9b8f1 100755
--- a/engine/menu/oaks_pc.asm
+++ b/engine/menus/oaks_pc.asm
diff --git a/engine/menu/party_menu.asm b/engine/menus/party_menu.asm
index 41b6074b..41b6074b 100755
--- a/engine/menu/party_menu.asm
+++ b/engine/menus/party_menu.asm
diff --git a/engine/menu/pc.asm b/engine/menus/pc.asm
index 6ec45f2e..6ec45f2e 100755
--- a/engine/menu/pc.asm
+++ b/engine/menus/pc.asm
diff --git a/engine/menu/players_pc.asm b/engine/menus/players_pc.asm
index 403632fa..403632fa 100755
--- a/engine/menu/players_pc.asm
+++ b/engine/menus/players_pc.asm
diff --git a/engine/menu/pokedex.asm b/engine/menus/pokedex.asm
index 8e1fd480..8e1fd480 100755
--- a/engine/menu/pokedex.asm
+++ b/engine/menus/pokedex.asm
diff --git a/engine/save.asm b/engine/menus/save.asm
index 33a7ba8d..33a7ba8d 100755
--- a/engine/save.asm
+++ b/engine/menus/save.asm
diff --git a/engine/menu/start_sub_menus.asm b/engine/menus/start_sub_menus.asm
index b81769a2..b81769a2 100755
--- a/engine/menu/start_sub_menus.asm
+++ b/engine/menus/start_sub_menus.asm
diff --git a/engine/menu/swap_items.asm b/engine/menus/swap_items.asm
index 826fe60b..826fe60b 100644
--- a/engine/menu/swap_items.asm
+++ b/engine/menus/swap_items.asm
diff --git a/engine/menu/text_box.asm b/engine/menus/text_box.asm
index 00045959..00045959 100644
--- a/engine/menu/text_box.asm
+++ b/engine/menus/text_box.asm
diff --git a/engine/HoF_room_pc.asm b/engine/movie/credits.asm
index f820aae3..f820aae3 100755
--- a/engine/HoF_room_pc.asm
+++ b/engine/movie/credits.asm
diff --git a/engine/evolution.asm b/engine/movie/evolution.asm
index 731735c5..731735c5 100755
--- a/engine/evolution.asm
+++ b/engine/movie/evolution.asm
diff --git a/engine/gamefreak.asm b/engine/movie/gamefreak.asm
index 78e48384..78e48384 100755
--- a/engine/gamefreak.asm
+++ b/engine/movie/gamefreak.asm
diff --git a/engine/hall_of_fame.asm b/engine/movie/hall_of_fame.asm
index 3c9b1723..3c9b1723 100755
--- a/engine/hall_of_fame.asm
+++ b/engine/movie/hall_of_fame.asm
diff --git a/engine/intro.asm b/engine/movie/intro.asm
index 9a13c96f..9a13c96f 100755
--- a/engine/intro.asm
+++ b/engine/movie/intro.asm
diff --git a/engine/clear_save.asm b/engine/movie/oak_speech/clear_save.asm
index b47cd6c4..b47cd6c4 100755
--- a/engine/clear_save.asm
+++ b/engine/movie/oak_speech/clear_save.asm
diff --git a/engine/init_player_data.asm b/engine/movie/oak_speech/init_player_data.asm
index c576e65a..c576e65a 100644
--- a/engine/init_player_data.asm
+++ b/engine/movie/oak_speech/init_player_data.asm
diff --git a/engine/oak_speech.asm b/engine/movie/oak_speech/oak_speech.asm
index b1acfb65..b1acfb65 100755
--- a/engine/oak_speech.asm
+++ b/engine/movie/oak_speech/oak_speech.asm
diff --git a/engine/oak_speech2.asm b/engine/movie/oak_speech/oak_speech2.asm
index fdc9ffa3..fdc9ffa3 100755
--- a/engine/oak_speech2.asm
+++ b/engine/movie/oak_speech/oak_speech2.asm
diff --git a/engine/titlescreen.asm b/engine/movie/titlescreen.asm
index c30f83a9..c30f83a9 100755
--- a/engine/titlescreen.asm
+++ b/engine/movie/titlescreen.asm
diff --git a/engine/titlescreen2.asm b/engine/movie/titlescreen2.asm
index 2346fcc5..2346fcc5 100755
--- a/engine/titlescreen2.asm
+++ b/engine/movie/titlescreen2.asm
diff --git a/engine/trade.asm b/engine/movie/trade.asm
index 8bc8e3bc..8bc8e3bc 100755
--- a/engine/trade.asm
+++ b/engine/movie/trade.asm
diff --git a/engine/trade2.asm b/engine/movie/trade2.asm
index 2c79e077..2c79e077 100755
--- a/engine/trade2.asm
+++ b/engine/movie/trade2.asm
diff --git a/engine/overworld/npc_movement.asm b/engine/overworld/auto_movement.asm
index e478c9ad..e478c9ad 100755
--- a/engine/overworld/npc_movement.asm
+++ b/engine/overworld/auto_movement.asm
diff --git a/engine/overworld/ssanne.asm b/engine/overworld/dust_smoke.asm
index 6c26b712..6c26b712 100755
--- a/engine/overworld/ssanne.asm
+++ b/engine/overworld/dust_smoke.asm
diff --git a/engine/pathfinding.asm b/engine/overworld/pathfinding.asm
index ba052d38..ba052d38 100644
--- a/engine/pathfinding.asm
+++ b/engine/overworld/pathfinding.asm
diff --git a/engine/special_warps.asm b/engine/overworld/special_warps.asm
index eee85402..eee85402 100644
--- a/engine/special_warps.asm
+++ b/engine/overworld/special_warps.asm
diff --git a/engine/overworld/map_sprite_functions1.asm b/engine/overworld/sprite_collisions.asm
index 0e6b2d06..0e6b2d06 100644
--- a/engine/overworld/map_sprite_functions1.asm
+++ b/engine/overworld/sprite_collisions.asm
diff --git a/engine/overworld/tileset_header.asm b/engine/overworld/tilesets.asm
index 6e33974f..6e33974f 100644
--- a/engine/overworld/tileset_header.asm
+++ b/engine/overworld/tilesets.asm
diff --git a/engine/overworld/trainers.asm b/engine/overworld/trainer_sight.asm
index 5a68b627..5a68b627 100755
--- a/engine/overworld/trainers.asm
+++ b/engine/overworld/trainer_sight.asm
diff --git a/engine/turn_sprite.asm b/engine/overworld/turn_sprite.asm
index c7f7712b..c7f7712b 100755
--- a/engine/turn_sprite.asm
+++ b/engine/overworld/turn_sprite.asm
diff --git a/engine/add_mon.asm b/engine/pokemon/add_mon.asm
index 7627136b..7627136b 100644
--- a/engine/add_mon.asm
+++ b/engine/pokemon/add_mon.asm
diff --git a/engine/menu/bills_pc.asm b/engine/pokemon/bills_pc.asm
index 6f643228..e5855f1d 100644
--- a/engine/menu/bills_pc.asm
+++ b/engine/pokemon/bills_pc.asm
@@ -376,13 +376,7 @@ KnowsHMMove::
and a
ret
-HMMoveArray:
- db CUT
- db FLY
- db SURF
- db STRENGTH
- db FLASH
- db -1
+INCLUDE "data/hm_moves.asm"
DisplayDepositWithdrawMenu:
coord hl, 9, 10
diff --git a/engine/evos_moves.asm b/engine/pokemon/evos_moves.asm
index f50f8081..f50f8081 100755
--- a/engine/evos_moves.asm
+++ b/engine/pokemon/evos_moves.asm
diff --git a/engine/experience.asm b/engine/pokemon/experience.asm
index 3ee4b2a8..3ee4b2a8 100755
--- a/engine/experience.asm
+++ b/engine/pokemon/experience.asm
diff --git a/engine/learn_move.asm b/engine/pokemon/learn_move.asm
index 53c7f87e..53c7f87e 100755
--- a/engine/learn_move.asm
+++ b/engine/pokemon/learn_move.asm
diff --git a/engine/load_mon_data.asm b/engine/pokemon/load_mon_data.asm
index 480ab1ca..480ab1ca 100644
--- a/engine/load_mon_data.asm
+++ b/engine/pokemon/load_mon_data.asm
diff --git a/engine/remove_pokemon.asm b/engine/pokemon/remove_mon.asm
index 6f7e91d6..6f7e91d6 100644
--- a/engine/remove_pokemon.asm
+++ b/engine/pokemon/remove_mon.asm
diff --git a/engine/predefs17_2.asm b/engine/pokemon/set_types.asm
index e9235f13..e9235f13 100755
--- a/engine/predefs17_2.asm
+++ b/engine/pokemon/set_types.asm
diff --git a/engine/status_ailments.asm b/engine/pokemon/status_ailments.asm
index 3da1fc43..3da1fc43 100755
--- a/engine/status_ailments.asm
+++ b/engine/pokemon/status_ailments.asm
diff --git a/engine/menu/status_screen.asm b/engine/pokemon/status_screen.asm
index 20bee0ee..20bee0ee 100755
--- a/engine/menu/status_screen.asm
+++ b/engine/pokemon/status_screen.asm
diff --git a/engine/game_corner_slots.asm b/engine/slots/game_corner_slots.asm
index 2108695f..2108695f 100755
--- a/engine/game_corner_slots.asm
+++ b/engine/slots/game_corner_slots.asm
diff --git a/engine/game_corner_slots2.asm b/engine/slots/game_corner_slots2.asm
index 8f6e8374..8f6e8374 100755
--- a/engine/game_corner_slots2.asm
+++ b/engine/slots/game_corner_slots2.asm
diff --git a/engine/slot_machine.asm b/engine/slots/slot_machine.asm
index 0a92c69b..0a92c69b 100755
--- a/engine/slot_machine.asm
+++ b/engine/slots/slot_machine.asm
diff --git a/home.asm b/home.asm
index cd5352cb..dfa1bec2 100644
--- a/home.asm
+++ b/home.asm
@@ -1282,7 +1282,7 @@ RepelWoreOffText::
TX_FAR _RepelWoreOffText
db "@"
-INCLUDE "engine/menu/start_menu.asm"
+INCLUDE "home/start_menu.asm"
; function to count how many bits are set in a string of bytes
; INPUT:
diff --git a/engine/menu/start_menu.asm b/home/start_menu.asm
index eb4b4f2d..eb4b4f2d 100755
--- a/engine/menu/start_menu.asm
+++ b/home/start_menu.asm
diff --git a/layout.link b/layout.link
index c9ad5839..6391c9d5 100644
--- a/layout.link
+++ b/layout.link
@@ -94,6 +94,8 @@ ROMX $8
"Sound Effect Headers 2"
"Music Headers 2"
"Sound Effects 2"
+ "Low Health Alarm (Audio Engine 2)"
+ "Bill's PC"
"Audio Engine 2"
"Music 2"
diff --git a/main.asm b/main.asm
index 126bf943..1c3b5800 100755
--- a/main.asm
+++ b/main.asm
@@ -4,46 +4,46 @@ INCLUDE "constants.asm"
SECTION "bank1", ROMX
INCLUDE "data/facing.asm"
-INCLUDE "engine/black_out.asm"
+INCLUDE "engine/events/black_out.asm"
MewPicFront:: INCBIN "gfx/pokemon/front/mew.pic"
MewPicBack:: INCBIN "gfx/pokemon/back/mewb.pic"
INCLUDE "data/baseStats/mew.asm"
INCLUDE "engine/battle/safari_zone.asm"
-INCLUDE "engine/titlescreen.asm"
-INCLUDE "engine/load_mon_data.asm"
+INCLUDE "engine/movie/titlescreen.asm"
+INCLUDE "engine/pokemon/load_mon_data.asm"
INCLUDE "data/item_prices.asm"
INCLUDE "text/item_names.asm"
INCLUDE "text/unused_names.asm"
-INCLUDE "engine/overworld/oam.asm"
-INCLUDE "engine/oam_dma.asm"
-INCLUDE "engine/print_waiting_text.asm"
-INCLUDE "engine/overworld/map_sprite_functions1.asm"
-INCLUDE "engine/test_battle.asm"
-INCLUDE "engine/overworld/item.asm"
+INCLUDE "engine/gfx/sprite_oam.asm"
+INCLUDE "engine/gfx/oam_dma.asm"
+INCLUDE "engine/link/print_waiting_text.asm"
+INCLUDE "engine/overworld/sprite_collisions.asm"
+INCLUDE "engine/debug/test_battle.asm"
+INCLUDE "engine/events/pick_up_item.asm"
INCLUDE "engine/overworld/movement.asm"
-INCLUDE "engine/cable_club.asm"
-INCLUDE "engine/menu/main_menu.asm"
-INCLUDE "engine/oak_speech.asm"
-INCLUDE "engine/special_warps.asm"
-INCLUDE "engine/debug1.asm"
-INCLUDE "engine/menu/naming_screen.asm"
-INCLUDE "engine/oak_speech2.asm"
-INCLUDE "engine/subtract_paid_money.asm"
-INCLUDE "engine/menu/swap_items.asm"
-INCLUDE "engine/overworld/pokemart.asm"
-INCLUDE "engine/learn_move.asm"
-INCLUDE "engine/overworld/pokecenter.asm"
-INCLUDE "engine/overworld/set_blackout_map.asm"
-INCLUDE "engine/display_text_id_init.asm"
-INCLUDE "engine/menu/draw_start_menu.asm"
-INCLUDE "engine/overworld/cable_club_npc.asm"
-INCLUDE "engine/menu/text_box.asm"
-INCLUDE "engine/battle/moveEffects/drain_hp_effect.asm"
-INCLUDE "engine/menu/players_pc.asm"
-INCLUDE "engine/remove_pokemon.asm"
-INCLUDE "engine/display_pokedex.asm"
+INCLUDE "engine/link/cable_club.asm"
+INCLUDE "engine/menus/main_menu.asm"
+INCLUDE "engine/movie/oak_speech/oak_speech.asm"
+INCLUDE "engine/overworld/special_warps.asm"
+INCLUDE "engine/debug/debug_party.asm"
+INCLUDE "engine/menus/naming_screen.asm"
+INCLUDE "engine/movie/oak_speech/oak_speech2.asm"
+INCLUDE "engine/items/subtract_paid_money.asm"
+INCLUDE "engine/menus/swap_items.asm"
+INCLUDE "engine/events/pokemart.asm"
+INCLUDE "engine/pokemon/learn_move.asm"
+INCLUDE "engine/events/pokecenter.asm"
+INCLUDE "engine/events/set_blackout_map.asm"
+INCLUDE "engine/menus/display_text_id_init.asm"
+INCLUDE "engine/menus/draw_start_menu.asm"
+INCLUDE "engine/link/cable_club_npc.asm"
+INCLUDE "engine/menus/text_box.asm"
+INCLUDE "engine/battle/move_effects/drain_hp.asm"
+INCLUDE "engine/menus/players_pc.asm"
+INCLUDE "engine/pokemon/remove_mon.asm"
+INCLUDE "engine/events/display_pokedex.asm"
SECTION "bank3", ROMX
@@ -53,28 +53,28 @@ INCLUDE "data/map_songs.asm"
INCLUDE "data/map_header_banks.asm"
INCLUDE "engine/overworld/clear_variables.asm"
INCLUDE "engine/overworld/player_state.asm"
-INCLUDE "engine/overworld/poison.asm"
-INCLUDE "engine/overworld/tileset_header.asm"
+INCLUDE "engine/events/poison.asm"
+INCLUDE "engine/overworld/tilesets.asm"
INCLUDE "engine/overworld/daycare_exp.asm"
INCLUDE "data/hide_show_data.asm"
INCLUDE "engine/overworld/field_move_messages.asm"
INCLUDE "engine/items/inventory.asm"
INCLUDE "engine/overworld/wild_mons.asm"
-INCLUDE "engine/items/items.asm"
-INCLUDE "engine/menu/draw_badges.asm"
+INCLUDE "engine/items/item_effects.asm"
+INCLUDE "engine/menus/draw_badges.asm"
INCLUDE "engine/overworld/update_map.asm"
INCLUDE "engine/overworld/cut.asm"
INCLUDE "engine/overworld/missable_objects.asm"
INCLUDE "engine/overworld/push_boulder.asm"
-INCLUDE "engine/add_mon.asm"
+INCLUDE "engine/pokemon/add_mon.asm"
INCLUDE "engine/flag_action.asm"
-INCLUDE "engine/heal_party.asm"
-INCLUDE "engine/bcd.asm"
-INCLUDE "engine/init_player_data.asm"
-INCLUDE "engine/get_bag_item_quantity.asm"
-INCLUDE "engine/pathfinding.asm"
-INCLUDE "engine/hp_bar.asm"
-INCLUDE "engine/hidden_object_functions3.asm"
+INCLUDE "engine/events/heal_party.asm"
+INCLUDE "engine/math/bcd.asm"
+INCLUDE "engine/movie/oak_speech/init_player_data.asm"
+INCLUDE "engine/items/get_bag_item_quantity.asm"
+INCLUDE "engine/overworld/pathfinding.asm"
+INCLUDE "engine/gfx/hp_bar.asm"
+INCLUDE "engine/events/hidden_object_functions3.asm"
SECTION "Graphics (BANK 4)", ROMX
@@ -106,33 +106,33 @@ PlayerCharacterTitleGraphicsEnd:
SECTION "Battle (BANK 4)", ROMX
INCLUDE "engine/overworld/is_player_just_outside_map.asm"
-INCLUDE "engine/menu/status_screen.asm"
-INCLUDE "engine/menu/party_menu.asm"
+INCLUDE "engine/pokemon/status_screen.asm"
+INCLUDE "engine/menus/party_menu.asm"
RedPicFront:: INCBIN "gfx/player/red.pic"
ShrinkPic1:: INCBIN "gfx/player/shrink1.pic"
ShrinkPic2:: INCBIN "gfx/player/shrink2.pic"
-INCLUDE "engine/turn_sprite.asm"
-INCLUDE "engine/menu/start_sub_menus.asm"
+INCLUDE "engine/overworld/turn_sprite.asm"
+INCLUDE "engine/menus/start_sub_menus.asm"
INCLUDE "engine/items/tms.asm"
INCLUDE "engine/battle/end_of_battle.asm"
INCLUDE "engine/battle/wild_encounters.asm"
-INCLUDE "engine/battle/moveEffects/recoil_effect.asm"
-INCLUDE "engine/battle/moveEffects/conversion_effect.asm"
-INCLUDE "engine/battle/moveEffects/haze_effect.asm"
+INCLUDE "engine/battle/move_effects/recoil.asm"
+INCLUDE "engine/battle/move_effects/conversion.asm"
+INCLUDE "engine/battle/move_effects/haze.asm"
INCLUDE "engine/battle/get_trainer_name.asm"
-INCLUDE "engine/random.asm"
+INCLUDE "engine/math/random.asm"
SECTION "Battle (BANK 5)", ROMX
-INCLUDE "engine/load_pokedex_tiles.asm"
+INCLUDE "engine/gfx/load_pokedex_tiles.asm"
INCLUDE "engine/overworld/map_sprites.asm"
INCLUDE "engine/overworld/emotion_bubbles.asm"
-INCLUDE "engine/evolve_trade.asm"
-INCLUDE "engine/battle/moveEffects/substitute_effect.asm"
-INCLUDE "engine/menu/pc.asm"
+INCLUDE "engine/events/evolve_trade.asm"
+INCLUDE "engine/battle/move_effects/substitute.asm"
+INCLUDE "engine/menus/pc.asm"
SECTION "bank6_1", ROMX
@@ -142,7 +142,7 @@ INCLUDE "engine/play_time.asm"
SECTION "bank6_2", ROMX
-INCLUDE "engine/overworld/npc_movement.asm"
+INCLUDE "engine/overworld/auto_movement.asm"
INCLUDE "engine/overworld/doors.asm"
INCLUDE "engine/overworld/ledges.asm"
@@ -150,26 +150,31 @@ INCLUDE "engine/overworld/ledges.asm"
SECTION "bank7_1", ROMX
INCLUDE "text/monster_names.asm"
-INCLUDE "engine/clear_save.asm"
-INCLUDE "engine/predefs7.asm"
+INCLUDE "engine/movie/oak_speech/clear_save.asm"
+INCLUDE "engine/events/elevator.asm"
SECTION "bank7_2", ROMX
-INCLUDE "engine/menu/oaks_pc.asm"
-INCLUDE "engine/hidden_object_functions7.asm"
+INCLUDE "engine/menus/oaks_pc.asm"
+INCLUDE "engine/events/hidden_object_functions7.asm"
+
+
+SECTION "Bill's PC", ROMX
+
+INCLUDE "engine/pokemon/bills_pc.asm"
SECTION "Battle (BANK 9)", ROMX
INCLUDE "engine/battle/print_type.asm"
INCLUDE "engine/battle/save_trainer_name.asm"
-INCLUDE "engine/battle/moveEffects/focus_energy_effect.asm"
+INCLUDE "engine/battle/move_effects/focus_energy.asm"
SECTION "Battle (BANK A)", ROMX
-INCLUDE "engine/battle/moveEffects/leech_seed_effect.asm"
+INCLUDE "engine/battle/move_effects/leech_seed.asm"
SECTION "Battle (BANK B)", ROMX
@@ -184,24 +189,24 @@ BadgeNumbersTileGraphics: INCBIN "gfx/trainer_card/badge_numbers.2bpp"
INCLUDE "engine/items/tmhm.asm"
INCLUDE "engine/battle/scale_sprites.asm"
-INCLUDE "engine/battle/moveEffects/pay_day_effect.asm"
-INCLUDE "engine/game_corner_slots2.asm"
+INCLUDE "engine/battle/move_effects/pay_day.asm"
+INCLUDE "engine/slots/game_corner_slots2.asm"
SECTION "Battle (BANK C)", ROMX
-INCLUDE "engine/battle/moveEffects/mist_effect.asm"
-INCLUDE "engine/battle/moveEffects/one_hit_ko_effect.asm"
+INCLUDE "engine/battle/move_effects/mist.asm"
+INCLUDE "engine/battle/move_effects/one_hit_ko.asm"
SECTION "Battle (BANK D)", ROMX
-INCLUDE "engine/titlescreen2.asm"
+INCLUDE "engine/movie/titlescreen2.asm"
INCLUDE "engine/battle/link_battle_versus_text.asm"
-INCLUDE "engine/slot_machine.asm"
-INCLUDE "engine/overworld/pewter_guys.asm"
-INCLUDE "engine/multiply_divide.asm"
-INCLUDE "engine/game_corner_slots.asm"
+INCLUDE "engine/slots/slot_machine.asm"
+INCLUDE "engine/events/pewter_guys.asm"
+INCLUDE "engine/math/multiply_divide.asm"
+INCLUDE "engine/slots/game_corner_slots.asm"
SECTION "bankE", ROMX
@@ -223,10 +228,10 @@ TradingAnimationGraphicsEnd:
TradingAnimationGraphics2: INCBIN "gfx/trade/cable_ball.2bpp"
TradingAnimationGraphics2End:
-INCLUDE "engine/evos_moves.asm"
-INCLUDE "engine/battle/moveEffects/heal_effect.asm"
-INCLUDE "engine/battle/moveEffects/transform_effect.asm"
-INCLUDE "engine/battle/moveEffects/reflect_light_screen_effect.asm"
+INCLUDE "engine/pokemon/evos_moves.asm"
+INCLUDE "engine/battle/move_effects/heal.asm"
+INCLUDE "engine/battle/move_effects/transform.asm"
+INCLUDE "engine/battle/move_effects/reflect_light_screen.asm"
SECTION "bankF", ROMX
@@ -237,15 +242,15 @@ INCLUDE "engine/battle/effects.asm"
SECTION "bank10", ROMX
-INCLUDE "engine/menu/pokedex.asm"
-INCLUDE "engine/trade.asm"
-INCLUDE "engine/intro.asm"
-INCLUDE "engine/trade2.asm"
+INCLUDE "engine/menus/pokedex.asm"
+INCLUDE "engine/movie/trade.asm"
+INCLUDE "engine/movie/intro.asm"
+INCLUDE "engine/movie/trade2.asm"
SECTION "bank11_1", ROMX
-INCLUDE "engine/pokedex_rating.asm"
+INCLUDE "engine/events/pokedex_rating.asm"
SECTION "bank11_2", ROMX
@@ -255,22 +260,22 @@ INCLUDE "engine/overworld/hidden_objects.asm"
SECTION "bank12", ROMX
-INCLUDE "engine/predefs12.asm"
+INCLUDE "engine/gfx/screen_effects.asm"
SECTION "bank13", ROMX
-INCLUDE "engine/give_pokemon.asm"
+INCLUDE "engine/events/give_pokemon.asm"
INCLUDE "engine/predefs.asm"
SECTION "bank14", ROMX
INCLUDE "engine/battle/init_battle_variables.asm"
-INCLUDE "engine/battle/moveEffects/paralyze_effect.asm"
-INCLUDE "engine/overworld/card_key.asm"
-INCLUDE "engine/menu/prize_menu.asm"
-INCLUDE "engine/hidden_object_functions14.asm"
+INCLUDE "engine/battle/move_effects/paralyze.asm"
+INCLUDE "engine/events/card_key.asm"
+INCLUDE "engine/events/prize_menu.asm"
+INCLUDE "engine/events/hidden_object_functions14.asm"
SECTION "bank15_1", ROMX
@@ -280,41 +285,41 @@ INCLUDE "engine/battle/experience.asm"
SECTION "bank15_2", ROMX
-INCLUDE "engine/menu/diploma.asm"
-INCLUDE "engine/overworld/trainers.asm"
+INCLUDE "engine/events/diploma.asm"
+INCLUDE "engine/overworld/trainer_sight.asm"
SECTION "bank16_1", ROMX
INCLUDE "engine/battle/common_text.asm"
-INCLUDE "engine/experience.asm"
-INCLUDE "engine/overworld/oaks_aide.asm"
+INCLUDE "engine/pokemon/experience.asm"
+INCLUDE "engine/events/oaks_aide.asm"
SECTION "bank16_2", ROMX
-INCLUDE "engine/overworld/saffron_guards.asm"
+INCLUDE "engine/events/saffron_guards.asm"
SECTION "bank17_1", ROMX
-INCLUDE "engine/predefs17.asm"
+INCLUDE "engine/events/starter_dex.asm"
SECTION "bank17_2", ROMX
-INCLUDE "engine/predefs17_2.asm"
-INCLUDE "engine/hidden_object_functions17.asm"
+INCLUDE "engine/pokemon/set_types.asm"
+INCLUDE "engine/events/hidden_object_functions17.asm"
SECTION "bank18_1", ROMX
-INCLUDE "engine/overworld/cinnabar_lab.asm"
+INCLUDE "engine/events/cinnabar_lab.asm"
SECTION "bank18_2", ROMX
-INCLUDE "engine/hidden_object_functions18.asm"
+INCLUDE "engine/events/hidden_object_functions18.asm"
SECTION "bank1A", ROMX
@@ -333,42 +338,42 @@ Version_GFXEnd:
SECTION "bank1C", ROMX
-INCLUDE "engine/gamefreak.asm"
-INCLUDE "engine/hall_of_fame.asm"
+INCLUDE "engine/movie/gamefreak.asm"
+INCLUDE "engine/movie/hall_of_fame.asm"
INCLUDE "engine/overworld/healing_machine.asm"
INCLUDE "engine/overworld/player_animations.asm"
INCLUDE "engine/battle/ghost_marowak_anim.asm"
INCLUDE "engine/battle/battle_transitions.asm"
-INCLUDE "engine/town_map.asm"
-INCLUDE "engine/mon_party_sprites.asm"
-INCLUDE "engine/in_game_trades.asm"
-INCLUDE "engine/palettes.asm"
-INCLUDE "engine/save.asm"
+INCLUDE "engine/items/town_map.asm"
+INCLUDE "engine/gfx/mon_icons.asm"
+INCLUDE "engine/events/in_game_trades.asm"
+INCLUDE "engine/gfx/palettes.asm"
+INCLUDE "engine/menus/save.asm"
SECTION "bank1D_1", ROMX
-INCLUDE "engine/HoF_room_pc.asm"
-INCLUDE "engine/status_ailments.asm"
+INCLUDE "engine/movie/credits.asm"
+INCLUDE "engine/pokemon/status_ailments.asm"
INCLUDE "engine/items/itemfinder.asm"
SECTION "bank1D_2", ROMX
-INCLUDE "engine/menu/vending_machine.asm"
+INCLUDE "engine/events/vending_machine.asm"
SECTION "bank1D_3", ROMX
-INCLUDE "engine/menu/league_pc.asm"
-INCLUDE "engine/overworld/hidden_items.asm"
+INCLUDE "engine/menus/league_pc.asm"
+INCLUDE "engine/events/hidden_items.asm"
SECTION "bank1E", ROMX
INCLUDE "engine/battle/animations.asm"
INCLUDE "engine/overworld/cut2.asm"
-INCLUDE "engine/overworld/ssanne.asm"
+INCLUDE "engine/overworld/dust_smoke.asm"
RedFishingTilesFront: INCBIN "gfx/overworld/red_fish_front.2bpp"
RedFishingTilesBack: INCBIN "gfx/overworld/red_fish_back.2bpp"
@@ -376,6 +381,6 @@ RedFishingTilesSide: INCBIN "gfx/overworld/red_fish_side.2bpp"
RedFishingRodTiles: INCBIN "gfx/overworld/fishing_rod.2bpp"
INCLUDE "data/animations.asm"
-INCLUDE "engine/evolution.asm"
+INCLUDE "engine/movie/evolution.asm"
INCLUDE "engine/overworld/elevator.asm"
INCLUDE "engine/items/tm_prices.asm"