diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-10-01 19:48:31 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-10-01 19:52:40 -0400 |
commit | 0685dd4920c64eae6bcfbc9f201854b4da91bfab (patch) | |
tree | f759feaf819167d436ab4fde480eca35ba591b04 /src | |
parent | d0fbed6ad50c34593002c2b540c4e3e7f4c5cd16 (diff) | |
parent | 50dc4f429d4aa68e0365adc71d17e43a0dd7b843 (diff) |
Merge branch 'master' into trade
Diffstat (limited to 'src')
-rw-r--r-- | src/battle/battle_2.c (renamed from src/battle_2.c) | 8 | ||||
-rw-r--r-- | src/battle/battle_3.c (renamed from src/battle_3.c) | 2 | ||||
-rw-r--r-- | src/battle/battle_4.c (renamed from src/battle_4.c) | 1252 | ||||
-rw-r--r-- | src/battle/battle_7.c (renamed from src/battle_7.c) | 42 | ||||
-rw-r--r-- | src/battle/battle_ai.c (renamed from src/battle_ai.c) | 4 | ||||
-rw-r--r-- | src/battle/battle_anim.c (renamed from src/battle_anim.c) | 162 | ||||
-rw-r--r-- | src/battle/battle_anim_807B69C.c (renamed from src/battle_anim_807B69C.c) | 14 | ||||
-rw-r--r-- | src/battle/battle_anim_80A7E7C.c (renamed from src/battle_anim_80A7E7C.c) | 92 | ||||
-rw-r--r-- | src/battle/battle_anim_80CA710.c (renamed from src/battle_anim_80CA710.c) | 0 | ||||
-rw-r--r-- | src/battle/battle_controller_linkopponent.c (renamed from src/battle_controller_linkopponent.c) | 10 | ||||
-rw-r--r-- | src/battle/battle_controller_linkpartner.c (renamed from src/battle_controller_linkpartner.c) | 10 | ||||
-rw-r--r-- | src/battle/battle_controller_opponent.c (renamed from src/battle_controller_opponent.c) | 10 | ||||
-rw-r--r-- | src/battle/battle_controller_player.c (renamed from src/battle_controller_player.c) | 10 | ||||
-rw-r--r-- | src/battle/battle_controller_safari.c (renamed from src/battle_controller_safari.c) | 0 | ||||
-rw-r--r-- | src/battle/battle_controller_wally.c (renamed from src/battle_controller_wally.c) | 4 | ||||
-rw-r--r-- | src/battle/battle_interface.c (renamed from src/battle_interface.c) | 2 | ||||
-rw-r--r-- | src/battle/battle_message.c (renamed from src/battle_message.c) | 0 | ||||
-rw-r--r-- | src/battle/battle_party_menu.c (renamed from src/battle_party_menu.c) | 0 | ||||
-rw-r--r-- | src/battle/battle_records.c (renamed from src/battle_records.c) | 0 | ||||
-rw-r--r-- | src/battle/battle_setup.c (renamed from src/battle_setup.c) | 2 | ||||
-rw-r--r-- | src/battle/battle_transition.c (renamed from src/battle_transition.c) | 0 | ||||
-rw-r--r-- | src/battle/calculate_base_damage.c (renamed from src/calculate_base_damage.c) | 0 | ||||
-rw-r--r-- | src/battle/contest_link_80C857C.c (renamed from src/contest_link_80C857C.c) | 0 | ||||
-rw-r--r-- | src/battle/pokeball.c (renamed from src/pokeball.c) | 0 | ||||
-rw-r--r-- | src/battle/post_battle_event_funcs.c (renamed from src/post_battle_event_funcs.c) | 0 | ||||
-rw-r--r-- | src/battle/reshow_battle_screen.c (renamed from src/reshow_battle_screen.c) | 0 | ||||
-rw-r--r-- | src/battle/smokescreen.c (renamed from src/smokescreen.c) | 0 | ||||
-rw-r--r-- | src/debug/matsuda_debug_menu.c (renamed from src/matsuda_debug_menu.c) | 0 | ||||
-rw-r--r-- | src/debug/mori_debug_menu.c (renamed from src/mori_debug_menu.c) | 0 | ||||
-rw-r--r-- | src/debug/sound_check_menu.c | 1300 | ||||
-rw-r--r-- | src/debug/unknown_debug_menu.c (renamed from src/unknown_debug_menu.c) | 0 | ||||
-rw-r--r-- | src/engine/blend_palette.c (renamed from src/blend_palette.c) | 0 | ||||
-rw-r--r-- | src/engine/cable_club.c (renamed from src/cable_club.c) | 4 | ||||
-rw-r--r-- | src/engine/clear_save_data_menu.c (renamed from src/clear_save_data_menu.c) | 0 | ||||
-rw-r--r-- | src/engine/clock.c (renamed from src/clock.c) | 0 | ||||
-rw-r--r-- | src/engine/decompress.c (renamed from src/decompress.c) | 2 | ||||
-rw-r--r-- | src/engine/link.c (renamed from src/link.c) | 0 | ||||
-rw-r--r-- | src/engine/load_save.c (renamed from src/load_save.c) | 0 | ||||
-rw-r--r-- | src/engine/main.c (renamed from src/main.c) | 0 | ||||
-rw-r--r-- | src/engine/main_menu.c (renamed from src/main_menu.c) | 0 | ||||
-rw-r--r-- | src/engine/menu.c (renamed from src/menu.c) | 0 | ||||
-rw-r--r-- | src/engine/menu_cursor.c (renamed from src/menu_cursor.c) | 0 | ||||
-rw-r--r-- | src/engine/mystery_event_menu.c (renamed from src/mystery_event_menu.c) | 0 | ||||
-rw-r--r-- | src/engine/mystery_event_script.c (renamed from src/mystery_event_script.c) | 4 | ||||
-rw-r--r-- | src/engine/name_string_util.c (renamed from src/name_string_util.c) | 0 | ||||
-rw-r--r-- | src/engine/naming_screen.c (renamed from src/naming_screen.c) | 0 | ||||
-rw-r--r-- | src/engine/option_menu.c (renamed from src/option_menu.c) | 0 | ||||
-rw-r--r-- | src/engine/palette.c (renamed from src/palette.c) | 2 | ||||
-rw-r--r-- | src/engine/play_time.c (renamed from src/play_time.c) | 0 | ||||
-rw-r--r-- | src/engine/record_mixing.c (renamed from src/record_mixing.c) | 0 | ||||
-rw-r--r-- | src/engine/reset_rtc_screen.c (renamed from src/reset_rtc_screen.c) | 0 | ||||
-rw-r--r-- | src/engine/rng.c (renamed from src/rng.c) | 0 | ||||
-rw-r--r-- | src/engine/rtc.c (renamed from src/rtc.c) | 0 | ||||
-rw-r--r-- | src/engine/save.c (renamed from src/save.c) | 0 | ||||
-rw-r--r-- | src/engine/save_failed_screen.c (renamed from src/save_failed_screen.c) | 0 | ||||
-rw-r--r-- | src/engine/save_menu_util.c (renamed from src/save_menu_util.c) | 0 | ||||
-rw-r--r-- | src/engine/script.c (renamed from src/script.c) | 68 | ||||
-rw-r--r-- | src/engine/sound.c (renamed from src/sound.c) | 2 | ||||
-rw-r--r-- | src/engine/sprite.c (renamed from src/sprite.c) | 0 | ||||
-rw-r--r-- | src/engine/string_util.c (renamed from src/string_util.c) | 0 | ||||
-rw-r--r-- | src/engine/task.c (renamed from src/task.c) | 0 | ||||
-rw-r--r-- | src/engine/text.c (renamed from src/text.c) | 12 | ||||
-rw-r--r-- | src/engine/text_window.c (renamed from src/text_window.c) | 0 | ||||
-rw-r--r-- | src/engine/tileset_anim.c (renamed from src/tileset_anim.c) | 0 | ||||
-rw-r--r-- | src/engine/time_events.c (renamed from src/time_events.c) | 0 | ||||
-rw-r--r-- | src/engine/trade.c (renamed from src/trade.c) | 14 | ||||
-rw-r--r-- | src/engine/trainer_card.c (renamed from src/trainer_card.c) | 0 | ||||
-rw-r--r-- | src/engine/trig.c (renamed from src/trig.c) | 0 | ||||
-rw-r--r-- | src/engine/util.c (renamed from src/util.c) | 0 | ||||
-rw-r--r-- | src/field/bard_music.c (renamed from src/bard_music.c) | 0 | ||||
-rw-r--r-- | src/field/berry.c (renamed from src/berry.c) | 0 | ||||
-rw-r--r-- | src/field/berry_tag_screen.c (renamed from src/berry_tag_screen.c) | 0 | ||||
-rw-r--r-- | src/field/bike.c (renamed from src/bike.c) | 6 | ||||
-rw-r--r-- | src/field/birch_pc.c (renamed from src/birch_pc.c) | 8 | ||||
-rw-r--r-- | src/field/braille_puzzles.c (renamed from src/braille_puzzles.c) | 0 | ||||
-rw-r--r-- | src/field/choose_party.c (renamed from src/choose_party.c) | 0 | ||||
-rw-r--r-- | src/field/coins.c (renamed from src/coins.c) | 26 | ||||
-rw-r--r-- | src/field/coord_event_weather.c (renamed from src/coord_event_weather.c) | 0 | ||||
-rw-r--r-- | src/field/daycare.c (renamed from src/daycare.c) | 0 | ||||
-rw-r--r-- | src/field/decoration.c (renamed from src/decoration.c) | 6 | ||||
-rw-r--r-- | src/field/decoration_inventory.c (renamed from src/decoration_inventory.c) | 0 | ||||
-rw-r--r-- | src/field/dewford_trend.c (renamed from src/dewford_trend.c) | 0 | ||||
-rw-r--r-- | src/field/diploma.c (renamed from src/diploma.c) | 0 | ||||
-rw-r--r-- | src/field/easy_chat.c (renamed from src/easy_chat.c) | 2 | ||||
-rw-r--r-- | src/field/event_data.c (renamed from src/event_data.c) | 4 | ||||
-rw-r--r-- | src/field/field_camera.c (renamed from src/field_camera.c) | 0 | ||||
-rw-r--r-- | src/field/field_control_avatar.c (renamed from src/field_control_avatar.c) | 0 | ||||
-rw-r--r-- | src/field/field_door.c (renamed from src/field_door.c) | 0 | ||||
-rw-r--r-- | src/field/field_effect.c (renamed from src/field_effect.c) | 20 | ||||
-rw-r--r-- | src/field/field_effect_helpers.c (renamed from src/field_effect_helpers.c) | 0 | ||||
-rw-r--r-- | src/field/field_fadetransition.c (renamed from src/field_fadetransition.c) | 14 | ||||
-rw-r--r-- | src/field/field_ground_effect.c (renamed from src/field_ground_effect.c) | 0 | ||||
-rw-r--r-- | src/field/field_map_obj.c (renamed from src/field_map_obj.c) | 22 | ||||
-rw-r--r-- | src/field/field_map_obj_helpers.c (renamed from src/field_map_obj_helpers.c) | 0 | ||||
-rw-r--r-- | src/field/field_message_box.c (renamed from src/field_message_box.c) | 0 | ||||
-rw-r--r-- | src/field/field_player_avatar.c (renamed from src/field_player_avatar.c) | 4 | ||||
-rw-r--r-- | src/field/field_poison.c (renamed from src/field_poison.c) | 0 | ||||
-rw-r--r-- | src/field/field_region_map.c (renamed from src/field_region_map.c) | 0 | ||||
-rw-r--r-- | src/field/field_screen_effect.c (renamed from src/field_screen_effect.c) | 2 | ||||
-rw-r--r-- | src/field/field_special_scene.c (renamed from src/field_special_scene.c) | 2 | ||||
-rw-r--r-- | src/field/field_specials.c (renamed from src/field_specials.c) | 6 | ||||
-rw-r--r-- | src/field/field_tasks.c (renamed from src/field_tasks.c) | 0 | ||||
-rw-r--r-- | src/field/field_weather.c (renamed from src/field_weather.c) | 0 | ||||
-rw-r--r-- | src/field/fieldmap.c (renamed from src/fieldmap.c) | 0 | ||||
-rw-r--r-- | src/field/fldeff_cut.c (renamed from src/fldeff_cut.c) | 0 | ||||
-rw-r--r-- | src/field/fldeff_flash.c (renamed from src/fldeff_flash.c) | 0 | ||||
-rw-r--r-- | src/field/fldeff_softboiled.c (renamed from src/fldeff_softboiled.c) | 0 | ||||
-rw-r--r-- | src/field/fldeff_strength.c (renamed from src/fldeff_strength.c) | 0 | ||||
-rw-r--r-- | src/field/fldeff_sweetscent.c (renamed from src/fldeff_sweetscent.c) | 0 | ||||
-rw-r--r-- | src/field/fldeff_teleport.c (renamed from src/fldeff_teleport.c) | 0 | ||||
-rw-r--r-- | src/field/heal_location.c (renamed from src/heal_location.c) | 0 | ||||
-rw-r--r-- | src/field/hof_pc.c (renamed from src/hof_pc.c) | 2 | ||||
-rw-r--r-- | src/field/item.c (renamed from src/item.c) | 8 | ||||
-rw-r--r-- | src/field/item_menu.c (renamed from src/item_menu.c) | 6 | ||||
-rw-r--r-- | src/field/item_use.c (renamed from src/item_use.c) | 34 | ||||
-rw-r--r-- | src/field/landmark.c (renamed from src/landmark.c) | 0 | ||||
-rw-r--r-- | src/field/lottery_corner.c (renamed from src/lottery_corner.c) | 0 | ||||
-rw-r--r-- | src/field/map_name_popup.c (renamed from src/map_name_popup.c) | 0 | ||||
-rw-r--r-- | src/field/map_obj_lock.c (renamed from src/map_obj_lock.c) | 0 | ||||
-rw-r--r-- | src/field/mauville_man.c (renamed from src/mauville_man.c) | 0 | ||||
-rw-r--r-- | src/field/menu_helpers.c (renamed from src/menu_helpers.c) | 0 | ||||
-rw-r--r-- | src/field/metatile_behavior.c (renamed from src/metatile_behavior.c) | 0 | ||||
-rw-r--r-- | src/field/money.c (renamed from src/money.c) | 0 | ||||
-rw-r--r-- | src/field/overworld.c (renamed from src/overworld.c) | 178 | ||||
-rw-r--r-- | src/field/party_menu.c (renamed from src/party_menu.c) | 0 | ||||
-rw-r--r-- | src/field/player_pc.c (renamed from src/player_pc.c) | 0 | ||||
-rw-r--r-- | src/field/pokeblock.c (renamed from src/pokeblock.c) | 2 | ||||
-rw-r--r-- | src/field/pokenav.c (renamed from src/pokenav.c) | 0 | ||||
-rw-r--r-- | src/field/region_map.c (renamed from src/region_map.c) | 6 | ||||
-rw-r--r-- | src/field/roamer.c (renamed from src/roamer.c) | 0 | ||||
-rw-r--r-- | src/field/rotating_gate.c (renamed from src/rotating_gate.c) | 0 | ||||
-rw-r--r-- | src/field/safari_zone.c (renamed from src/safari_zone.c) | 0 | ||||
-rw-r--r-- | src/field/scrcmd.c (renamed from src/scrcmd.c) | 650 | ||||
-rw-r--r-- | src/field/script_menu.c (renamed from src/script_menu.c) | 0 | ||||
-rw-r--r-- | src/field/script_movement.c (renamed from src/script_movement.c) | 0 | ||||
-rw-r--r-- | src/field/secret_base.c (renamed from src/secret_base.c) | 2 | ||||
-rw-r--r-- | src/field/shop.c (renamed from src/shop.c) | 2 | ||||
-rw-r--r-- | src/field/slot_machine.c (renamed from src/slot_machine.c) | 2 | ||||
-rw-r--r-- | src/field/start_menu.c (renamed from src/start_menu.c) | 0 | ||||
-rw-r--r-- | src/field/starter_choose.c (renamed from src/starter_choose.c) | 0 | ||||
-rw-r--r-- | src/field/trader.c (renamed from src/trader.c) | 0 | ||||
-rw-r--r-- | src/field/trainer_see.c (renamed from src/trainer_see.c) | 0 | ||||
-rw-r--r-- | src/field/tv.c (renamed from src/tv.c) | 4 | ||||
-rw-r--r-- | src/field/use_pokeblock.c (renamed from src/use_pokeblock.c) | 0 | ||||
-rw-r--r-- | src/field/wallclock.c (renamed from src/wallclock.c) | 0 | ||||
-rw-r--r-- | src/field/wild_encounter.c (renamed from src/wild_encounter.c) | 0 | ||||
-rw-r--r-- | src/libs/agb_flash.c (renamed from src/agb_flash.c) | 0 | ||||
-rw-r--r-- | src/libs/agb_flash_1m.c (renamed from src/agb_flash_1m.c) | 0 | ||||
-rw-r--r-- | src/libs/agb_flash_le.c (renamed from src/agb_flash_le.c) | 0 | ||||
-rw-r--r-- | src/libs/agb_flash_mx.c (renamed from src/agb_flash_mx.c) | 0 | ||||
-rw-r--r-- | src/libs/libc.c (renamed from src/libc.c) | 0 | ||||
-rw-r--r-- | src/libs/m4a_2.c (renamed from src/m4a_2.c) | 0 | ||||
-rw-r--r-- | src/libs/m4a_4.c (renamed from src/m4a_4.c) | 0 | ||||
-rw-r--r-- | src/libs/m4a_tables.c (renamed from src/m4a_tables.c) | 0 | ||||
-rw-r--r-- | src/libs/siirtc.c (renamed from src/siirtc.c) | 0 | ||||
-rw-r--r-- | src/pokemon/learn_move.c (renamed from src/learn_move.c) | 0 | ||||
-rw-r--r-- | src/pokemon/mail.c (renamed from src/mail.c) | 0 | ||||
-rw-r--r-- | src/pokemon/mail_data.c (renamed from src/mail_data.c) | 0 | ||||
-rw-r--r-- | src/pokemon/mon_markings.c (renamed from src/mon_markings.c) | 0 | ||||
-rw-r--r-- | src/pokemon/pokeblock_feed.c (renamed from src/pokeblock_feed.c) | 6 | ||||
-rw-r--r-- | src/pokemon/pokedex.c (renamed from src/pokedex.c) | 105 | ||||
-rw-r--r-- | src/pokemon/pokedex_cry_screen.c (renamed from src/pokedex_cry_screen.c) | 0 | ||||
-rw-r--r-- | src/pokemon/pokemon_1.c (renamed from src/pokemon_1.c) | 0 | ||||
-rw-r--r-- | src/pokemon/pokemon_2.c (renamed from src/pokemon_2.c) | 0 | ||||
-rw-r--r-- | src/pokemon/pokemon_3.c (renamed from src/pokemon_3.c) | 24 | ||||
-rw-r--r-- | src/pokemon/pokemon_data.c (renamed from src/pokemon_data.c) | 0 | ||||
-rw-r--r-- | src/pokemon/pokemon_icon.c (renamed from src/pokemon_icon.c) | 0 | ||||
-rw-r--r-- | src/pokemon/pokemon_menu.c (renamed from src/pokemon_menu.c) | 0 | ||||
-rw-r--r-- | src/pokemon/pokemon_size_record.c (renamed from src/pokemon_size_record.c) | 0 | ||||
-rw-r--r-- | src/pokemon/pokemon_storage_system.c (renamed from src/pokemon_storage_system.c) | 0 | ||||
-rw-r--r-- | src/pokemon/pokemon_summary_screen.c (renamed from src/pokemon_summary_screen.c) | 0 | ||||
-rw-r--r-- | src/rom6.c | 2 | ||||
-rw-r--r-- | src/rom_8077ABC.c | 204 | ||||
-rw-r--r-- | src/scene/berry_blender.c (renamed from src/berry_blender.c) | 6 | ||||
-rw-r--r-- | src/scene/contest_painting.c (renamed from src/contest_painting.c) | 4 | ||||
-rw-r--r-- | src/scene/credits.c (renamed from src/credits.c) | 4 | ||||
-rw-r--r-- | src/scene/cute_sketch.c (renamed from src/cute_sketch.c) | 0 | ||||
-rw-r--r-- | src/scene/egg_hatch.c (renamed from src/egg_hatch.c) | 12 | ||||
-rw-r--r-- | src/scene/evolution_graphics.c (renamed from src/evolution_graphics.c) | 0 | ||||
-rw-r--r-- | src/scene/evolution_scene.c (renamed from src/evolution_scene.c) | 26 | ||||
-rw-r--r-- | src/scene/hall_of_fame.c (renamed from src/hall_of_fame.c) | 2 | ||||
-rw-r--r-- | src/scene/intro.c (renamed from src/intro.c) | 2 | ||||
-rwxr-xr-x | src/scene/intro_credits_graphics.c (renamed from src/intro_credits_graphics.c) | 0 | ||||
-rw-r--r-- | src/scene/new_game.c (renamed from src/new_game.c) | 2 | ||||
-rw-r--r-- | src/scene/title_screen.c (renamed from src/title_screen.c) | 0 | ||||
-rw-r--r-- | src/script_pokemon_util_80C4BF0.c | 6 | ||||
-rw-r--r-- | src/sound_check_menu.c | 2199 | ||||
-rw-r--r-- | src/unused_8124F94.c | 6 |
188 files changed, 2693 insertions, 3967 deletions
diff --git a/src/battle_2.c b/src/battle/battle_2.c index 3cdea07be..770aa1209 100644 --- a/src/battle_2.c +++ b/src/battle/battle_2.c @@ -1924,14 +1924,14 @@ void sub_8011384(void) } if (GetBankSide(gActiveBank) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); } else { if (GetBankSide(gActiveBank) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) { - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); EmitLoadPokeSprite(0); MarkBufferBankForExecution(gActiveBank); } @@ -2086,7 +2086,7 @@ void bc_801362C(void) { if (GetBankSide(gActiveBank) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); } gBattleMainFunc = sub_8011970; } @@ -2168,7 +2168,7 @@ void BattleBeginFirstTurn(void) { for (j = i + 1; j < gNoOfAllBanks; j++) { - if (b_first_side(gTurnOrder[i], gTurnOrder[j], 1) != 0) + if (GetWhoStrikesFirst(gTurnOrder[i], gTurnOrder[j], 1) != 0) sub_8012FBC(i, j); } } diff --git a/src/battle_3.c b/src/battle/battle_3.c index f04e722c4..b59757f00 100644 --- a/src/battle_3.c +++ b/src/battle/battle_3.c @@ -378,7 +378,7 @@ u8 UpdateTurnCounters(void) s32 j; for (j = i + 1; j < gNoOfAllBanks; j++) { - if (b_first_side(gTurnOrder[i], gTurnOrder[j], 0)) + if (GetWhoStrikesFirst(gTurnOrder[i], gTurnOrder[j], 0)) sub_8012FBC(i, j); } } diff --git a/src/battle_4.c b/src/battle/battle_4.c index 65ea765cf..e4a4895b5 100644 --- a/src/battle_4.c +++ b/src/battle/battle_4.c @@ -93,6 +93,7 @@ extern u16 gUnknown_02024C2C[4]; //last used moves 2, used by sketch extern u16 gUnknown_030041B0; extern u16 gUnknown_02024C4C[4]; //last used moves by banks, another one extern u8 gCurrentMoveTurn; +extern u16 gTrappingMoves[]; //extern functions u8 AtkCanceller_UnableToUseMove(void); @@ -122,7 +123,7 @@ bool8 IsTradedMon(struct Pokemon*); void b_movescr_stack_pop_cursor(void); void SwitchInClearStructs(void); u8* ConvertIntToDecimalStringN(u8*, s32, u8, u8); -u8 GetNationalPokedexFlag(u16 nationalNum, u8 caseID); +u8 GetSetPokedexFlag(u16 nationalNum, u8 caseID); u16 SpeciesToNationalPokedexNum(u16 species); u8 sub_803FC34(u8 bank); u16 sub_803FBFC(u8 a); @@ -199,6 +200,9 @@ extern u8 BattleScript_TrainerBallBlock[]; extern u8 BattleScript_WallyBallThrow[]; extern u8 BattleScript_SuccessBallThrow[]; extern u8 BattleScript_ShakeBallThrow[]; +extern u8 BattleScript_AllStatsUp[]; +extern u8 BattleScript_AtkDefDown[]; +extern u8 BattleScript_SAtkDown2[]; extern u8 gUnknown_081D919F[]; //spikes1 extern u8 gUnknown_081D9171[]; //spikes2 @@ -211,6 +215,11 @@ extern u8 BattleScript_CastformChange[]; extern u8 gUnknown_081D9834[]; extern u8 gUnknown_081D90FC[]; //bs random switchout extern u8 gUnknown_081D95DB[]; //bs payday money give +extern u8 gUnknown_081D8C58[]; +extern u8 gUnknown_081D8C65[]; +extern u8 gUnknown_081D9156[]; +extern u8 gUnknown_081D9468[]; + //useful macros //read via orr @@ -408,6 +417,7 @@ static void atk85_stockpile(void); static void atk86_stockpiletobasedamage(void); static void atk87_stockpiletohpheal(void); static void atk88_negativedamage(void); +static u8 ChangeStatBuffs(s8, u8, u8, u8*); static void atk89_statbuffchange(void); static void atk8A_normalisebuffs(void); static void atk8B_setbide(void); @@ -862,19 +872,19 @@ static const u32 gStatusFlagsForMoveEffects[] = 0x00000000 }; -extern const u8 BattleScript_1D963E[]; -extern const u8 BattleScript_1D965A[]; -extern const u8 BattleScript_1D9669[]; -extern const u8 BattleScript_1D9678[]; -extern const u8 BattleScript_1D9687[]; -extern const u8 BattleScript_1D969D[]; -extern const u8 BattleScript_1D96BA[]; -extern const u8 BattleScript_1D9696[]; -extern const u8 BattleScript_1D96B1[]; -extern const u8 BattleScript_1D96AA[]; -extern const u8 BattleScript_1D96C8[]; +extern u8 BattleScript_1D963E[]; +extern u8 BattleScript_1D965A[]; +extern u8 BattleScript_1D9669[]; +extern u8 BattleScript_1D9678[]; +extern u8 BattleScript_1D9687[]; +extern u8 BattleScript_1D969D[]; +extern u8 BattleScript_1D96BA[]; +extern u8 BattleScript_1D9696[]; +extern u8 BattleScript_1D96B1[]; +extern u8 BattleScript_1D96AA[]; +extern u8 BattleScript_1D96C8[]; -const u8* const gMoveEffectBS_Ptrs[] = +u8* const gMoveEffectBS_Ptrs[] = { BattleScript_1D963E, BattleScript_1D963E, @@ -947,7 +957,7 @@ static const u16 sUnknown_081FACFE[] = //banned moves to copy 0xFFFF }; -static const u8 sUnknown_081FAD26[] = +static const u8 sUnknown_081FAD26[] = //reversal+flail HP thresholds to power { 1, 200, 4, 150, @@ -1445,73 +1455,71 @@ static void atk06_typecalc(void) { int i = 0; u8 move_type; - if (gCurrentMove == MOVE_STRUGGLE) {goto END;} - - if (BATTLE_STRUCT->dynamicMoveType) - move_type = BATTLE_STRUCT->dynamicMoveType & 0x3F; - else - move_type = gBattleMoves[gCurrentMove].type; - - //check stab - if (gBattleMons[gBankAttacker].type1 == move_type || gBattleMons[gBankAttacker].type2 == move_type) + if (gCurrentMove != MOVE_STRUGGLE) { - gBattleMoveDamage = gBattleMoveDamage * 15; - gBattleMoveDamage = gBattleMoveDamage / 10; - } + if (BATTLE_STRUCT->dynamicMoveType) + move_type = BATTLE_STRUCT->dynamicMoveType & 0x3F; + else + move_type = gBattleMoves[gCurrentMove].type; - if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) - { - gLastUsedAbility = gBattleMons[gBankTarget].ability; - gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); - gMoveHitWith[gBankTarget] = 0; - gUnknown_02024C44[gBankTarget] = 0; - gBattleCommunication[6] = move_type; - RecordAbilityBattle(gBankTarget, gLastUsedAbility); - } - else - { - while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) + //check stab + if (gBattleMons[gBankAttacker].type1 == move_type || gBattleMons[gBankAttacker].type2 == move_type) { - if (gTypeEffectiveness[i] == TYPE_FORESIGHT) - { - if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) - break; - i += 3; - continue; - } + gBattleMoveDamage = gBattleMoveDamage * 15; + gBattleMoveDamage = gBattleMoveDamage / 10; + } - else if (gTypeEffectiveness[i] == move_type) + if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND) + { + gLastUsedAbility = gBattleMons[gBankTarget].ability; + gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); + gMoveHitWith[gBankTarget] = 0; + gUnknown_02024C44[gBankTarget] = 0; + gBattleCommunication[6] = move_type; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + else + { + while (gTypeEffectiveness[i]!= TYPE_ENDTABLE) { - //check type1 - if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1) - ModulateDmgByType(gTypeEffectiveness[i + 2]); - //check type2 - if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 && - gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2) - ModulateDmgByType(gTypeEffectiveness[i + 2]); + if (gTypeEffectiveness[i] == TYPE_FORESIGHT) + { + if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) + break; + i += 3; + continue; + } + + else if (gTypeEffectiveness[i] == move_type) + { + //check type1 + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1) + ModulateDmgByType(gTypeEffectiveness[i + 2]); + //check type2 + if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 && + gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2) + ModulateDmgByType(gTypeEffectiveness[i + 2]); + } + i += 3; } - i += 3; } - } - if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2 - && (!(gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE) || ((gBattleMoveFlags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) - && gBattleMoves[gCurrentMove].power) - { - gLastUsedAbility = ABILITY_WONDER_GUARD; - gBattleMoveFlags |= MOVESTATUS_MISSED; - gMoveHitWith[gBankTarget] = 0; - gUnknown_02024C44[gBankTarget] = 0; - gBattleCommunication[6] = 3; - RecordAbilityBattle(gBankTarget, gLastUsedAbility); + if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2 + && (!(gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE) || ((gBattleMoveFlags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) + && gBattleMoves[gCurrentMove].power) + { + gLastUsedAbility = ABILITY_WONDER_GUARD; + gBattleMoveFlags |= MOVESTATUS_MISSED; + gMoveHitWith[gBankTarget] = 0; + gUnknown_02024C44[gBankTarget] = 0; + gBattleCommunication[6] = 3; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); + } + if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) + gProtectStructs[gBankAttacker].notEffective = 1; } - if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) - gProtectStructs[gBankAttacker].notEffective = 1; - - END: - gBattlescriptCurrInstr++; + gBattlescriptCurrInstr++; } - static void b_wonderguard_and_levitate(void) { u8 flags = 0; @@ -1620,7 +1628,6 @@ static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) //a literal c } } -#ifdef NONMATCHING u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def) { int i = 0; @@ -1662,7 +1669,7 @@ u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def) ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); //check type2 if (gTypeEffectiveness[i + 1] == gBattleMons[bank_def].type2 && - gBattleMons[bank_def].type1 != gBattleMons[bank_def].type2) + gBattleMons[gBankTarget /* what the christ */].type1 != gBattleMons[bank_def].type2) ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags); } i += 3; @@ -1678,254 +1685,6 @@ u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def) } return flags; } -#else -__attribute__((naked)) -u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x14\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r10, r0\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - str r1, [sp, 0x4]\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - mov r9, r2\n\ - movs r7, 0\n\ - mov r0, sp\n\ - strb r7, [r0]\n\ - mov r0, r10\n\ - cmp r0, 0xA5\n\ - bne _0801D2AE\n\ - movs r0, 0\n\ - b _0801D43A\n\ - _0801D2AE:\n\ - ldr r1, _0801D31C @ =gBattleMoves\n\ - mov r3, r10\n\ - lsls r2, r3, 1\n\ - adds r0, r2, r3\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x2]\n\ - str r0, [sp, 0x8]\n\ - ldr r1, _0801D320 @ =gBattleMons\n\ - movs r0, 0x58\n\ - ldr r3, [sp, 0x4]\n\ - muls r0, r3\n\ - adds r3, r0, r1\n\ - adds r0, r3, 0\n\ - adds r0, 0x21\n\ - ldrb r0, [r0]\n\ - str r2, [sp, 0xC]\n\ - adds r5, r1, 0\n\ - ldr r1, [sp, 0x8]\n\ - cmp r0, r1\n\ - beq _0801D2E2\n\ - adds r0, r3, 0\n\ - adds r0, 0x22\n\ - ldrb r0, [r0]\n\ - cmp r0, r1\n\ - bne _0801D2F4\n\ - _0801D2E2:\n\ - ldr r4, _0801D324 @ =gBattleMoveDamage\n\ - ldr r1, [r4]\n\ - lsls r0, r1, 4\n\ - subs r0, r1\n\ - str r0, [r4]\n\ - movs r1, 0xA\n\ - bl __divsi3\n\ - str r0, [r4]\n\ - _0801D2F4:\n\ - movs r0, 0x58\n\ - mov r2, r9\n\ - muls r2, r0\n\ - adds r0, r2, 0\n\ - adds r0, r5\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x1A\n\ - bne _0801D328\n\ - ldr r3, [sp, 0x8]\n\ - cmp r3, 0x4\n\ - bne _0801D328\n\ - movs r1, 0x9\n\ - mov r0, sp\n\ - ldrb r0, [r0]\n\ - orrs r0, r1\n\ - mov r1, sp\n\ - strb r0, [r1]\n\ - b _0801D3DC\n\ - .align 2, 0\n\ - _0801D31C: .4byte gBattleMoves\n\ - _0801D320: .4byte gBattleMons\n\ - _0801D324: .4byte gBattleMoveDamage\n\ - _0801D328:\n\ - ldr r1, _0801D344 @ =gTypeEffectiveness\n\ - adds r0, r7, r1\n\ - ldrb r0, [r0]\n\ - adds r2, r1, 0\n\ - cmp r0, 0xFF\n\ - beq _0801D3DC\n\ - cmp r0, 0xFE\n\ - bne _0801D34C\n\ - movs r0, 0x58\n\ - mov r1, r9\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - b _0801D3CA\n\ - .align 2, 0\n\ - _0801D344: .4byte gTypeEffectiveness\n\ - _0801D348:\n\ - adds r7, 0x3\n\ - b _0801D3B6\n\ - _0801D34C:\n\ - ldr r6, _0801D44C @ =gTypeEffectiveness\n\ - adds r0, r7, r6\n\ - ldrb r0, [r0]\n\ - ldr r2, [sp, 0x8]\n\ - cmp r0, r2\n\ - bne _0801D3B0\n\ - adds r1, r7, 0x1\n\ - adds r1, r6\n\ - ldr r3, _0801D450 @ =gBattleMons\n\ - mov r8, r3\n\ - movs r3, 0x58\n\ - mov r0, r9\n\ - muls r0, r3\n\ - mov r2, r8\n\ - adds r5, r0, r2\n\ - adds r0, r5, 0\n\ - adds r0, 0x21\n\ - ldrb r4, [r1]\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - bne _0801D388\n\ - adds r0, r7, 0x2\n\ - adds r0, r6\n\ - ldrb r0, [r0]\n\ - mov r1, r10\n\ - mov r2, sp\n\ - str r3, [sp, 0x10]\n\ - bl ModulateDmgByType2\n\ - ldr r3, [sp, 0x10]\n\ - _0801D388:\n\ - adds r0, r5, 0\n\ - adds r0, 0x22\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - bne _0801D3B0\n\ - ldr r0, _0801D454 @ =gBankTarget\n\ - ldrb r0, [r0]\n\ - muls r0, r3\n\ - add r0, r8\n\ - adds r0, 0x21\n\ - ldrb r0, [r0]\n\ - cmp r0, r4\n\ - beq _0801D3B0\n\ - adds r0, r7, 0x2\n\ - adds r0, r6\n\ - ldrb r0, [r0]\n\ - mov r1, r10\n\ - mov r2, sp\n\ - bl ModulateDmgByType2\n\ - _0801D3B0:\n\ - adds r7, 0x3\n\ - ldr r5, _0801D450 @ =gBattleMons\n\ - ldr r2, _0801D44C @ =gTypeEffectiveness\n\ - _0801D3B6:\n\ - adds r0, r7, r2\n\ - ldrb r0, [r0]\n\ - cmp r0, 0xFF\n\ - beq _0801D3DC\n\ - cmp r0, 0xFE\n\ - bne _0801D34C\n\ - movs r0, 0x58\n\ - mov r3, r9\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - _0801D3CA:\n\ - adds r1, r5, 0\n\ - adds r1, 0x50\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x80\n\ - lsls r1, 22\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0801D348\n\ - _0801D3DC:\n\ - movs r0, 0x58\n\ - mov r1, r9\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - adds r0, r5\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x19\n\ - bne _0801D436\n\ - mov r0, sp\n\ - ldrb r1, [r0]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0801D436\n\ - ldr r0, [sp, 0x4]\n\ - mov r1, r10\n\ - bl AttacksThisTurn\n\ - lsls r0, 24\n\ - lsrs r1, r0, 24\n\ - cmp r1, 0x2\n\ - bne _0801D436\n\ - mov r0, sp\n\ - ldrb r3, [r0]\n\ - adds r0, r1, 0\n\ - ands r0, r3\n\ - cmp r0, 0\n\ - beq _0801D41E\n\ - movs r0, 0x6\n\ - ands r0, r3\n\ - cmp r0, 0x6\n\ - bne _0801D436\n\ - _0801D41E:\n\ - ldr r0, _0801D458 @ =gBattleMoves\n\ - ldr r1, [sp, 0xC]\n\ - add r1, r10\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - cmp r0, 0\n\ - beq _0801D436\n\ - mov r0, sp\n\ - movs r1, 0x1\n\ - orrs r1, r3\n\ - strb r1, [r0]\n\ - _0801D436:\n\ - mov r0, sp\n\ - ldrb r0, [r0]\n\ - _0801D43A:\n\ - add sp, 0x14\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ - _0801D44C: .4byte gTypeEffectiveness\n\ - _0801D450: .4byte gBattleMons\n\ - _0801D454: .4byte gBankTarget\n\ - _0801D458: .4byte gBattleMoves\n\ - .syntax divided\n"); -} -#endif // NONMATCHING u8 AI_TypeCalc(u16 move, u16 species, u8 ability) { @@ -2510,7 +2269,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) #define EffectAffectsUser 0x40 register u8 certain asm("r5") = certainArg; register bool32 StatusChanged asm("r10") = 0; - register int AffectsUser asm("r6") = 0; //0x40 otherwise + register int AffectsUser asm("r6") = 0; //0x40 otherwise bool32 NoSunCanFreeze = 1; if (gBattleCommunication[MOVE_EFFECT_BYTE] & EffectAffectsUser) @@ -2526,16 +2285,16 @@ void SetMoveEffect(bool8 primary, u8 certainArg) BATTLE_STRUCT->scriptingActive = gBankAttacker; } - if (gBattleMons[gEffectBank].ability_id == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && + if (gBattleMons[gEffectBank].ability == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 9) {gBattlescriptCurrInstr++; return;} - if (gSideAffecting[get_bank_identity(gEffectBank) & 1] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && + if (gSideAffecting[GetBankIdentity(gEffectBank) & 1] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 7) {gBattlescriptCurrInstr++; return;} //make sure at least ONE HP except payday and thief - if (gBattleMons[gEffectBank].current_hp == 0 && gBattleCommunication[MOVE_EFFECT_BYTE] != 0xB && gBattleCommunication[MOVE_EFFECT_BYTE] != 0x1F) + if (gBattleMons[gEffectBank].hp == 0 && gBattleCommunication[MOVE_EFFECT_BYTE] != 0xB && gBattleCommunication[MOVE_EFFECT_BYTE] != 0x1F) {gBattlescriptCurrInstr++; return;} if (gBattleMons[gEffectBank].status2 & STATUS2_SUBSTITUTE && AffectsUser != EffectAffectsUser) @@ -2547,81 +2306,82 @@ void SetMoveEffect(bool8 primary, u8 certainArg) { case STATUS_SLEEP: //check active uproar - if (gBattleMons[gEffectBank].ability_id != ABILITY_SOUNDPROOF) + if (gBattleMons[gEffectBank].ability != ABILITY_SOUNDPROOF) { for (gActiveBank = 0; gActiveBank < gNoOfAllBanks && !(gBattleMons[gActiveBank].status2 & STATUS2_UPROAR); gActiveBank++) {} } else gActiveBank = gNoOfAllBanks; - if (gBattleMons[gEffectBank].status) {break;} + if (gBattleMons[gEffectBank].status1) {break;} if (gActiveBank != gNoOfAllBanks) {break;} //nice way of checking uproar... - if (gBattleMons[gEffectBank].ability_id == ABILITY_VITAL_SPIRIT) {break;} - if (gBattleMons[gEffectBank].ability_id == ABILITY_INSOMNIA) {break;} + if (gBattleMons[gEffectBank].ability == ABILITY_VITAL_SPIRIT) {break;} + if (gBattleMons[gEffectBank].ability == ABILITY_INSOMNIA) {break;} - b_cancel_multi_turn_move_maybe(gEffectBank); + CancelMultiTurnMoves(gEffectBank); StatusChanged = 1; break; case STATUS_POISON: - if (gBattleMons[gEffectBank].ability_id == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80)) + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80)) { gLastUsedAbility = ABILITY_IMMUNITY; - RecordAbility(gEffectBank, ABILITY_IMMUNITY); + RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY); b_movescr_stack_push(gBattlescriptCurrInstr + 1); //_0801E664: - gBattlescriptCurrInstr = BS_PSN_PREVENTION; + gBattlescriptCurrInstr = BattleScript_PSNPrevention; if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) { - gBattleCommunication.multistring_chooser = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); return; } else - {gBattleCommunication.multistring_chooser = 0; return;} + {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;} } if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL) && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80)) { b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_PSN_PREVENTION; - gBattleCommunication.multistring_chooser = 2; + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; return; } if (gBattleMons[gEffectBank].type1 == TYPE_POISON) {break;} if (gBattleMons[gEffectBank].type2 == TYPE_POISON) {break;} if (gBattleMons[gEffectBank].type1 == TYPE_STEEL) {break;} if (gBattleMons[gEffectBank].type2 == TYPE_STEEL) {break;} - if (gBattleMons[gEffectBank].status) {break;} - if (gBattleMons[gEffectBank].ability_id == ABILITY_IMMUNITY) {break;} + if (gBattleMons[gEffectBank].status1) {break;} + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY) {break;} + StatusChanged = 1; break; case STATUS_BURN: - if (gBattleMons[gEffectBank].ability_id == ABILITY_WATER_VEIL && (primary == 1 || certain == 0x80)) + if (gBattleMons[gEffectBank].ability == ABILITY_WATER_VEIL && (primary == 1 || certain == 0x80)) { gLastUsedAbility = ABILITY_WATER_VEIL; - RecordAbility(gEffectBank, ABILITY_WATER_VEIL); + RecordAbilityBattle(gEffectBank, ABILITY_WATER_VEIL); b_movescr_stack_push(gBattlescriptCurrInstr + 1); //_0801E664: - gBattlescriptCurrInstr = BS_BRN_PREVENTION; + gBattlescriptCurrInstr = BattleScript_BRNPrevention; if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) { - gBattleCommunication.multistring_chooser = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); return; } else - {gBattleCommunication.multistring_chooser = 0; return;} + {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;} } if ((gBattleMons[gEffectBank].type1 == TYPE_FIRE || gBattleMons[gEffectBank].type2 == TYPE_FIRE) && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80)) { b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_BRN_PREVENTION; - gBattleCommunication.multistring_chooser = 2; + gBattlescriptCurrInstr = BattleScript_BRNPrevention; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; return; } if (gBattleMons[gEffectBank].type1 == TYPE_FIRE) {break;} if (gBattleMons[gEffectBank].type2 == TYPE_FIRE) {break;} - if (gBattleMons[gEffectBank].ability_id == ABILITY_WATER_VEIL) {break;} + if (gBattleMons[gEffectBank].ability == ABILITY_WATER_VEIL) {break;} if (gBattleMons[gEffectBank].status1 == 0) {break;} StatusChanged = 1; break; @@ -2629,70 +2389,70 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY) {NoSunCanFreeze = 0;} if (gBattleMons[gEffectBank].type1 == TYPE_ICE) {break;} if (gBattleMons[gEffectBank].type2 == TYPE_ICE) {break;} - if (gBattleMons[gEffectBank].status) {break;} + if (gBattleMons[gEffectBank].status1) {break;} if (NoSunCanFreeze == 0) {break;} - if (gBattleMons[gEffectBank].ability_id == ABILITY_MAGMA_ARMOR) {break;} + if (gBattleMons[gEffectBank].ability == ABILITY_MAGMA_ARMOR) {break;} - b_cancel_multi_turn_move_maybe(gEffectBank); + CancelMultiTurnMoves(gEffectBank); StatusChanged = 1; break; case STATUS_PARALYSIS: - if (gBattleMons[gEffectBank].ability_id == ABILITY_LIMBER) + if (gBattleMons[gEffectBank].ability == ABILITY_LIMBER) { if ((primary == 1 || certain == 0x80)) { gLastUsedAbility = ABILITY_LIMBER; - RecordAbility(gEffectBank, ABILITY_LIMBER); + RecordAbilityBattle(gEffectBank, ABILITY_LIMBER); b_movescr_stack_push(gBattlescriptCurrInstr + 1); //_0801E664: - gBattlescriptCurrInstr = BS_PRLZ_PREVENTION; + gBattlescriptCurrInstr = BattleScript_PRLZPrevention; if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) { - gBattleCommunication.multistring_chooser = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); return; } else - {gBattleCommunication.multistring_chooser = 0; return;} + {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;} } else {break;} } - if (gBattleMons[gEffectBank].status) {break;} + if (gBattleMons[gEffectBank].status1) {break;} StatusChanged = 1; break; case STATUS_TOXIC_POISON: - if (gBattleMons[gEffectBank].ability_id == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80)) + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80)) { gLastUsedAbility = ABILITY_IMMUNITY; - RecordAbility(gEffectBank, ABILITY_IMMUNITY); + RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY); b_movescr_stack_push(gBattlescriptCurrInstr + 1); //_0801E664: - gBattlescriptCurrInstr = BS_PSN_PREVENTION; + gBattlescriptCurrInstr = BattleScript_PSNPrevention; if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) { - gBattleCommunication.multistring_chooser = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); return; } else - {gBattleCommunication.multistring_chooser = 0; return;} + {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;} } if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL) && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80)) { b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_PSN_PREVENTION; - gBattleCommunication.multistring_chooser = 2; + gBattlescriptCurrInstr = BattleScript_PSNPrevention; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; return; } - if (gBattleMons[gEffectBank].status) {break;} + if (gBattleMons[gEffectBank].status1) {break;} if (gBattleMons[gEffectBank].type1 != TYPE_POISON && gBattleMons[gEffectBank].type2 != TYPE_POISON && gBattleMons[gEffectBank].type1 != TYPE_STEEL && gBattleMons[gEffectBank].type2 != TYPE_STEEL) { - if (gBattleMons[gEffectBank].ability_id == ABILITY_IMMUNITY) {break;} - gBattleMons[gEffectBank].status1 |= ~(STATUS_POISON); //TODO: fix OR to AND + if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY) {break;} + gBattleMons[gEffectBank].status1 &= ~(0x9); //This gets (correctly) optimized out... StatusChanged = 1; break; } @@ -2707,20 +2467,20 @@ void SetMoveEffect(bool8 primary, u8 certainArg) gBattleMons[gEffectBank].status1 |= ((Random() & 3) + 2); else gBattleMons[gEffectBank].status1 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; - gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; gActiveBank = gEffectBank; - bb2_setattributes_in_battle(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status); - mark_buffer_bank_for_execution(gActiveBank); + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status1); + MarkBufferBankForExecution(gActiveBank); if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) { - gBattleCommunication.multistring_chooser = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD); } else - gBattleCommunication.multistring_chooser = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; if (gBattleCommunication[MOVE_EFFECT_BYTE] == 2 || gBattleCommunication[MOVE_EFFECT_BYTE] == 6 || gBattleCommunication[MOVE_EFFECT_BYTE] == 5 || gBattleCommunication[MOVE_EFFECT_BYTE] == 3) { - BATTLE_STRUCT->SynchroniseEffect = gBattleCommunication[MOVE_EFFECT_BYTE]; + BATTLE_STRUCT->synchroniseEffect = gBattleCommunication[MOVE_EFFECT_BYTE]; gHitMarker |= HITMARKER_SYNCHRONISE_EFFECT; } return; @@ -2738,22 +2498,22 @@ void SetMoveEffect(bool8 primary, u8 certainArg) switch (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) { case 7: //confusion - if (gBattleMons[gEffectBank].ability_id == ABILITY_OWN_TEMPO) + if (gBattleMons[gEffectBank].ability == ABILITY_OWN_TEMPO) {gBattlescriptCurrInstr++; return;} if (gBattleMons[gEffectBank].status2 & STATUS2_CONFUSION) {gBattlescriptCurrInstr++; return;} gBattleMons[gEffectBank].status2 |= (((Random()) % 0x4)) + 2; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case 8: //flinch - if (gBattleMons[gEffectBank].ability_id == ABILITY_INNER_FOCUS) + if (gBattleMons[gEffectBank].ability == ABILITY_INNER_FOCUS) { if (primary == 1 || certain == 0x80) { gLastUsedAbility = ABILITY_INNER_FOCUS; - RecordAbility(gEffectBank, ABILITY_INNER_FOCUS); - gBattlescriptCurrInstr = BS_FLINCH_PREVENTION; + RecordAbilityBattle(gEffectBank, ABILITY_INNER_FOCUS); + gBattlescriptCurrInstr = BattleScript_FlinchPrevention; return; } else @@ -2773,21 +2533,21 @@ void SetMoveEffect(bool8 primary, u8 certainArg) gLockedMove[gEffectBank] = gCurrentMove; gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 4; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case 11: //pay day - if (!(get_bank_identity(gEffectBank) & 1)) + if (!(GetBankIdentity(gBankAttacker) & 1)) { u16 PayDay = gPaydayMoney; - gPaydayMoney += (gBattleMons[gEffectBank].level * 5); + gPaydayMoney += (gBattleMons[gBankAttacker].level * 5); if (PayDay > gPaydayMoney) gPaydayMoney = 0xFFFF; } b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case 9: //tri attack - if (gBattleMons[gEffectBank].status) + if (gBattleMons[gEffectBank].status1) {gBattlescriptCurrInstr++; return;} gBattleCommunication[MOVE_EFFECT_BYTE] = Random() % 3 + 3; SetMoveEffect(0, 0); @@ -2795,73 +2555,73 @@ void SetMoveEffect(bool8 primary, u8 certainArg) case 12: //charging move gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS; gLockedMove[gEffectBank] = gCurrentMove; - gProtectStructs[gEffectBank].flag1_chargingturn = 1; + gProtectStructs[gEffectBank].chargingTurn = 1; gBattlescriptCurrInstr++; break; case 13: //wrap if (gBattleMons[gEffectBank].status2 & STATUS2_WRAPPED) {gBattlescriptCurrInstr++; return;} gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 0xD; - BATTLE_STRUCT->WrappedMove1[gEffectBank] = gCurrentMove; - BATTLE_STRUCT->WrappedMove2[gEffectBank] = gCurrentMove >> 8; - BATTLE_STRUCT->WrappedBy[gEffectBank] = gBankAttacker; + BATTLE_STRUCT->wrappedMove[gEffectBank*2] = (u8)gCurrentMove; + (1 + BATTLE_STRUCT->wrappedMove)[gEffectBank*2] = gCurrentMove >> 8; //don't ask. + BATTLE_STRUCT->wrappedBy[gEffectBank] = gBankAttacker; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; - gBattleCommunication.multistring_chooser = 0; - while (gBattleCommunication.multistring_chooser <= 4 - && gCurrentMove != gTrappingMoves[gBattleCommunication.multistring_chooser]) - gBattleCommunication.multistring_chooser++; + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + while (gBattleCommunication[MULTISTRING_CHOOSER] <= 4 + && gCurrentMove != gTrappingMoves[gBattleCommunication[MULTISTRING_CHOOSER]]) + gBattleCommunication[MULTISTRING_CHOOSER]++; break; - case 14: //recoil + case 14: //25% recoil gBattleMoveDamage = (gHP_dealt) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case 15 ... 21: //stat + 1 - if (ChangeStats(0x10, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xF2, certain, 0)) {gBattlescriptCurrInstr++;} + if (ChangeStatBuffs(0x10, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xF2, certain, 0)) {gBattlescriptCurrInstr++;} else { BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; //TODO: the arg ptr is wrong by one BATTLE_STRUCT->animArg2 = 0; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_STAT_UP; + gBattlescriptCurrInstr = BattleScript_StatUp; } break; case 22 ... 28: //stat - 1 - if (ChangeStats(~(0x6f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xEB, certain, 0)) {gBattlescriptCurrInstr++;} //TODO: negation doesnt work correctly + if (ChangeStatBuffs(~(0x6f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xEB, certain, 0)) {gBattlescriptCurrInstr++;} //TODO: negation doesnt work correctly else { BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; BATTLE_STRUCT->animArg2 = 0; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_STAT_DOWN; + gBattlescriptCurrInstr = BattleScript_StatDown; } break; case 39 ... 45: //stat + 2 - if (ChangeStats(0x20, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xDA, certain, 0)) {gBattlescriptCurrInstr++;} + if (ChangeStatBuffs(0x20, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xDA, certain, 0)) {gBattlescriptCurrInstr++;} else { BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; BATTLE_STRUCT->animArg2 = 0; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_STAT_UP; + gBattlescriptCurrInstr = BattleScript_StatUp; } break; case 46 ... 52: //stat - 2 - if (ChangeStats(~(0x5f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xD3, certain, 0)) {gBattlescriptCurrInstr++;} + if (ChangeStatBuffs(~(0x5f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xD3, certain, 0)) {gBattlescriptCurrInstr++;} else { BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; BATTLE_STRUCT->animArg2 = 0; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_STAT_DOWN; + gBattlescriptCurrInstr = BattleScript_StatDown; } break; case 29: //recharge gBattleMons[gEffectBank].status2 |= STATUS2_RECHARGE; - gDisableStructs[gEffectBank].recharge_counter = 2; + gDisableStructs[gEffectBank].rechargeCounter = 2; gLockedMove[gEffectBank] = gCurrentMove; gBattlescriptCurrInstr++; break; @@ -2871,83 +2631,85 @@ void SetMoveEffect(bool8 primary, u8 certainArg) break; case 31: //item steal { - u8 side = battle_side_get_owner(gBankAttacker); - if (battle_side_get_owner(gBankAttacker) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400) + u8 side = GetBankSide(gBankAttacker); + if (GetBankSide(gBankAttacker) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400) {gBattlescriptCurrInstr++; return;} - if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400 && (gWishFutureKnock.KnockedOff[side] & gBitTable[gBattlePartyID[gBankAttacker]])) + if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400 && (gWishFutureKnock.knockedOffPokes[side] & gBitTable[gBattlePartyID[gBankAttacker]])) {gBattlescriptCurrInstr++; return;} - if (gBattleMons[gBankTarget].held_item && gBattleMons[gBankTarget].ability_id == ABILITY_STICKY_HOLD) + if (gBattleMons[gBankTarget].item && gBattleMons[gBankTarget].ability == ABILITY_STICKY_HOLD) { b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BS_NO_ITEMSTEAL; - gLastUsedAbility = gBattleMons[gBankTarget].ability_id; - RecordAbility(gBankTarget, gLastUsedAbility); + gBattlescriptCurrInstr = BattleScript_NoItemSteal; + gLastUsedAbility = gBattleMons[gBankTarget].ability; + RecordAbilityBattle(gBankTarget, gLastUsedAbility); return; } - if (gBattleMons[gBankAttacker].held_item) + if (gBattleMons[gBankAttacker].item) {gBattlescriptCurrInstr++; return;} - if (gBattleMons[gBankTarget].held_item == ITEM_ENIGMA_BERRY) + if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) {gBattlescriptCurrInstr++; return;} - if (gBattleMons[gBankTarget].held_item == 0) + if (gBattleMons[gBankTarget].item == 0) {gBattlescriptCurrInstr++; return;} - CHANGED_HELDITEMS[gBankAttacker] = gLastUsedItem = gBattleMons[gBankTarget].held_item; - gBattleMons[gBankTarget].held_item = 0; + gLastUsedItem = gBattleMons[gBankTarget].item; + unk_2000000[gBankAttacker * 2 + 0x160cc] = gLastUsedItem; + gBattleMons[gBankTarget].item = 0; gActiveBank = gBankAttacker; - bb2_setattributes_in_battle(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem); - mark_buffer_bank_for_execution(gBankAttacker); + EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem); + MarkBufferBankForExecution(gBankAttacker); gActiveBank = gBankTarget; - bb2_setattributes_in_battle(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].held_item); - mark_buffer_bank_for_execution(gBankTarget); + EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].item); + MarkBufferBankForExecution(gBankTarget); b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_ITEMSTEAL; + gBattlescriptCurrInstr = BattleScript_ItemSteal; - STORE_CHOICEMOVE(gBankTarget, 0); + ewram[gBankTarget * 2 + 0x160e8] = 0; + //STORE_CHOICEMOVE(gBankTarget, 0); } break; case 32: //escape prevention gBattleMons[gBankTarget].status2 |= STATUS2_RECHARGE; - gDisableStructs[gBankTarget].BankPreventingEscape = gBankAttacker; + gDisableStructs[gBankTarget].bankPreventingEscape = gBankAttacker; gBattlescriptCurrInstr++; break; case 33: //nightmare gBattleMons[gBankTarget].status2 |= STATUS2_NIGHTMARE; gBattlescriptCurrInstr++; break; - case 34: + case 34: //ancientpower b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = gUnknown_081D9224; + gBattlescriptCurrInstr = BattleScript_AllStatsUp; return; case 35: //break free rapidspin b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_RAPIDSPINAWAY; + gBattlescriptCurrInstr = BattleScript_RapidSpinAway; return; case 36: //paralysis removal if (gBattleMons[gBankTarget].status1 & STATUS_PARALYSIS) { gBattleMons[gBankTarget].status1 &= ~(STATUS_PARALYSIS); gActiveBank = gBankTarget; - bb2_setattributes_in_battle(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status); - mark_buffer_bank_for_execution(gActiveBank); + EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1); + MarkBufferBankForExecution(gActiveBank); b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_PARALYSISHEALED; + gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal; } else {gBattlescriptCurrInstr++; return;} break; - case 37: // + case 37: //superpower b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = gUnknown_081D93FA; + gBattlescriptCurrInstr = BattleScript_AtkDefDown; return; - case 38: //recoil plus paralysis + case 38: //33% recoil gBattleMoveDamage = gHP_dealt / 3; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case 53: //thrash if (!(gBattleMons[gEffectBank].status2 & STATUS2_LOCK_CONFUSE)) @@ -2960,32 +2722,33 @@ void SetMoveEffect(bool8 primary, u8 certainArg) {gBattlescriptCurrInstr++; return;} break; case 54: //knock off - if (gBattleMons[gEffectBank].ability_id == ABILITY_STICKY_HOLD) + if (gBattleMons[gEffectBank].ability == ABILITY_STICKY_HOLD) { - if (gBattleMons[gEffectBank].held_item == 0) + if (gBattleMons[gEffectBank].item == 0) {gBattlescriptCurrInstr++; return;} gLastUsedAbility = ABILITY_STICKY_HOLD; - gBattlescriptCurrInstr = BS_STICKYHOLD_ACTIVATES; - RecordAbility(gEffectBank, ABILITY_STICKY_HOLD); + gBattlescriptCurrInstr = BattleScript_NoItemSteal; + RecordAbilityBattle(gEffectBank, ABILITY_STICKY_HOLD); return; } - if (gBattleMons[gEffectBank].held_item == 0) + if (gBattleMons[gEffectBank].item == 0) {gBattlescriptCurrInstr++; return;} else { - u8 side = battle_side_get_owner(gEffectBank); - gLastUsedItem = gBattleMons[gEffectBank].held_item; - gBattleMons[gEffectBank].held_item = 0; - gWishFutureKnock.KnockedOff[side] |= gBitTable[gBattlePartyID[gEffectBank]]; + u8 side = GetBankSide(gEffectBank); + gLastUsedItem = gBattleMons[gEffectBank].item; + gBattleMons[gEffectBank].item = 0; + gWishFutureKnock.knockedOffPokes[side] |= gBitTable[gBattlePartyID[gEffectBank]]; b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BS_KNOCKEDOFF; + gBattlescriptCurrInstr = BattleScript_KnockedOff; - STORE_CHOICEMOVE(gEffectBank, 0); + ewram[gEffectBank * 2 + 0x160e8] = 0; + //STORE_CHOICEMOVE(gEffectBank, 0); } break; - case 59: //overheat I guess, dont remember + case 59: //overheat b_movescr_stack_push(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = gUnknown_081D94B0; + gBattlescriptCurrInstr = BattleScript_SAtkDown2; return; } } @@ -4888,11 +4651,11 @@ _0801F3BC:\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ bl b_movescr_stack_push\n\ - ldr r0, _0801F3D0 @ =gUnknown_081D9224\n\ + ldr r0, _0801F3D0 @ =BattleScript_AllStatsUp\n\ b _0801F5F8\n\ .align 2, 0\n\ _0801F3CC: .4byte gBattlescriptCurrInstr\n\ -_0801F3D0: .4byte gUnknown_081D9224\n\ +_0801F3D0: .4byte BattleScript_AllStatsUp\n\ _0801F3D4:\n\ ldr r4, _0801F3E4 @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ @@ -4952,11 +4715,11 @@ _0801F44C:\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ bl b_movescr_stack_push\n\ - ldr r0, _0801F460 @ =gUnknown_081D93FA\n\ + ldr r0, _0801F460 @ =BattleScript_AtkDefDown\n\ b _0801F5F8\n\ .align 2, 0\n\ _0801F45C: .4byte gBattlescriptCurrInstr\n\ -_0801F460: .4byte gUnknown_081D93FA\n\ +_0801F460: .4byte BattleScript_AtkDefDown\n\ _0801F464:\n\ ldr r4, _0801F494 @ =gBattleMoveDamage\n\ ldr r0, _0801F498 @ =gHP_dealt\n\ @@ -5141,7 +4904,7 @@ _0801F5EC:\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ bl b_movescr_stack_push\n\ - ldr r0, _0801F610 @ =gUnknown_081D94B0\n\ + ldr r0, _0801F610 @ =BattleScript_SAtkDown2\n\ _0801F5F8:\n\ str r0, [r4]\n\ _0801F5FA:\n\ @@ -5155,11 +4918,12 @@ _0801F5FA:\n\ bx r0\n\ .align 2, 0\n\ _0801F60C: .4byte gBattlescriptCurrInstr\n\ -_0801F610: .4byte gUnknown_081D94B0\n\ +_0801F610: .4byte BattleScript_SAtkDown2\n\ .syntax divided\n"); } #endif // NONMATCHING + static void atk15_seteffectwithchancetarget(void) { u32 PercentChance; @@ -5208,425 +4972,107 @@ static void atk18_status_effect_clear(void) BATTLE_STRUCT->unk16112 = 0; } -//Fuck this, Maybe later -__attribute__((naked)) static void atk19_faint_pokemon(void) { - asm(".syntax unified\n\ -push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x4\n\ - ldr r0, _0801F81C @ =gBattlescriptCurrInstr\n\ - ldr r2, [r0]\n\ - ldrb r1, [r2, 0x2]\n\ - adds r6, r0, 0\n\ - cmp r1, 0\n\ - beq _0801F834\n\ - ldrb r0, [r2, 0x1]\n\ - bl GetBattleBank\n\ - ldr r5, _0801F820 @ =gActiveBank\n\ - strb r0, [r5]\n\ - ldr r2, _0801F824 @ =gHitMarker\n\ - ldr r1, _0801F828 @ =gBitTable\n\ - ldrb r0, [r5]\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldr r1, [r0]\n\ - lsls r1, 28\n\ - ldr r0, [r2]\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0801F7E6\n\ - b _0801FB1C\n\ -_0801F7E6:\n\ - ldr r1, [r6]\n\ - ldrb r4, [r1, 0x3]\n\ - ldrb r0, [r1, 0x4]\n\ - lsls r0, 8\n\ - orrs r4, r0\n\ - ldrb r0, [r1, 0x5]\n\ - lsls r0, 16\n\ - orrs r4, r0\n\ - ldrb r0, [r1, 0x6]\n\ - lsls r0, 24\n\ - orrs r4, r0\n\ - bl b_movescr_stack_pop_cursor\n\ - str r4, [r6]\n\ - ldrb r0, [r5]\n\ - bl GetBankSide\n\ - ldr r1, _0801F82C @ =gSideAffecting\n\ - lsls r0, 24\n\ - lsrs r0, 23\n\ - adds r0, r1\n\ - ldrh r2, [r0]\n\ - ldr r1, _0801F830 @ =0x0000fdff\n\ - ands r1, r2\n\ - strh r1, [r0]\n\ - b _0801FB22\n\ - .align 2, 0\n\ -_0801F81C: .4byte gBattlescriptCurrInstr\n\ -_0801F820: .4byte gActiveBank\n\ -_0801F824: .4byte gHitMarker\n\ -_0801F828: .4byte gBitTable\n\ -_0801F82C: .4byte gSideAffecting\n\ -_0801F830: .4byte 0x0000fdff\n\ -_0801F834:\n\ - ldrb r0, [r2, 0x1]\n\ - cmp r0, 0x1\n\ - bne _0801F85C\n\ - ldr r1, _0801F84C @ =gActiveBank\n\ - ldr r0, _0801F850 @ =gBankAttacker\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - ldr r0, _0801F854 @ =gBankTarget\n\ - ldrb r7, [r0]\n\ - ldr r4, _0801F858 @ =gUnknown_081D8C58\n\ - b _0801F86A\n\ - .align 2, 0\n\ -_0801F84C: .4byte gActiveBank\n\ -_0801F850: .4byte gBankAttacker\n\ -_0801F854: .4byte gBankTarget\n\ -_0801F858: .4byte gUnknown_081D8C58\n\ -_0801F85C:\n\ - ldr r1, _0801F954 @ =gActiveBank\n\ - ldr r0, _0801F958 @ =gBankTarget\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - ldr r0, _0801F95C @ =gBankAttacker\n\ - ldrb r7, [r0]\n\ - ldr r4, _0801F960 @ =gUnknown_081D8C65\n\ -_0801F86A:\n\ - ldr r0, _0801F964 @ =gAbsentBankFlags\n\ - ldrb r1, [r0]\n\ - ldr r0, _0801F968 @ =gBitTable\n\ - mov r12, r0\n\ - ldr r2, _0801F954 @ =gActiveBank\n\ - mov r8, r2\n\ - ldrb r2, [r2]\n\ - lsls r0, r2, 2\n\ - add r0, r12\n\ - ldr r0, [r0]\n\ - ands r1, r0\n\ - cmp r1, 0\n\ - beq _0801F886\n\ - b _0801FB1C\n\ -_0801F886:\n\ - ldr r3, _0801F96C @ =gBattleMons\n\ - mov r10, r3\n\ - movs r5, 0x58\n\ - mov r9, r5\n\ - mov r0, r9\n\ - muls r0, r2\n\ - add r0, r10\n\ - ldrh r3, [r0, 0x28]\n\ - cmp r3, 0\n\ - beq _0801F89C\n\ - b _0801FB1C\n\ -_0801F89C:\n\ - ldr r2, _0801F970 @ =0x02000000\n\ - lsls r1, r7, 1\n\ - ldr r5, _0801F974 @ =0x000160ac\n\ - adds r0, r1, r5\n\ - adds r0, r2\n\ - strb r3, [r0]\n\ - ldr r0, _0801F978 @ =0x000160ad\n\ - adds r1, r0\n\ - adds r1, r2\n\ - strb r3, [r1]\n\ - lsls r1, r7, 2\n\ - adds r5, 0x54\n\ - adds r0, r1, r5\n\ - adds r0, r2\n\ - strb r3, [r0]\n\ - adds r5, 0x1\n\ - adds r0, r1, r5\n\ - adds r0, r2\n\ - strb r3, [r0]\n\ - adds r5, 0x1\n\ - adds r0, r1, r5\n\ - adds r0, r2\n\ - strb r3, [r0]\n\ - ldr r0, _0801F97C @ =0x00016103\n\ - adds r1, r0\n\ - adds r1, r2\n\ - strb r3, [r1]\n\ - ldr r5, _0801F980 @ =gHitMarker\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - lsls r0, 2\n\ - add r0, r12\n\ - ldr r1, [r0]\n\ - lsls r1, 28\n\ - ldr r0, [r5]\n\ - orrs r0, r1\n\ - str r0, [r5]\n\ - ldr r0, [r6]\n\ - adds r0, 0x7\n\ - bl b_movescr_stack_push\n\ - str r4, [r6]\n\ - mov r2, r8\n\ - ldrb r0, [r2]\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _0801F9B0\n\ - ldr r0, [r5]\n\ - movs r1, 0x80\n\ - lsls r1, 15\n\ - orrs r0, r1\n\ - str r0, [r5]\n\ - ldr r1, _0801F984 @ =gBattleResults\n\ - ldrb r0, [r1]\n\ - cmp r0, 0xFE\n\ - bhi _0801F914\n\ - adds r0, 0x1\n\ - strb r0, [r1]\n\ -_0801F914:\n\ - mov r0, r9\n\ - muls r0, r7\n\ - add r0, r10\n\ - adds r3, r0, 0\n\ - adds r3, 0x2A\n\ - mov r4, r8\n\ - ldrb r2, [r4]\n\ - mov r0, r9\n\ - muls r0, r2\n\ - add r0, r10\n\ - adds r1, r0, 0\n\ - adds r1, 0x2A\n\ - ldrb r0, [r3]\n\ - ldrb r5, [r1]\n\ - cmp r0, r5\n\ - bls _0801F9CC\n\ - ldrb r1, [r1]\n\ - subs r0, r1\n\ - cmp r0, 0x1D\n\ - ble _0801F990\n\ - ldr r1, _0801F988 @ =gBattlePartyID\n\ - lsls r0, r2, 1\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - movs r0, 0x64\n\ - muls r0, r1\n\ - ldr r1, _0801F98C @ =gPlayerParty\n\ - adds r0, r1\n\ - movs r1, 0x8\n\ - bl AdjustFriendship\n\ - b _0801F9CC\n\ - .align 2, 0\n\ -_0801F954: .4byte gActiveBank\n\ -_0801F958: .4byte gBankTarget\n\ -_0801F95C: .4byte gBankAttacker\n\ -_0801F960: .4byte gUnknown_081D8C65\n\ -_0801F964: .4byte gAbsentBankFlags\n\ -_0801F968: .4byte gBitTable\n\ -_0801F96C: .4byte gBattleMons\n\ -_0801F970: .4byte 0x02000000\n\ -_0801F974: .4byte 0x000160ac\n\ -_0801F978: .4byte 0x000160ad\n\ -_0801F97C: .4byte 0x00016103\n\ -_0801F980: .4byte gHitMarker\n\ -_0801F984: .4byte gBattleResults\n\ -_0801F988: .4byte gBattlePartyID\n\ -_0801F98C: .4byte gPlayerParty\n\ -_0801F990:\n\ - ldr r1, _0801F9A8 @ =gBattlePartyID\n\ - lsls r0, r2, 1\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - movs r0, 0x64\n\ - muls r0, r1\n\ - ldr r1, _0801F9AC @ =gPlayerParty\n\ - adds r0, r1\n\ - movs r1, 0x6\n\ - bl AdjustFriendship\n\ - b _0801F9CC\n\ - .align 2, 0\n\ -_0801F9A8: .4byte gBattlePartyID\n\ -_0801F9AC: .4byte gPlayerParty\n\ -_0801F9B0:\n\ - ldr r1, _0801FAE0 @ =gBattleResults\n\ - ldrb r0, [r1, 0x1]\n\ - cmp r0, 0xFE\n\ - bhi _0801F9BC\n\ - adds r0, 0x1\n\ - strb r0, [r1, 0x1]\n\ -_0801F9BC:\n\ - ldr r2, _0801FAE4 @ =gActiveBank\n\ - ldrb r0, [r2]\n\ - mov r3, r9\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - add r0, r10\n\ - ldrh r0, [r0]\n\ - strh r0, [r1, 0x20]\n\ -_0801F9CC:\n\ - ldr r0, _0801FAE8 @ =gHitMarker\n\ - ldr r0, [r0]\n\ - movs r1, 0x40\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0801FA02\n\ - ldr r6, _0801FAEC @ =gBattleMons\n\ - ldr r0, _0801FAF0 @ =gBankAttacker\n\ - ldrb r0, [r0]\n\ - movs r5, 0x58\n\ - muls r0, r5\n\ - adds r0, r6\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - beq _0801FA02\n\ - ldr r4, _0801FAF4 @ =gBattlescriptCurrInstr\n\ - ldr r0, [r4]\n\ - bl b_movescr_stack_push\n\ - ldr r1, _0801FAF8 @ =gBattleMoveDamage\n\ - adds r0, r7, 0\n\ - muls r0, r5\n\ - adds r0, r6\n\ - ldrh r0, [r0, 0x28]\n\ - str r0, [r1]\n\ - ldr r0, _0801FAFC @ =gUnknown_081D9156\n\ - str r0, [r4]\n\ -_0801FA02:\n\ - ldr r1, _0801FB00 @ =gStatuses3\n\ - ldr r6, _0801FB04 @ =gBankTarget\n\ - ldrb r0, [r6]\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x80\n\ - lsls r1, 7\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0801FA1A\n\ - b _0801FB22\n\ -_0801FA1A:\n\ - ldr r0, _0801FAE8 @ =gHitMarker\n\ - ldr r5, [r0]\n\ - movs r0, 0x80\n\ - lsls r0, 17\n\ - ands r5, r0\n\ - cmp r5, 0\n\ - bne _0801FB22\n\ - ldr r4, _0801FAF0 @ =gBankAttacker\n\ - mov r8, r4\n\ - ldrb r0, [r4]\n\ - bl GetBankSide\n\ - adds r4, r0, 0\n\ - ldrb r0, [r6]\n\ - bl GetBankSide\n\ - lsls r4, 24\n\ - lsls r0, 24\n\ - cmp r4, r0\n\ - beq _0801FB22\n\ - ldr r0, _0801FAEC @ =gBattleMons\n\ - mov r9, r0\n\ - mov r1, r8\n\ - ldrb r2, [r1]\n\ - movs r7, 0x58\n\ - adds r3, r2, 0\n\ - muls r3, r7\n\ - adds r0, r3, r0\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - beq _0801FB22\n\ - ldr r0, _0801FB08 @ =gCurrentMove\n\ - ldrh r0, [r0]\n\ - cmp r0, 0xA5\n\ - beq _0801FB22\n\ - ldr r1, _0801FB0C @ =0x02000000\n\ - ldr r4, _0801FB10 @ =0x0001608c\n\ - adds r0, r2, r4\n\ - adds r0, r1\n\ - ldrb r4, [r0]\n\ - adds r0, r4, r3\n\ - mov r6, r9\n\ - adds r6, 0x24\n\ - adds r0, r6\n\ - strb r5, [r0]\n\ - ldr r5, _0801FAF4 @ =gBattlescriptCurrInstr\n\ - ldr r0, [r5]\n\ - bl b_movescr_stack_push\n\ - ldr r0, _0801FB14 @ =gUnknown_081D9468\n\ - str r0, [r5]\n\ - ldr r5, _0801FAE4 @ =gActiveBank\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - strb r0, [r5]\n\ - adds r1, r4, 0\n\ - adds r1, 0x9\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - ldrb r0, [r5]\n\ - muls r0, r7\n\ - adds r0, r6\n\ - adds r0, r4\n\ - str r0, [sp]\n\ - movs r0, 0\n\ - movs r2, 0\n\ - movs r3, 0x1\n\ - bl EmitSetAttributes\n\ - ldrb r0, [r5]\n\ - bl MarkBufferBankForExecution\n\ - ldr r1, _0801FB18 @ =gBattleTextBuff1\n\ - movs r0, 0xFD\n\ - strb r0, [r1]\n\ - movs r0, 0x2\n\ - strb r0, [r1, 0x1]\n\ - lsls r4, 1\n\ - mov r2, r8\n\ - ldrb r0, [r2]\n\ - muls r0, r7\n\ - adds r0, r4, r0\n\ - mov r2, r9\n\ - adds r2, 0xC\n\ - adds r0, r2\n\ - ldrh r0, [r0]\n\ - strb r0, [r1, 0x2]\n\ - mov r3, r8\n\ - ldrb r0, [r3]\n\ - muls r0, r7\n\ - adds r4, r0\n\ - adds r4, r2\n\ - ldrh r0, [r4]\n\ - lsrs r0, 8\n\ - strb r0, [r1, 0x3]\n\ - movs r0, 0xFF\n\ - strb r0, [r1, 0x4]\n\ - b _0801FB22\n\ - .align 2, 0\n\ -_0801FAE0: .4byte gBattleResults\n\ -_0801FAE4: .4byte gActiveBank\n\ -_0801FAE8: .4byte gHitMarker\n\ -_0801FAEC: .4byte gBattleMons\n\ -_0801FAF0: .4byte gBankAttacker\n\ -_0801FAF4: .4byte gBattlescriptCurrInstr\n\ -_0801FAF8: .4byte gBattleMoveDamage\n\ -_0801FAFC: .4byte gUnknown_081D9156\n\ -_0801FB00: .4byte gStatuses3\n\ -_0801FB04: .4byte gBankTarget\n\ -_0801FB08: .4byte gCurrentMove\n\ -_0801FB0C: .4byte 0x02000000\n\ -_0801FB10: .4byte 0x0001608c\n\ -_0801FB14: .4byte gUnknown_081D9468\n\ -_0801FB18: .4byte gBattleTextBuff1\n\ -_0801FB1C:\n\ - ldr r0, [r6]\n\ - adds r0, 0x7\n\ - str r0, [r6]\n\ -_0801FB22:\n\ - add sp, 0x4\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); + u8 *r4; + + if (gBattlescriptCurrInstr[2] != 0) + { + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); + if (gHitMarker & HITMARKER_FAINTED(gActiveBank)) + { + r4 = BSScriptReadPtr(gBattlescriptCurrInstr + 3); + + b_movescr_stack_pop_cursor(); + gBattlescriptCurrInstr = r4; + gSideAffecting[GetBankSide(gActiveBank)] &= ~SIDE_STATUS_SPIKES_DAMAGED; + } + else + { + gBattlescriptCurrInstr += 7; + } + } + else + { + u8 bank; + + if (gBattlescriptCurrInstr[1] == 1) + { + gActiveBank = gBankAttacker; + bank = gBankTarget; + r4 = gUnknown_081D8C58; + } + else + { + gActiveBank = gBankTarget; + bank = gBankAttacker; + r4 = gUnknown_081D8C65; + } + if (!(gAbsentBankFlags & gBitTable[gActiveBank]) + && gBattleMons[gActiveBank].hp == 0) + { + ewram[0x160AC + bank * 2 + 0] = 0; + ewram[0x160AC + bank * 2 + 1] = 0; + ewram[0x16100 + bank * 4 + 0] = 0; + ewram[0x16100 + bank * 4 + 1] = 0; + ewram[0x16100 + bank * 4 + 2] = 0; + ewram[0x16100 + bank * 4 + 3] = 0; + + gHitMarker |= HITMARKER_FAINTED(gActiveBank); + b_movescr_stack_push(gBattlescriptCurrInstr + 7); + gBattlescriptCurrInstr = r4; + if (GetBankSide(gActiveBank) == 0) + { + gHitMarker |= HITMARKER_x400000; + if (gBattleResults.playerFaintCounter < 0xFF) + gBattleResults.playerFaintCounter++; + if (gBattleMons[bank].level > gBattleMons[gActiveBank].level) + { + if (gBattleMons[bank].level - gBattleMons[gActiveBank].level > 0x1D) + AdjustFriendship(&gPlayerParty[gBattlePartyID[gActiveBank]], 8); + else + AdjustFriendship(&gPlayerParty[gBattlePartyID[gActiveBank]], 6); + } + } + else + { + if (gBattleResults.opponentFaintCounter < 0xFF) + gBattleResults.opponentFaintCounter++; + gBattleResults.lastOpponentSpecies = gBattleMons[gActiveBank].species; + } + if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBankAttacker].hp != 0) + { + b_movescr_stack_push(gBattlescriptCurrInstr); + gBattleMoveDamage = gBattleMons[bank].hp; + gBattlescriptCurrInstr = gUnknown_081D9156; + } + if ((gStatuses3[gBankTarget] & STATUS3_GRUDGE) + && !(gHitMarker & HITMARKER_GRUDGE) + && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget) + && gBattleMons[gBankAttacker].hp != 0 + && gCurrentMove != MOVE_STRUGGLE) + { + u8 moveIndex = ewram[0x1608C + gBankAttacker]; + + gBattleMons[gBankAttacker].pp[moveIndex] = 0; + b_movescr_stack_push(gBattlescriptCurrInstr); + gBattlescriptCurrInstr = gUnknown_081D9468; + gActiveBank = gBankAttacker; + EmitSetAttributes(0, moveIndex + 9, 0, 1, &gBattleMons[gActiveBank].pp[moveIndex]); + MarkBufferBankForExecution(gActiveBank); + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = gBattleMons[gBankAttacker].moves[moveIndex]; + gBattleTextBuff1[3] = gBattleMons[gBankAttacker].moves[moveIndex] >> 8; + gBattleTextBuff1[4] = EOS; + } + } + else + { + gBattlescriptCurrInstr += 7; + } + } } static void atk1A_faint_animation(void) @@ -5832,13 +5278,14 @@ static void atk23_getexp(void) else { BATTLE_STRUCT->atk23StateTracker++; - unk_2000000[0x16113] |= gBitTable[gBattlePartyID[gBank1]]; + ((u8*)ewram)[0x16113] |= gBitTable[gBattlePartyID[gBank1]]; } break; case 1: //calculate experience points to redistribute { - int via_sent_in = 0, i; + int via_sent_in = 0; u16 calculatedExp; + int i; for (i = 0; i < 6; i++) { u16 item; @@ -5894,15 +5341,14 @@ static void atk23_getexp(void) BATTLE_STRUCT->sentInPokes >>= 1; tracker = &BATTLE_STRUCT->atk23StateTracker; zero = 0; - goto LABEL; + *tracker = 5; //increment looper + gBattleMoveDamage = zero; //used for exp } else if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL) == 100) { - BATTLE_STRUCT->sentInPokes >>= 1; tracker = &BATTLE_STRUCT->atk23StateTracker; zero = 0; - LABEL: *tracker = 5; //increment looper gBattleMoveDamage = zero; //used for exp } @@ -5937,7 +5383,9 @@ static void atk23_getexp(void) stringID = 0x14A; } else - stringID = 0x149; + { + stringID = 0x149; + } //get exp getter bank if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) @@ -5962,12 +5410,13 @@ static void atk23_getexp(void) gBattleTextBuff1[3] = BATTLE_STRUCT->expGetterID; gBattleTextBuff1[4] = 0xFF; - //buffer 'gained' or 'gained a boosted' - gBattleTextBuff2[0] = 0xFD; - gBattleTextBuff2[1] = 0; - gBattleTextBuff2[2] = sBYTE0_32(stringID); - gBattleTextBuff2[3] = sBYTE1_32(stringID); - gBattleTextBuff2[4] = 0xFF; + //buffer 'gained' or 'gained a boosted' + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 0; + gBattleTextBuff2[2] = stringID; + stringID = (stringID >> 8) & (0xFF); //this does not want to cooperate + gBattleTextBuff2[3] = stringID; + gBattleTextBuff2[4] = 0xFF; //buffer exp number gBattleTextBuff3[0] = 0xFD; @@ -5994,7 +5443,8 @@ static void atk23_getexp(void) gBattleBufferB[BATTLE_STRUCT->expGetterBank][0] = 0; if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP) && GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL) != 100) { - BATTLE_STRUCT->beforeLvlUp[0] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP); //doesnt match + // Doesn't match. + BATTLE_STRUCT->beforeLvlUp[0] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP); BATTLE_STRUCT->beforeLvlUp[1] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK); BATTLE_STRUCT->beforeLvlUp[2] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF); BATTLE_STRUCT->beforeLvlUp[3] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD); @@ -8022,9 +7472,39 @@ _080214AE:\n\ #ifdef NONMATCHING static void atk46_playanimation2(void) { - + u8 arg1; + u8* arg2; + u16* arg3; + u32 something; + + arg1 = BSScriptRead8(gBattlescriptCurrInstr + 1); + gActiveBank = GetBattleBank(arg1); + arg2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2); + arg3 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6); + + if (*arg2 == 1 || *arg2 == 0x11 || *arg2 == 2) + { + EmitBattleAnimation(0, *arg2, *arg3); + MarkBufferBankForExecution(gActiveBank); + gBattlescriptCurrInstr += 10; + return; + } + if ((gHitMarker & 0x80)) + { + something = (u32)(gBattlescriptCurrInstr + 10); + } + else + { + u8 yeah = *arg2 - 10; + if (yeah < 4 || (gStatuses3[gActiveBank] & 0x000400C0) == 0) + { + EmitBattleAnimation(0, *arg2, *arg3); + MarkBufferBankForExecution(gActiveBank); + } + something = (u32)(gBattlescriptCurrInstr + 10); + } + gBattlescriptCurrInstr = (u8*)something; } - #else __attribute__((naked)) static void atk46_playanimation2(void) @@ -10122,7 +9602,7 @@ static void atk4E_switchin_anim(void) gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1)); if (GetBankSide(gActiveBank) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER))) { - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); } gAbsentBankFlags &= ~(gBitTable[gActiveBank]); EmitSendOutPoke(0, gBattlePartyID[gActiveBank], BSScriptRead8(gBattlescriptCurrInstr + 2)); @@ -17834,7 +17314,7 @@ void atkEF_pokeball_catch_calculation(void) ball_multiplier = 10; break; case ITEM_REPEAT_BALL: - if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1)) + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1)) ball_multiplier = 30; else ball_multiplier = 10; @@ -17920,11 +17400,11 @@ static void atkF0_copy_caught_poke(void) static void atkF1_setpoke_as_caught(void) { - if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1)) + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1)) gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); else { - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 3); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 3); if (gBattleMons[gBankTarget].species == SPECIES_UNOWN) gSaveBlock2.pokedex.unownPersonality = gBattleMons[gBankTarget].personality; if (gBattleMons[gBankTarget].species == SPECIES_SPINDA) //else if diff --git a/src/battle_7.c b/src/battle/battle_7.c index cf3a3522e..ad96510cf 100644 --- a/src/battle_7.c +++ b/src/battle/battle_7.c @@ -48,8 +48,8 @@ extern struct MusicPlayerInfo gMPlay_BGM; extern u32 gBitTable[]; extern u16 gBattleTypeFlags; extern u8 gBattleMonForms[]; -extern u8 gBattleAnimPlayerMonIndex; -extern u8 gBattleAnimEnemyMonIndex; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; extern void (*gAnimScriptCallback)(void); extern u8 gAnimScriptActive; extern const u8 *const gBattleAnims_Unknown1[]; @@ -78,7 +78,7 @@ extern void sub_80440EC(); extern void sub_804777C(); extern void sub_8141828(); extern u8 sub_8077ABC(); -extern u8 sub_8078874(u8); +extern u8 AnimBankSpriteExists(u8); extern u8 sub_8077F68(u8); extern u8 sub_8077F7C(u8); extern void sub_8094958(void); @@ -185,8 +185,8 @@ bool8 move_anim_start_t3(u8 a, u8 b, u8 c, u8 d, u16 e) sub_80324E0(a); return TRUE; } - gBattleAnimPlayerMonIndex = b; - gBattleAnimEnemyMonIndex = c; + gBattleAnimBankAttacker = b; + gBattleAnimBankTarget = c; ewram17840.unk0 = e; DoMoveAnim(gBattleAnims_Unknown1, d, 0); taskId = CreateTask(sub_80315E8, 10); @@ -225,8 +225,8 @@ void move_anim_start_t4(u8 a, u8 b, u8 c, u8 d) { u8 taskId; - gBattleAnimPlayerMonIndex = b; - gBattleAnimEnemyMonIndex = c; + gBattleAnimBankAttacker = b; + gBattleAnimBankTarget = c; DoMoveAnim(gBattleAnims_Unknown2, d, 0); taskId = CreateTask(sub_80316CC, 10); gTasks[taskId].data[0] = a; @@ -301,16 +301,16 @@ void BattleLoadOpponentMonSprite(struct Pokemon *pkmn, u8 b) r7); paletteOffset = 0x100 + b * 16; if (ewram17800[b].transformedSpecies == 0) - lzPaletteData = pokemon_get_pal(pkmn); + lzPaletteData = GetMonSpritePal(pkmn); else - lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue); - sub_800D238(lzPaletteData, ewram); + lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue); + LZDecompressWram(lzPaletteData, ewram); LoadPalette(ewram, paletteOffset, 0x20); LoadPalette(ewram, 0x80 + b * 16, 0x20); if (species == SPECIES_CASTFORM) { paletteOffset = 0x100 + b * 16; - sub_800D238(lzPaletteData, ewram + 0x16400); + LZDecompressWram(lzPaletteData, ewram + 0x16400); LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20); } if (ewram17800[b].transformedSpecies != 0) @@ -353,16 +353,16 @@ void BattleLoadPlayerMonSprite(struct Pokemon *pkmn, u8 b) r7); paletteOffset = 0x100 + b * 16; if (ewram17800[b].transformedSpecies == 0) - lzPaletteData = pokemon_get_pal(pkmn); + lzPaletteData = GetMonSpritePal(pkmn); else - lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue); - sub_800D238(lzPaletteData, ewram); + lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue); + LZDecompressWram(lzPaletteData, ewram); LoadPalette(ewram, paletteOffset, 0x20); LoadPalette(ewram, 0x80 + b * 16, 0x20); if (species == SPECIES_CASTFORM) { paletteOffset = 0x100 + b * 16; - sub_800D238(lzPaletteData, ewram + 0x16400); + LZDecompressWram(lzPaletteData, ewram + 0x16400); LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20); } if (ewram17800[b].transformedSpecies != 0) @@ -506,7 +506,7 @@ bool8 sub_8031C30(u8 a) void load_gfxc_health_bar(void) { - sub_800D238(gUnknown_08D09C48, (void *)0x02000000); + LZDecompressWram(gUnknown_08D09C48, (void *)0x02000000); } u8 battle_load_something(u8 *pState, u8 *b) @@ -690,14 +690,14 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) dst = (void *)(VRAM + 0x10000 + gSprites[gObjectBankIDs[a]].oam.tileNum * 32); DmaCopy32(3, src, dst, 0x800); paletteOffset = 0x100 + a * 16; - lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue); - sub_800D238(lzPaletteData, ewram); + lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue); + LZDecompressWram(lzPaletteData, ewram); LoadPalette(ewram, paletteOffset, 32); if (species == SPECIES_CASTFORM) { u16 *paletteSrc = (u16 *)(ewram + 0x16400); - sub_800D238(lzPaletteData, paletteSrc); + LZDecompressWram(lzPaletteData, paletteSrc); LoadPalette(paletteSrc + gBattleMonForms[b] * 16, paletteOffset, 32); } BlendPalette(paletteOffset, 16, 6, 0x7FFF); @@ -846,7 +846,7 @@ void sub_80326EC(u8 a) for (i = 0; i < gNoOfAllBanks; i++) { - if (sub_8078874(i) != 0) + if (AnimBankSpriteExists(i) != 0) { gSprites[gObjectBankIDs[i]].oam.affineMode = a; if (a == 0) @@ -884,7 +884,7 @@ void sub_80328A4(struct Sprite *sprite) u8 r4 = sprite->data0; struct Sprite *r7 = &gSprites[gObjectBankIDs[r4]]; - if (!r7->inUse || sub_8078874(r4) == 0) + if (!r7->inUse || AnimBankSpriteExists(r4) == 0) { sprite->callback = sub_8032978; return; diff --git a/src/battle_ai.c b/src/battle/battle_ai.c index 0e20c6b05..1869bbe36 100644 --- a/src/battle_ai.c +++ b/src/battle/battle_ai.c @@ -1273,7 +1273,7 @@ static void BattleAICmd_if_arg_not_equal(void) static void BattleAICmd_if_would_go_first(void) { - if (b_first_side(gBankAttacker, gBankTarget, 1) == gAIScriptPtr[1]) + if (GetWhoStrikesFirst(gBankAttacker, gBankTarget, 1) == gAIScriptPtr[1]) gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -1281,7 +1281,7 @@ static void BattleAICmd_if_would_go_first(void) static void BattleAICmd_if_would_not_go_first(void) { - if (b_first_side(gBankAttacker, gBankTarget, 1) != gAIScriptPtr[1]) + if (GetWhoStrikesFirst(gBankAttacker, gBankTarget, 1) != gAIScriptPtr[1]) gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2); else gAIScriptPtr += 6; diff --git a/src/battle_anim.c b/src/battle/battle_anim.c index 6bd98099a..111d72813 100644 --- a/src/battle_anim.c +++ b/src/battle/battle_anim.c @@ -37,8 +37,8 @@ EWRAM_DATA u8 gMonAnimTaskIdArray[2] = {0}; EWRAM_DATA u8 gUnknown_0202F7C4 = 0; EWRAM_DATA u8 gUnknown_0202F7C5 = 0; EWRAM_DATA u16 gAnimMoveIndex = 0; // set but unused. -EWRAM_DATA u8 gBattleAnimPlayerMonIndex = 0; -EWRAM_DATA u8 gBattleAnimEnemyMonIndex = 0; +EWRAM_DATA u8 gBattleAnimBankAttacker = 0; +EWRAM_DATA u8 gBattleAnimBankTarget = 0; EWRAM_DATA u16 gUnknown_0202F7CA[4] = {0}; EWRAM_DATA u8 gUnknown_0202F7D2 = 0; extern u16 gUnknown_030041B4; @@ -201,15 +201,15 @@ void battle_anim_clear_some_data(void) gUnknown_0202F7C4 = 0; gUnknown_0202F7C5 = 0; gAnimMoveIndex = 0; - gBattleAnimPlayerMonIndex = 0; - gBattleAnimEnemyMonIndex = 0; + gBattleAnimBankAttacker = 0; + gBattleAnimBankTarget = 0; gUnknown_0202F7D2 = 0; } void ExecuteMoveAnim(u16 move) { - gBattleAnimPlayerMonIndex = gBankAttacker; - gBattleAnimEnemyMonIndex = gBankTarget; + gBattleAnimBankAttacker = gBankAttacker; + gBattleAnimBankTarget = gBankTarget; DoMoveAnim(gBattleAnims_Moves, move, 1); } @@ -396,7 +396,7 @@ static void ScriptCmd_sprite(void) r4 -= 0x40; else r4 = -r4; - _r0 = sub_8079E90(gBattleAnimEnemyMonIndex); + _r0 = sub_8079E90(gBattleAnimBankTarget); r1 = r4; } @@ -407,15 +407,15 @@ static void ScriptCmd_sprite(void) r4 -= 0x40; else r4 = -r4; - _r0 = sub_8079E90(gBattleAnimPlayerMonIndex); + _r0 = sub_8079E90(gBattleAnimBankAttacker); r1 = r4; } r6 = _r0 + r1; if ((s16)r6 < 3) r6 = 3; - r4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2); - r2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3); + r4 = sub_8077ABC(gBattleAnimBankTarget, 2); + r2 = sub_8077ABC(gBattleAnimBankTarget, 3); CreateSpriteAndAnimate(r7, r4, r2, r6); gAnimVisualTaskCount++; } @@ -485,10 +485,10 @@ _08075B34:\n\ _08075B36:\n\ lsls r0, 24\n\ lsrs r4, r0, 24\n\ - ldr r0, _08075B40 @ =gBattleAnimEnemyMonIndex\n\ + ldr r0, _08075B40 @ =gBattleAnimBankTarget\n\ b _08075B56\n\ .align 2, 0\n\ -_08075B40: .4byte gBattleAnimEnemyMonIndex\n\ +_08075B40: .4byte gBattleAnimBankTarget\n\ _08075B44:\n\ cmp r4, 0x3F\n\ bls _08075B4E\n\ @@ -500,7 +500,7 @@ _08075B4E:\n\ _08075B50:\n\ lsls r0, 24\n\ lsrs r4, r0, 24\n\ - ldr r0, _08075BAC @ =gBattleAnimPlayerMonIndex\n\ + ldr r0, _08075BAC @ =gBattleAnimBankAttacker\n\ _08075B56:\n\ ldrb r0, [r0]\n\ bl sub_8079E90\n\ @@ -517,7 +517,7 @@ _08075B56:\n\ bgt _08075B74\n\ movs r6, 0x3\n\ _08075B74:\n\ - ldr r5, _08075BB0 @ =gBattleAnimEnemyMonIndex\n\ + ldr r5, _08075BB0 @ =gBattleAnimBankTarget\n\ ldrb r0, [r5]\n\ movs r1, 0x2\n\ bl sub_8077ABC\n\ @@ -543,8 +543,8 @@ _08075B74:\n\ pop {r0}\n\ bx r0\n\ .align 2, 0\n\ -_08075BAC: .4byte gBattleAnimPlayerMonIndex\n\ -_08075BB0: .4byte gBattleAnimEnemyMonIndex\n\ +_08075BAC: .4byte gBattleAnimBankAttacker\n\ +_08075BB0: .4byte gBattleAnimBankTarget\n\ _08075BB4: .4byte gAnimVisualTaskCount\n\ .syntax divided\n"); } @@ -686,10 +686,10 @@ static void ScriptCmd_monbg(void) else if (r6 == 1) r6 = 3; if (r6 == 0 || r6 == 2) - r5 = gBattleAnimPlayerMonIndex; + r5 = gBattleAnimBankAttacker; else - r5 = gBattleAnimEnemyMonIndex; - if (b_side_obj__get_some_boolean(r5)) + r5 = gBattleAnimBankTarget; + if (IsAnimBankSpriteVisible(r5)) { r0 = GetBankIdentity(r5); r0 += 0xFF; @@ -719,7 +719,7 @@ static void ScriptCmd_monbg(void) } r5 ^= 2; - if (r6 > 1 && b_side_obj__get_some_boolean(r5)) + if (r6 > 1 && IsAnimBankSpriteVisible(r5)) { r0 = GetBankIdentity(r5); r0 += 0xFF; @@ -751,20 +751,20 @@ static void ScriptCmd_monbg(void) } #ifdef NONMATCHING -bool8 b_side_obj__get_some_boolean(u8 a) +bool8 IsAnimBankSpriteVisible(u8 a) { - if (IsContest() != 0) + if (IsContest()) { - if (a == gBattleAnimPlayerMonIndex) + if (a == gBattleAnimBankAttacker) return TRUE; else return FALSE; } - if (sub_8078874(a) == 0) + if (!AnimBankSpriteExists(a)) return FALSE; - if (IsContest() != 0) + if (IsContest()) return TRUE; // this line wont ever be reached. - if ((EWRAM_17800[a].unk0 & 1) == 0) + if (!(EWRAM_17800[a].unk0 & 1)) return TRUE; if (gSprites[gObjectBankIDs[a]].invisible) return FALSE; @@ -772,7 +772,7 @@ bool8 b_side_obj__get_some_boolean(u8 a) } #else __attribute__((naked)) -bool8 b_side_obj__get_some_boolean(u8 a) +bool8 IsAnimBankSpriteVisible(u8 a) { asm(".syntax unified\n\ push {r4,r5,lr}\n\ @@ -783,16 +783,16 @@ bool8 b_side_obj__get_some_boolean(u8 a) lsls r0, 24\n\ cmp r0, 0\n\ beq _08075FDC\n\ - ldr r0, _08075FD8 @ =gBattleAnimPlayerMonIndex\n\ + ldr r0, _08075FD8 @ =gBattleAnimBankAttacker\n\ ldrb r0, [r0]\n\ cmp r4, r0\n\ beq _0807601C\n\ b _0807602C\n\ .align 2, 0\n\ -_08075FD8: .4byte gBattleAnimPlayerMonIndex\n\ +_08075FD8: .4byte gBattleAnimBankAttacker\n\ _08075FDC:\n\ adds r0, r4, 0\n\ - bl sub_8078874\n\ + bl AnimBankSpriteExists\n\ lsls r0, 24\n\ cmp r0, 0\n\ beq _0807602C\n\ @@ -1096,9 +1096,9 @@ static void ScriptCmd_clearmonbg(void) else if (r4 == 1) r4 = 3; if (r4 == 0 || r4 == 2) - r5 = gBattleAnimPlayerMonIndex; + r5 = gBattleAnimBankAttacker; else - r5 = gBattleAnimEnemyMonIndex; + r5 = gBattleAnimBankTarget; if (gMonAnimTaskIdArray[0] != 0xFF) gSprites[gObjectBankIDs[r5]].invisible = FALSE; if (r4 > 1 && gMonAnimTaskIdArray[1] != 0xFF) @@ -1155,10 +1155,10 @@ static void ScriptCmd_monbg_22(void) else if (r5 == 1) r5 = 3; if (r5 == 0 || r5 == 2) - r4 = gBattleAnimPlayerMonIndex; + r4 = gBattleAnimBankAttacker; else - r4 = gBattleAnimEnemyMonIndex; - if (b_side_obj__get_some_boolean(r4)) + r4 = gBattleAnimBankTarget; + if (IsAnimBankSpriteVisible(r4)) { r0 = GetBankIdentity(r4); r0 += 0xFF; @@ -1170,7 +1170,7 @@ static void ScriptCmd_monbg_22(void) gSprites[gObjectBankIDs[r4]].invisible = FALSE; } r4 ^= 2; - if (r5 > 1 && b_side_obj__get_some_boolean(r4)) + if (r5 > 1 && IsAnimBankSpriteVisible(r4)) { r0 = GetBankIdentity(r4); r0 += 0xFF; @@ -1197,12 +1197,12 @@ static void ScriptCmd_clearmonbg_23(void) else if (r5 == 1) r5 = 3; if (r5 == 0 || r5 == 2) - r6 = gBattleAnimPlayerMonIndex; + r6 = gBattleAnimBankAttacker; else - r6 = gBattleAnimEnemyMonIndex; - if (b_side_obj__get_some_boolean(r6)) + r6 = gBattleAnimBankTarget; + if (IsAnimBankSpriteVisible(r6)) gSprites[gObjectBankIDs[r6]].invisible = FALSE; - if (r5 > 1 && b_side_obj__get_some_boolean(r6 ^ 2)) + if (r5 > 1 && IsAnimBankSpriteVisible(r6 ^ 2)) gSprites[gObjectBankIDs[r6 ^ 2]].invisible = FALSE; else r5 = 0; @@ -1228,9 +1228,9 @@ static void sub_80769A4(u8 taskId) r5 = 0; else r5 = 1; - if (b_side_obj__get_some_boolean(r4)) + if (IsAnimBankSpriteVisible(r4)) sub_8076464(r5); - if (gTasks[taskId].data[0] > 1 && b_side_obj__get_some_boolean(r4 ^ 2)) + if (gTasks[taskId].data[0] > 1 && IsAnimBankSpriteVisible(r4 ^ 2)) sub_8076464(r5 ^ 1); DestroyTask(taskId); } @@ -1371,7 +1371,7 @@ static void ScriptCmd_fadetobg_25(void) taskId = CreateTask(task_p5_load_battle_screen_elements, 5); if (IsContest() != 0) gTasks[taskId].data[0] = r6; - else if (GetBankSide(gBattleAnimEnemyMonIndex) == 0) + else if (GetBankSide(gBattleAnimBankTarget) == 0) gTasks[taskId].data[0] = r7; else gTasks[taskId].data[0] = r8; @@ -1422,7 +1422,7 @@ static void sub_8076DB8(u16 a) void *dmaSrc; void *dmaDest; - sub_800D238(tilemap, IsContest() ? EWRAM_14800 : EWRAM_18000); + LZDecompressWram(tilemap, IsContest() ? EWRAM_14800 : EWRAM_18000); sub_80763FC(sub_80789BC(), IsContest() ? EWRAM_14800 : EWRAM_18000, 0x100, 0); dmaSrc = IsContest() ? EWRAM_14800 : EWRAM_18000; dmaDest = (void *)(VRAM + 0xD000); @@ -1493,16 +1493,16 @@ static void ScriptCmd_changebg(void) /* s8 sub_8076F98(s8 a) { - if (!IsContest() && (EWRAM_17810[gBattleAnimPlayerMonIndex].unk0 & 0x10)) + if (!IsContest() && (EWRAM_17810[gBattleAnimBankAttacker].unk0 & 0x10)) { - a = GetBankSide(gBattleAnimPlayerMonIndex) ? 0xC0 : 0x3F; + a = GetBankSide(gBattleAnimBankAttacker) ? 0xC0 : 0x3F; } //_08076FDC else { if (IsContest()) { - if (gBattleAnimPlayerMonIndex == gBattleAnimEnemyMonIndex && gBattleAnimPlayerMonIndex == 2 + if (gBattleAnimBankAttacker == gBattleAnimBankTarget && gBattleAnimBankAttacker == 2 && a == 0x3F) { //jump to _0807707A @@ -1514,9 +1514,9 @@ s8 sub_8076F98(s8 a) //_08077004 else { - if (GetBankSide(gBattleAnimPlayerMonIndex) == 0) + if (GetBankSide(gBattleAnimBankAttacker) == 0) { - if (GetBankSide(gBattleAnimEnemyMonIndex) == 0) + if (GetBankSide(gBattleAnimBankTarget) == 0) } //_08077042 else @@ -1540,7 +1540,7 @@ s8 sub_8076F98(s8 a) lsls r0, 24\n\ cmp r0, 0\n\ bne _08076FDC\n\ - ldr r0, _08076FD4 @ =gBattleAnimPlayerMonIndex\n\ + ldr r0, _08076FD4 @ =gBattleAnimBankAttacker\n\ ldrb r2, [r0]\n\ lsls r0, r2, 1\n\ adds r0, r2\n\ @@ -1561,15 +1561,15 @@ s8 sub_8076F98(s8 a) movs r4, 0x3F\n\ b _0807706E\n\ .align 2, 0\n\ -_08076FD4: .4byte gBattleAnimPlayerMonIndex\n\ +_08076FD4: .4byte gBattleAnimBankAttacker\n\ _08076FD8: .4byte 0x02017810\n\ _08076FDC:\n\ bl IsContest\n\ lsls r0, 24\n\ cmp r0, 0\n\ beq _08077004\n\ - ldr r0, _08076FFC @ =gBattleAnimPlayerMonIndex\n\ - ldr r1, _08077000 @ =gBattleAnimEnemyMonIndex\n\ + ldr r0, _08076FFC @ =gBattleAnimBankAttacker\n\ + ldr r1, _08077000 @ =gBattleAnimBankTarget\n\ ldrb r0, [r0]\n\ ldrb r1, [r1]\n\ cmp r0, r1\n\ @@ -1580,16 +1580,16 @@ _08076FDC:\n\ beq _0807707A\n\ b _08077068\n\ .align 2, 0\n\ -_08076FFC: .4byte gBattleAnimPlayerMonIndex\n\ -_08077000: .4byte gBattleAnimEnemyMonIndex\n\ +_08076FFC: .4byte gBattleAnimBankAttacker\n\ +_08077000: .4byte gBattleAnimBankTarget\n\ _08077004:\n\ - ldr r0, _0807702C @ =gBattleAnimPlayerMonIndex\n\ + ldr r0, _0807702C @ =gBattleAnimBankAttacker\n\ ldrb r0, [r0]\n\ bl GetBankSide\n\ lsls r0, 24\n\ cmp r0, 0\n\ bne _08077042\n\ - ldr r0, _08077030 @ =gBattleAnimEnemyMonIndex\n\ + ldr r0, _08077030 @ =gBattleAnimBankTarget\n\ ldrb r0, [r0]\n\ bl GetBankSide\n\ lsls r0, 24\n\ @@ -1602,8 +1602,8 @@ _08077004:\n\ movs r4, 0xC0\n\ b _0807706E\n\ .align 2, 0\n\ -_0807702C: .4byte gBattleAnimPlayerMonIndex\n\ -_08077030: .4byte gBattleAnimEnemyMonIndex\n\ +_0807702C: .4byte gBattleAnimBankAttacker\n\ +_08077030: .4byte gBattleAnimBankTarget\n\ _08077034:\n\ movs r0, 0x40\n\ negs r0, r0\n\ @@ -1613,7 +1613,7 @@ _08077034:\n\ lsls r0, 24\n\ b _0807706C\n\ _08077042:\n\ - ldr r0, _08077064 @ =gBattleAnimEnemyMonIndex\n\ + ldr r0, _08077064 @ =gBattleAnimBankTarget\n\ ldrb r0, [r0]\n\ bl GetBankSide\n\ lsls r0, 24\n\ @@ -1629,7 +1629,7 @@ _08077042:\n\ movs r4, 0x3F\n\ b _0807706E\n\ .align 2, 0\n\ -_08077064: .4byte gBattleAnimEnemyMonIndex\n\ +_08077064: .4byte gBattleAnimBankTarget\n\ _08077068:\n\ lsls r0, r4, 24\n\ negs r0, r0\n\ @@ -1661,16 +1661,16 @@ _08077088:\n\ s8 sub_8077094(s8 a) { - if (!IsContest() && (EWRAM_17810[gBattleAnimPlayerMonIndex].unk0 & 0x10)) + if (!IsContest() && (EWRAM_17810[gBattleAnimBankAttacker].unk0 & 0x10)) { - if (GetBankSide(gBattleAnimPlayerMonIndex) != 0) + if (GetBankSide(gBattleAnimBankAttacker) != 0) a = 0x3F; else a = 0xC0; } else { - if (GetBankSide(gBattleAnimPlayerMonIndex) != 0 || IsContest() != 0) + if (GetBankSide(gBattleAnimBankAttacker) != 0 || IsContest() != 0) a = -a; } return a; @@ -2128,9 +2128,9 @@ static void ScriptCmd_monbgprio_28(void) r2 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; if (r2 != 0) - r0 = gBattleAnimEnemyMonIndex; + r0 = gBattleAnimBankTarget; else - r0 = gBattleAnimPlayerMonIndex; + r0 = gBattleAnimBankAttacker; r4 = GetBankIdentity(r0); if (!IsContest() && (r4 == 0 || r4 == 3)) { @@ -2157,12 +2157,12 @@ static void ScriptCmd_monbgprio_2A(void) r6 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; - if (GetBankSide(gBattleAnimPlayerMonIndex) != GetBankSide(gBattleAnimEnemyMonIndex)) + if (GetBankSide(gBattleAnimBankAttacker) != GetBankSide(gBattleAnimBankTarget)) { if (r6 != 0) - r0 = gBattleAnimEnemyMonIndex; + r0 = gBattleAnimBankTarget; else - r0 = gBattleAnimPlayerMonIndex; + r0 = gBattleAnimBankAttacker; r4 = GetBankIdentity(r0); if (!IsContest() && (r4 == 0 || r4 == 3)) { @@ -2178,7 +2178,7 @@ static void ScriptCmd_invisible(void) u8 spriteId; r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); - spriteId = obj_id_for_side_relative_to_move(r0); + spriteId = GetAnimBankSpriteId(r0); if (spriteId != 0xFF) { gSprites[spriteId].invisible = TRUE; @@ -2192,7 +2192,7 @@ static void ScriptCmd_visible(void) u8 spriteId; r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); - spriteId = obj_id_for_side_relative_to_move(r0); + spriteId = GetAnimBankSpriteId(r0); if (spriteId != 0xFF) { gSprites[spriteId].invisible = FALSE; @@ -2209,17 +2209,17 @@ static void ScriptCmd_doublebattle_2D(void) r7 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; if (!IsContest() && IsDoubleBattle() - && GetBankSide(gBattleAnimPlayerMonIndex) == GetBankSide(gBattleAnimEnemyMonIndex)) + && GetBankSide(gBattleAnimBankAttacker) == GetBankSide(gBattleAnimBankTarget)) { if (r7 == 0) { - r4 = GetBankIdentity_permutated(gBattleAnimPlayerMonIndex); - spriteId = obj_id_for_side_relative_to_move(0); + r4 = GetBankIdentity_permutated(gBattleAnimBankAttacker); + spriteId = GetAnimBankSpriteId(0); } else { - r4 = GetBankIdentity_permutated(gBattleAnimEnemyMonIndex); - spriteId = obj_id_for_side_relative_to_move(1); + r4 = GetBankIdentity_permutated(gBattleAnimBankTarget); + spriteId = GetAnimBankSpriteId(1); } if (spriteId != 0xFF) { @@ -2243,17 +2243,17 @@ static void ScriptCmd_doublebattle_2E(void) r7 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; if (!IsContest() && IsDoubleBattle() - && GetBankSide(gBattleAnimPlayerMonIndex) == GetBankSide(gBattleAnimEnemyMonIndex)) + && GetBankSide(gBattleAnimBankAttacker) == GetBankSide(gBattleAnimBankTarget)) { if (r7 == 0) { - r4 = GetBankIdentity_permutated(gBattleAnimPlayerMonIndex); - spriteId = obj_id_for_side_relative_to_move(0); + r4 = GetBankIdentity_permutated(gBattleAnimBankAttacker); + spriteId = GetAnimBankSpriteId(0); } else { - r4 = GetBankIdentity_permutated(gBattleAnimEnemyMonIndex); - spriteId = obj_id_for_side_relative_to_move(1); + r4 = GetBankIdentity_permutated(gBattleAnimBankTarget); + spriteId = GetAnimBankSpriteId(1); } if (spriteId != 0xFF && r4 == 2) { diff --git a/src/battle_anim_807B69C.c b/src/battle/battle_anim_807B69C.c index 42932877b..bf3eb7ef1 100644 --- a/src/battle_anim_807B69C.c +++ b/src/battle/battle_anim_807B69C.c @@ -8,12 +8,12 @@ #include "task.h" #include "trig.h" -extern u8 gBattleAnimPlayerMonIndex; -extern u8 gBattleAnimEnemyMonIndex; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; extern bool8 gAnimScriptActive; extern void (*gAnimScriptCallback)(void); extern s16 gBattleAnimArgs[]; -extern u8 gBattleAnimEnemyMonIndex; +extern u8 gBattleAnimBankTarget; extern u8 gObjectBankIDs[]; extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; @@ -179,8 +179,8 @@ static void sub_807B8A4(struct Sprite *sprite) void sub_807B920(u8 taskId) { - s16 x = sub_8077ABC(gBattleAnimEnemyMonIndex, 2) - 32; - s16 y = sub_8077ABC(gBattleAnimEnemyMonIndex, 3) - 36; + s16 x = sub_8077ABC(gBattleAnimBankTarget, 2) - 32; + s16 y = sub_8077ABC(gBattleAnimBankTarget, 3) - 36; u8 spriteId; if (IsContest()) @@ -335,8 +335,8 @@ void move_anim_start_t2(u8 a, u8 b) { u8 taskId; - gBattleAnimPlayerMonIndex = a; - gBattleAnimEnemyMonIndex = a; + gBattleAnimBankAttacker = a; + gBattleAnimBankTarget = a; DoMoveAnim(gBattleAnims_StatusConditions, b, 0); taskId = CreateTask(sub_807BDAC, 10); gTasks[taskId].data[0] = a; diff --git a/src/battle_anim_80A7E7C.c b/src/battle/battle_anim_80A7E7C.c index 31984977f..e0c79dc8e 100644 --- a/src/battle_anim_80A7E7C.c +++ b/src/battle/battle_anim_80A7E7C.c @@ -12,8 +12,8 @@ extern s16 gBattleAnimArgs[8]; extern u8 gObjectBankIDs[]; extern s32 gMoveDmgMoveAnim; extern u16 gMovePowerMoveAnim; -extern u8 gBattleAnimPlayerMonIndex; -extern u8 gBattleAnimEnemyMonIndex; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; static void sub_80A7EF0(u8 taskId); static void sub_80A808C(u8 taskId); @@ -34,7 +34,7 @@ static void sub_80A913C(u8 taskId); void sub_80A7E7C(u8 taskId) { u8 sprite; - sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); if (sprite == 0xff) { DestroyAnimVisualTask(taskId); @@ -96,7 +96,7 @@ void sub_80A7FA0(u8 taskId) r6 = 0; if (gBattleAnimArgs[0] < 4) { - sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); if (sprite == 0xff) { DestroyAnimVisualTask(taskId); @@ -121,7 +121,7 @@ void sub_80A7FA0(u8 taskId) side = GetBankByPlayerAI(3); break; } - if (b_side_obj__get_some_boolean(side) == FALSE) + if (IsAnimBankSpriteVisible(side) == FALSE) { r6 = 1; } @@ -129,7 +129,7 @@ void sub_80A7FA0(u8 taskId) } else { - sprite = gObjectBankIDs[gBattleAnimPlayerMonIndex]; + sprite = gObjectBankIDs[gBattleAnimBankAttacker]; } if (r6) { @@ -186,7 +186,7 @@ static void sub_80A808C(u8 taskId) void sub_80A8154(u8 taskId) { u8 sprite; - sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); if (sprite == 0xff) { DestroyAnimVisualTask(taskId); @@ -244,7 +244,7 @@ static void sub_80A81D8(u8 taskId) void sub_80A8314(u8 taskId) { - u8 sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + u8 sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); gSprites[sprite].pos2.x = gBattleAnimArgs[1]; TASK.data[0] = sprite; TASK.data[1] = gBattleAnimArgs[1]; @@ -286,7 +286,7 @@ void sub_80A8408(u8 taskId) u8 sprite; u8 v1; v1 = 1; - sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); if (gBattleAnimArgs[4] > 5) { gBattleAnimArgs[4] = 5; @@ -328,7 +328,7 @@ static void sub_80A8488(u8 taskId) void sub_80A8500(u8 taskId) { - if (GetBankSide(gBattleAnimPlayerMonIndex)) + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; } @@ -338,7 +338,7 @@ void sub_80A8500(u8 taskId) void sub_80A8530(struct Sprite *sprite) { sprite->invisible = TRUE; - if (GetBankSide(gBattleAnimPlayerMonIndex)) + if (GetBankSide(gBattleAnimBankAttacker)) { sprite->data1 = -gBattleAnimArgs[1]; } @@ -348,9 +348,9 @@ void sub_80A8530(struct Sprite *sprite) } sprite->data0 = gBattleAnimArgs[0]; sprite->data2 = 0; - sprite->data3 = gObjectBankIDs[gBattleAnimPlayerMonIndex]; + sprite->data3 = gObjectBankIDs[gBattleAnimBankAttacker]; sprite->data4 = gBattleAnimArgs[0]; - oamt_set_x3A_32(sprite, sub_80A85A4); + StoreSpriteCallbackInData6(sprite, sub_80A85A4); sprite->callback = sub_8078458; } @@ -359,20 +359,20 @@ static void sub_80A85A4(struct Sprite *sprite) sprite->data0 = sprite->data4; sprite->data1 = -sprite->data1; sprite->callback = sub_8078458; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } void sub_80A85C8(struct Sprite *sprite) { u8 spriteId; sprite->invisible = TRUE; - spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[2]); + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]); sprite->data0 = gBattleAnimArgs[0]; sprite->data1 = 0; sprite->data2 = gBattleAnimArgs[1]; sprite->data3 = spriteId; sprite->data4 = gBattleAnimArgs[0]; - oamt_set_x3A_32(sprite, sub_80A8614); + StoreSpriteCallbackInData6(sprite, sub_80A8614); sprite->callback = sub_8078458; } @@ -381,7 +381,7 @@ void sub_80A8614(struct Sprite *sprite) sprite->data0 = sprite->data4; sprite->data2 = -sprite->data2; sprite->callback = sub_8078458; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } void sub_80A8638(struct Sprite *sprite) @@ -390,11 +390,11 @@ void sub_80A8638(struct Sprite *sprite) int spriteId; if (!gBattleAnimArgs[0]) { - spriteId = gObjectBankIDs[gBattleAnimPlayerMonIndex]; + spriteId = gObjectBankIDs[gBattleAnimBankAttacker]; } else { - spriteId = gObjectBankIDs[gBattleAnimEnemyMonIndex]; + spriteId = gObjectBankIDs[gBattleAnimBankTarget]; } sprite->data0 = gBattleAnimArgs[2]; sprite->data1 = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x; @@ -457,11 +457,11 @@ void sub_80A8764(struct Sprite *sprite) u8 spriteId; if (!gBattleAnimArgs[0]) { - v1 = gBattleAnimPlayerMonIndex; + v1 = gBattleAnimBankAttacker; } else { - v1 = gBattleAnimEnemyMonIndex; + v1 = gBattleAnimBankTarget; } spriteId = gObjectBankIDs[v1]; if (GetBankSide(v1)) @@ -482,7 +482,7 @@ void sub_80A8764(struct Sprite *sprite) sprite->data4 = 0; sprite->data5 = spriteId; sprite->invisible = TRUE; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); sprite->callback = sub_80784A8; } @@ -493,11 +493,11 @@ void sub_80A8818(struct Sprite *sprite) sprite->invisible = TRUE; if (!gBattleAnimArgs[0]) { - v1 = gBattleAnimPlayerMonIndex; + v1 = gBattleAnimBankAttacker; } else { - v1 = gBattleAnimEnemyMonIndex; + v1 = gBattleAnimBankTarget; } spriteId = gObjectBankIDs[v1]; if (GetBankSide(v1)) @@ -520,11 +520,11 @@ void sub_80A8818(struct Sprite *sprite) sprite->data6 = gBattleAnimArgs[5]; if (!gBattleAnimArgs[5]) { - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } else { - oamt_set_x3A_32(sprite, sub_80A88F0); + StoreSpriteCallbackInData6(sprite, sub_80A88F0); } sprite->callback = sub_80784A8; } @@ -541,12 +541,12 @@ void sub_80A8920(u8 taskId) { s16 r7; r7 = 0x8000 / gBattleAnimArgs[3]; - if (GetBankSide(gBattleAnimPlayerMonIndex)) + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; gBattleAnimArgs[5] = -gBattleAnimArgs[5]; } - TASK.data[0] = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + TASK.data[0] = GetAnimBankSpriteId(gBattleAnimArgs[0]); TASK.data[1] = (gBattleAnimArgs[1] << 8) / gBattleAnimArgs[3]; TASK.data[2] = gBattleAnimArgs[2]; TASK.data[3] = gBattleAnimArgs[3]; @@ -600,30 +600,30 @@ void sub_80A8A80(u8 taskId) { case 0: case 1: - spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); break; case 2: - if (!b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex ^ 2)) + if (!IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2)) { DestroyAnimVisualTask(taskId); return; } - spriteId = gObjectBankIDs[gBattleAnimPlayerMonIndex ^ 2]; + spriteId = gObjectBankIDs[gBattleAnimBankAttacker ^ 2]; break; case 3: - if (!b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2)) + if (!IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2)) { DestroyAnimVisualTask(taskId); return; } - spriteId = gObjectBankIDs[gBattleAnimEnemyMonIndex ^ 2]; + spriteId = gObjectBankIDs[gBattleAnimBankTarget ^ 2]; break; default: DestroyAnimVisualTask(taskId); return; } TASK.data[0] = spriteId; - if (GetBankSide(gBattleAnimEnemyMonIndex)) + if (GetBankSide(gBattleAnimBankTarget)) { TASK.data[1] = gBattleAnimArgs[1]; } @@ -648,11 +648,11 @@ static void sub_80A8B3C(u8 taskId) void sub_80A8B88(u8 taskId) { u8 spriteId; - if (GetBankSide(gBattleAnimPlayerMonIndex)) + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; } - spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[4]); + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[4]); TASK.data[0] = gBattleAnimArgs[0]; TASK.data[1] = gBattleAnimArgs[1]; TASK.data[2] = gBattleAnimArgs[2]; @@ -660,11 +660,11 @@ void sub_80A8B88(u8 taskId) TASK.data[4] = spriteId; if (gBattleAnimArgs[4] == 0) { - TASK.data[5] = gBattleAnimPlayerMonIndex; + TASK.data[5] = gBattleAnimBankAttacker; } else { - TASK.data[5] = gBattleAnimEnemyMonIndex; + TASK.data[5] = gBattleAnimBankTarget; } TASK.data[12] = 1; TASK.func = sub_80A8C0C; @@ -714,7 +714,7 @@ static void sub_80A8C0C(u8 taskId) void sub_80A8D34(u8 taskId) { u8 spriteId; - spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[3]); + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[3]); sub_8078E70(spriteId, gBattleAnimArgs[4]); TASK.data[0] = gBattleAnimArgs[0]; TASK.data[1] = gBattleAnimArgs[1]; @@ -754,7 +754,7 @@ static void sub_80A8D8C(u8 taskId) void sub_80A8E04(u8 taskId) { u8 spriteId; - spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[2]); + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]); sub_8078E70(spriteId, 0); TASK.data[1] = 0; TASK.data[2] = gBattleAnimArgs[0]; @@ -777,11 +777,11 @@ void sub_80A8E04(u8 taskId) { if (gBattleAnimArgs[2] == 0) { - TASK.data[7] = !GetBankSide(gBattleAnimPlayerMonIndex); + TASK.data[7] = !GetBankSide(gBattleAnimBankAttacker); } else { - TASK.data[7] = !GetBankSide(gBattleAnimEnemyMonIndex); + TASK.data[7] = !GetBankSide(gBattleAnimBankTarget); } } if (TASK.data[7]) @@ -798,20 +798,20 @@ void sub_80A8E04(u8 taskId) void sub_80A8EFC(u8 taskId) { u8 spriteId; - spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[2]); + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]); sub_8078E70(spriteId, 0); TASK.data[1] = 0; TASK.data[2] = gBattleAnimArgs[0]; if (gBattleAnimArgs[2] == 0) { - if (GetBankSide(gBattleAnimPlayerMonIndex)) + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; } } else { - if (GetBankSide(gBattleAnimEnemyMonIndex)) + if (GetBankSide(gBattleAnimBankTarget)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; } @@ -891,7 +891,7 @@ void sub_80A9058(u8 taskId) TASK.data[12] = 0; TASK.data[10] = gBattleAnimArgs[3]; TASK.data[11] = gBattleAnimArgs[4]; - TASK.data[7] = obj_id_for_side_relative_to_move(1); + TASK.data[7] = GetAnimBankSpriteId(1); TASK.data[8] = gSprites[TASK.data[7]].pos2.x; TASK.data[9] = gSprites[TASK.data[7]].pos2.y; TASK.data[0] = 0; diff --git a/src/battle_anim_80CA710.c b/src/battle/battle_anim_80CA710.c index 65ccd7c21..65ccd7c21 100644 --- a/src/battle_anim_80CA710.c +++ b/src/battle/battle_anim_80CA710.c diff --git a/src/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c index 93c6671e5..0b6c3b6a1 100644 --- a/src/battle_controller_linkopponent.c +++ b/src/battle/battle_controller_linkopponent.c @@ -71,7 +71,7 @@ extern void sub_8031A6C(u16, u8); extern void sub_80313A0(struct Sprite *); extern void sub_803757C(void); extern void oamt_add_pos2_onto_pos1(); -extern void oamt_set_x3A_32(); +extern void StoreSpriteCallbackInData6(); extern void sub_8078B34(struct Sprite *); extern void sub_80375B4(void); extern void sub_8010384(struct Sprite *); @@ -99,7 +99,7 @@ extern void nullsub_47(void); extern bool8 IsDoubleBattle(void); extern void sub_8037840(void); extern void sub_8031B74(); -extern u8 sub_8078874(); +extern u8 AnimBankSpriteExists(); extern u8 move_anim_start_t3(); extern void sub_8037FD8(void); extern void sub_8037F34(void); @@ -1285,7 +1285,7 @@ void LinkOpponentHandleTrainerSlideBack(void) gSprites[gObjectBankIDs[gActiveBank]].data2 = 280; gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); gBattleBankFunc[gActiveBank] = sub_80375B4; } @@ -1636,7 +1636,7 @@ void LinkOpponentHandleTrainerBallThrow(void) gSprites[gObjectBankIDs[gActiveBank]].data2 = 280; gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_803A3A8); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], sub_803A3A8); taskId = CreateTask(sub_803A2C4, 5); gTasks[taskId].data[0] = gActiveBank; if (ewram17810[gActiveBank].unk0_0) @@ -1733,7 +1733,7 @@ void LinkOpponentHandlecmd50(void) void LinkOpponentHandleSpriteInvisibility(void) { - if (sub_8078874(gActiveBank) != 0) + if (AnimBankSpriteExists(gActiveBank) != 0) { gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; sub_8031F88(gActiveBank); diff --git a/src/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c index 95022eaaf..3e34b2e25 100644 --- a/src/battle_controller_linkpartner.c +++ b/src/battle/battle_controller_linkpartner.c @@ -66,7 +66,7 @@ extern u8 gAnimScriptActive; extern void (*gAnimScriptCallback)(void); extern u8 move_anim_start_t3(); -extern u8 sub_8078874(); +extern u8 AnimBankSpriteExists(); extern void sub_8044CA0(u8); extern void sub_8030E38(struct Sprite *); extern void sub_80E43C0(); @@ -82,7 +82,7 @@ extern void sub_80324BC(); extern u8 sub_8031720(); extern u8 mplay_80342A4(); extern void oamt_add_pos2_onto_pos1(); -extern void oamt_set_x3A_32(); +extern void StoreSpriteCallbackInData6(); extern void sub_8078B34(struct Sprite *); extern void sub_80105EC(struct Sprite *); extern s32 sub_803FC34(u16); @@ -1239,7 +1239,7 @@ void LinkPartnerHandleTrainerSlideBack(void) gSprites[gObjectBankIDs[gActiveBank]].data2 = -40; gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); gBattleBankFunc[gActiveBank] = sub_811DB1C; } @@ -1592,7 +1592,7 @@ void LinkPartnerHandleTrainerBallThrow(void) gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; gSprites[gObjectBankIDs[gActiveBank]].data5 = gActiveBank; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); r4 = AllocSpritePalette(0xD6F9); LoadCompressedPalette( @@ -1682,7 +1682,7 @@ void LinkPartnerHandlecmd50(void) void LinkPartnerHandleSpriteInvisibility(void) { - if (sub_8078874(gActiveBank) != 0) + if (AnimBankSpriteExists(gActiveBank) != 0) { gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; sub_8031F88(gActiveBank); diff --git a/src/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index dd8c62cce..72b56b962 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -85,7 +85,7 @@ extern void sub_8032B84(void); extern void sub_8078B34(struct Sprite *); extern void sub_8032BBC(void); extern void oamt_add_pos2_onto_pos1(); -extern void oamt_set_x3A_32(); +extern void StoreSpriteCallbackInData6(); extern void sub_803311C(void); extern void sub_8010384(struct Sprite *); extern bool8 mplay_80342A4(u8); @@ -113,7 +113,7 @@ extern void nullsub_45(void); extern void sub_8031B74(); extern bool8 IsDoubleBattle(void); extern void sub_8032E2C(void); -extern u8 sub_8078874(); +extern u8 AnimBankSpriteExists(); extern u8 move_anim_start_t3(); extern void sub_80334C0(void); @@ -1281,7 +1281,7 @@ void OpponentHandleTrainerSlideBack(void) gSprites[gObjectBankIDs[gActiveBank]].data2 = 280; gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); gBattleBankFunc[gActiveBank] = sub_8032BBC; } @@ -1910,7 +1910,7 @@ void OpponentHandleTrainerBallThrow(void) gSprites[gObjectBankIDs[gActiveBank]].data2 = 280; gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_8035C10); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], sub_8035C10); taskId = CreateTask(sub_8035C44, 5); gTasks[taskId].data[0] = gActiveBank; if (ewram17810[gActiveBank].unk0_0) @@ -2007,7 +2007,7 @@ void OpponentHandlecmd50(void) void OpponentHandleSpriteInvisibility(void) { - if (sub_8078874(gActiveBank) != 0) + if (AnimBankSpriteExists(gActiveBank) != 0) { gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; sub_8031F88(gActiveBank); diff --git a/src/battle_controller_player.c b/src/battle/battle_controller_player.c index 5cfdeefbe..53b596c5e 100644 --- a/src/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -101,11 +101,11 @@ extern u8 GetBankSide(u8); extern void sub_80E43C0(); extern void oamt_add_pos2_onto_pos1(); extern void sub_8078B34(struct Sprite *); -extern void oamt_set_x3A_32(); +extern void StoreSpriteCallbackInData6(); extern void BattleLoadPlayerMonSprite(); extern bool8 IsDoubleBattle(void); extern void sub_802D500(void); -extern bool8 sub_8078874(u8); +extern bool8 AnimBankSpriteExists(u8); extern bool8 move_anim_start_t3(); extern void sub_802E460(void); extern void b_link_standby_message(void); @@ -2425,7 +2425,7 @@ void PlayerHandleTrainerSlideBack(void) gSprites[gObjectBankIDs[gActiveBank]].data2 = -40; gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); gBattleBankFunc[gActiveBank] = sub_802D274; } @@ -2896,7 +2896,7 @@ void PlayerHandleTrainerBallThrow(void) gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; gSprites[gObjectBankIDs[gActiveBank]].data5 = gActiveBank; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); paletteNum = AllocSpritePalette(0xD6F8); LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2.playerGender].data, 0x100 + paletteNum * 16, 32); @@ -2994,7 +2994,7 @@ void PlayerHandlecmd50(void) void PlayerHandleSpriteInvisibility(void) { - if (sub_8078874(gActiveBank)) + if (AnimBankSpriteExists(gActiveBank)) { gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; sub_8031F88(gActiveBank); diff --git a/src/battle_controller_safari.c b/src/battle/battle_controller_safari.c index e05578c31..e05578c31 100644 --- a/src/battle_controller_safari.c +++ b/src/battle/battle_controller_safari.c diff --git a/src/battle_controller_wally.c b/src/battle/battle_controller_wally.c index f2cf5bbb4..bf6ef0892 100644 --- a/src/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -89,7 +89,7 @@ extern void sub_80E43C0(); extern void oamt_add_pos2_onto_pos1(); extern void sub_8078B34(struct Sprite *); extern void sub_8030E38(struct Sprite *); -extern void oamt_set_x3A_32(); +extern void StoreSpriteCallbackInData6(); extern u8 sub_8046400(); extern u8 sub_8077ABC(); extern u8 sub_8077F68(); @@ -1490,7 +1490,7 @@ void WallyHandleTrainerBallThrow(void) gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; gSprites[gObjectBankIDs[gActiveBank]].data5 = gActiveBank; - oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); + StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38); StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); paletteNum = AllocSpritePalette(0xD6F8); LoadCompressedPalette(gTrainerBackPicPaletteTable[2].data, 0x100 + paletteNum * 16, 32); diff --git a/src/battle_interface.c b/src/battle/battle_interface.c index 246bda62b..0741ad33a 100644 --- a/src/battle_interface.c +++ b/src/battle/battle_interface.c @@ -2501,7 +2501,7 @@ static void sub_8045458(u8 a, u8 b) if (GetBankSide(r4) != 0) { u16 species = GetMonData(&gEnemyParty[gBattlePartyID[r4]], MON_DATA_SPECIES); - if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(species), 1) != 0) + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 1) != 0) { r4 = gSprites[a].data5; if (b != 0) diff --git a/src/battle_message.c b/src/battle/battle_message.c index a3cc320ad..a3cc320ad 100644 --- a/src/battle_message.c +++ b/src/battle/battle_message.c diff --git a/src/battle_party_menu.c b/src/battle/battle_party_menu.c index 49e0b8432..49e0b8432 100644 --- a/src/battle_party_menu.c +++ b/src/battle/battle_party_menu.c diff --git a/src/battle_records.c b/src/battle/battle_records.c index d848a10b8..d848a10b8 100644 --- a/src/battle_records.c +++ b/src/battle/battle_records.c diff --git a/src/battle_setup.c b/src/battle/battle_setup.c index 59e17e9eb..40949ed38 100644 --- a/src/battle_setup.c +++ b/src/battle/battle_setup.c @@ -876,7 +876,7 @@ static void CB2_StartFirstBattle(void) static void CB2_EndFirstBattle(void) { - sav1_reset_battle_music_maybe(); + Overworld_ClearSavedMusic(); SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); } diff --git a/src/battle_transition.c b/src/battle/battle_transition.c index 53d32d03a..53d32d03a 100644 --- a/src/battle_transition.c +++ b/src/battle/battle_transition.c diff --git a/src/calculate_base_damage.c b/src/battle/calculate_base_damage.c index f5c679876..f5c679876 100644 --- a/src/calculate_base_damage.c +++ b/src/battle/calculate_base_damage.c diff --git a/src/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c index 0ae98af09..0ae98af09 100644 --- a/src/contest_link_80C857C.c +++ b/src/battle/contest_link_80C857C.c diff --git a/src/pokeball.c b/src/battle/pokeball.c index ee3b95678..ee3b95678 100644 --- a/src/pokeball.c +++ b/src/battle/pokeball.c diff --git a/src/post_battle_event_funcs.c b/src/battle/post_battle_event_funcs.c index 27d7022fe..27d7022fe 100644 --- a/src/post_battle_event_funcs.c +++ b/src/battle/post_battle_event_funcs.c diff --git a/src/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c index 343c8f183..343c8f183 100644 --- a/src/reshow_battle_screen.c +++ b/src/battle/reshow_battle_screen.c diff --git a/src/smokescreen.c b/src/battle/smokescreen.c index 8345cb6ad..8345cb6ad 100644 --- a/src/smokescreen.c +++ b/src/battle/smokescreen.c diff --git a/src/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index c7d81f502..c7d81f502 100644 --- a/src/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c diff --git a/src/mori_debug_menu.c b/src/debug/mori_debug_menu.c index 1595ecd2e..1595ecd2e 100644 --- a/src/mori_debug_menu.c +++ b/src/debug/mori_debug_menu.c diff --git a/src/debug/sound_check_menu.c b/src/debug/sound_check_menu.c new file mode 100644 index 000000000..14261b75e --- /dev/null +++ b/src/debug/sound_check_menu.c @@ -0,0 +1,1300 @@ +#include "global.h" +#include "sprite.h" +#include "palette.h" +#include "task.h" +#include "m4a.h" +#include "main.h" +#include "text.h" +#include "menu.h" +#include "songs.h" +#include "title_screen.h" +#include "sound.h" +#include "pokedex_cry_screen.h" + +// local task defines +#define tWindowSelected data[0] +#define tBgmIndex data[1] +#define tSeIndex data[2] + +// window selections +enum +{ + BGM_WINDOW, + SE_WINDOW +}; + +// driver test cry enums +enum +{ + CRY_TEST_VOICE, + CRY_TEST_VOLUME, + CRY_TEST_PANPOT, + CRY_TEST_PITCH, + CRY_TEST_LENGTH, + CRY_TEST_RELEASE, + CRY_TEST_PROGRESS, + CRY_TEST_CHORUS, + CRY_TEST_PRIORITY +}; + +// minmax range enums +enum +{ + MIN, + MAX +}; + +extern struct ToneData voicegroup_84537C0[]; +extern struct ToneData voicegroup_8452590[]; +extern struct ToneData voicegroup_8453DC0[]; +extern struct ToneData voicegroup_8452B90[]; +extern struct ToneData voicegroup_84543C0[]; +extern struct ToneData voicegroup_8453190[]; +extern struct ToneData voicegroup_84549C0[]; +extern struct ToneData voicegroup_8453790[]; + +static EWRAM_DATA u8 gUnknown_020387B0 = 0; +static EWRAM_DATA u8 gUnknown_020387B1 = 0; +static EWRAM_DATA u8 gUnknown_020387B2 = 0; +static EWRAM_DATA s8 sDriverTestSelection = 0; +static EWRAM_DATA int sSoundTestParams[9] = {0}; +static EWRAM_DATA u8 gUnknown_020387D8 = 0; +static EWRAM_DATA u8 gUnknown_020387D9 = 0; + +u16 gSoundTestCryNum; +extern u8 gUnknown_03005E98; + +struct MusicPlayerInfo *gUnknown_03005D30; + +extern struct MusicPlayerInfo gMPlay_BGM; + +void Task_InitSoundCheckMenu(u8); +void sub_80BA384(u8); +void sub_80BA65C(u8); +void sub_80BA68C(u8); +void HighlightSelectedWindow(u8); +void PrintSoundNumber(u16, u16, u16); +void sub_80BA79C(const u8 *const, u16, u16); +void Task_DrawDriverTestMenu(u8); +void Task_ProcessDriverTestInput(u8); +void AdjustSelectedDriverParam(s8); +void PrintDriverTestMenuText(void); +void sub_80BAE10(u8, u8); +void PrintSignedNumber(int, u16, u16, u8); +void sub_80BAF84(u8); +void sub_80BB038(u8); +void sub_80BB1D4(void); +void Task_InitCryTest(u8); +void Task_ProcessCryTestInput(u8); +void PrintCryNumber(void); + +void CB2_SoundCheckMenu(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void VBlankCB_SoundCheckMenu(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + + if (gUnknown_020387B0 != 0) + { + m4aSoundMain(); + m4aSoundMain(); + m4aSoundMain(); + } +} + +// unused +void CB2_StartSoundCheckMenu(void) +{ + u8 taskId; + + SetVBlankCallback(NULL); + REG_DISPCNT = 0; + REG_BG2CNT = 0; + REG_BG1CNT = 0; + REG_BG0CNT = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + DmaFill16(3, 0, VRAM, VRAM_SIZE); + DmaFill32(3, 0, OAM, OAM_SIZE); + DmaFill16(3, 0, PLTT, PLTT_SIZE); + ResetPaletteFade(); + ResetTasks(); + ResetSpriteData(); + SetUpWindowConfig(&gWindowConfig_81E6C3C); + InitMenuWindow(&gWindowConfig_81E6CE4); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + REG_WIN0H = WIN_RANGE(0, 0); + REG_WIN0V = WIN_RANGE(0, 0); + REG_WIN1H = WIN_RANGE(0, 0); + REG_WIN1V = WIN_RANGE(0, 0); + REG_WININ = 0x1111; + REG_WINOUT = 0x31; + REG_BLDCNT = 0xE1; + REG_BLDALPHA = 0; + REG_BLDY = 7; + REG_IE = 1; // could be a typo of REG_IME + REG_IE |= 1; + REG_DISPSTAT |= 8; + SetVBlankCallback(VBlankCB_SoundCheckMenu); + SetMainCallback2(CB2_SoundCheckMenu); + REG_DISPCNT = 0x7140; + taskId = CreateTask(Task_InitSoundCheckMenu, 0); + gTasks[taskId].tWindowSelected = BGM_WINDOW; + gTasks[taskId].tBgmIndex = 0; + gTasks[taskId].tSeIndex = 0; + gTasks[taskId].data[3] = 0; + gUnknown_020387B0 = 0; + gTasks[taskId].data[3] = 0; // why? + m4aSoundInit(); +} + +void Task_InitSoundCheckMenu(u8 taskId) +{ + u8 soundcheckStr[] = _("サウンドチェック"); + u8 bgmStr[] = _("BGM"); + u8 seStr[] = _("SE "); + u8 abDescStr[] = _("A‥さいせい B‥おわり"); + u8 upDownStr[] = _("L‥UP R‥DOWN"); + u8 driverStr[] = _("R‥DRIVER-TEST"); + + if (!gPaletteFade.active) + { + MenuDrawTextWindow(2, 0, 27, 3); + MenuDrawTextWindow(2, 5, 27, 10); + MenuDrawTextWindow(2, 12, 27, 17); + MenuPrint(soundcheckStr, 4, 1); + MenuPrint(abDescStr, 14, 1); + MenuPrint(bgmStr, 4, 6); + MenuPrint(upDownStr, 14, 6); + MenuPrint(seStr, 4, 13); + MenuPrint(upDownStr, 14, 13); + MenuPrint(driverStr, 14, 18); + gTasks[taskId].func = sub_80BA384; + REG_WIN0H = WIN_RANGE(17, 223); + REG_WIN0V = WIN_RANGE(1, 31); + } +} + +// ideally this should be a multi Coords8 struct, but it wont match when its treated like a struct. +static const u8 gUnknown_083D0300[] = { 1, 1, 1, 3, 1, 5, 1, 7, 1, 9, 1, 11, 1, 13, 1, 15, 1, 17 }; + +extern const u8 *const gBGMNames[]; +extern const u8 *const gSENames[]; + +void sub_80BA384(u8 taskId) // Task_HandleDrawingSoundCheckMenuText +{ + HighlightSelectedWindow(gTasks[taskId].tWindowSelected); + PrintSoundNumber(gTasks[taskId].tBgmIndex + BGM_STOP, 7, 8); // print by BGM index + sub_80BA79C(gBGMNames[gTasks[taskId].tBgmIndex], 11, 8); + PrintSoundNumber(gTasks[taskId].tSeIndex, 7, 15); + sub_80BA79C(gSENames[gTasks[taskId].tSeIndex], 11, 15); + gTasks[taskId].func = sub_80BA65C; +} + +bool8 Task_ProcessSoundCheckMenuInput(u8 taskId) +{ + if (gMain.newKeys & R_BUTTON) // driver test + { + gTasks[taskId].func = Task_DrawDriverTestMenu; + } + else if (gMain.newKeys & L_BUTTON) + { + gTasks[taskId].func = sub_80BAF84; + } + else if (gMain.newKeys & START_BUTTON) + { + gTasks[taskId].func = Task_InitCryTest; + } + else if (gMain.newKeys & A_BUTTON) + { + if (gTasks[taskId].tWindowSelected != 0) // is playing? + { + if (gTasks[taskId].data[4] != 0) + { + if (gTasks[taskId].tSeIndex != 0) + { + m4aSongNumStop(gTasks[taskId].data[4]); + m4aSongNumStart(gTasks[taskId].tSeIndex); + gTasks[taskId].data[4] = gTasks[taskId].tSeIndex; + } + else + { + m4aSongNumStop(gTasks[taskId].data[4]); + gTasks[taskId].data[4] = 0; + } + } + else if (gTasks[taskId].tSeIndex != 0) + { + m4aSongNumStart(gTasks[taskId].tSeIndex); + gTasks[taskId].data[4] = gTasks[taskId].tSeIndex; + } + } + else + { + if (gTasks[taskId].data[3] != 0) + { + if (gTasks[taskId].tBgmIndex != 0) + { + m4aSongNumStop(gTasks[taskId].data[3] + BGM_STOP); + m4aSongNumStart(gTasks[taskId].tBgmIndex + BGM_STOP); + gTasks[taskId].data[3] = gTasks[taskId].tBgmIndex; + } + else + { + m4aSongNumStop(gTasks[taskId].data[3] + BGM_STOP); + gTasks[taskId].data[3] = 0; + } + } + else if (gTasks[taskId].tBgmIndex != 0) + { + m4aSongNumStart(gTasks[taskId].tBgmIndex + BGM_STOP); + gTasks[taskId].data[3] = gTasks[taskId].tBgmIndex; + } + } + } + else if (gMain.newKeys & B_BUTTON) + { + m4aSongNumStart(SE_SELECT); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_80BA68C; + } + else if (gMain.newAndRepeatedKeys & DPAD_UP) + { + gTasks[taskId].tWindowSelected ^= 1; + return TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + gTasks[taskId].tWindowSelected ^= 1; + return TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + if (gTasks[taskId].tWindowSelected != 0) + { + if (gTasks[taskId].tSeIndex > 0) + gTasks[taskId].tSeIndex--; + else + gTasks[taskId].tSeIndex = 247; + } + else + { + if (gTasks[taskId].tBgmIndex > 0) + gTasks[taskId].tBgmIndex--; + else + gTasks[taskId].tBgmIndex = 117; + } + return TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if (gTasks[taskId].tWindowSelected != 0) + { + if (gTasks[taskId].tSeIndex < 247) + gTasks[taskId].tSeIndex++; + else + gTasks[taskId].tSeIndex = 0; + } + else + { + if (gTasks[taskId].tBgmIndex < 117) + gTasks[taskId].tBgmIndex++; + else + gTasks[taskId].tBgmIndex = 0; + } + return TRUE; + } + else if (gMain.heldKeys & SELECT_BUTTON) + { + gUnknown_020387B0 = 1; + } + else + { + gUnknown_020387B0 = 0; + } + return FALSE; +} + +void sub_80BA65C(u8 taskId) +{ + if (Task_ProcessSoundCheckMenuInput(taskId) != FALSE) + gTasks[taskId].func = sub_80BA384; +} + +void sub_80BA68C(u8 taskId) +{ + if (!gPaletteFade.active) + { + DestroyTask(taskId); + SetMainCallback2(CB2_InitTitleScreen); + } +} + +void HighlightSelectedWindow(u8 windowType) +{ + switch (windowType) + { + case BGM_WINDOW: + default: + REG_WIN1H = WIN_RANGE(17, 223); + REG_WIN1V = WIN_RANGE(41, 87); + break; + case SE_WINDOW: + REG_WIN1H = WIN_RANGE(17, 223); + REG_WIN1V = WIN_RANGE(97, 143); + break; + } +} + +void PrintSoundNumber(u16 soundIndex, u16 x, u16 y) // PrintSoundNumber ? +{ + u8 i; + u8 str[5]; + bool8 someBool; + u8 divisorValue; + + for (i = 0; i < 3; i++) + str[i] = 0; // initialize array + + str[3] = CHAR_ELLIPSIS; + str[4] = EOS; + someBool = FALSE; + + divisorValue = soundIndex / 100; + if (divisorValue) + { + str[0] = divisorValue + CHAR_0; + someBool = TRUE; + } + + divisorValue = (soundIndex % 100) / 10; + if (divisorValue || someBool) + str[1] = divisorValue + CHAR_0; + + str[2] = ((soundIndex % 100) % 10) + CHAR_0; + MenuPrint(str, x, y); +} + +void sub_80BA79C(const u8 *const string, u16 x, u16 y) +{ + u8 i; + u8 str[11]; + + for (i = 0; i <= 10; i++) + str[i] = 0; // format string. + + str[10] = EOS; // the above for loop formats the last element of the array unnecessarily. + + for (i = 0; string[i] != EOS && i < 10; i++) + str[i] = string[i]; + + MenuPrint(str, x, y); +} + +void Task_DrawDriverTestMenu(u8 taskId) // Task_DrawDriverTestMenu +{ + u8 bbackStr[] = _("Bぼたんで もどる"); + u8 aplayStr[] = _("Aぼたんで さいせい"); + u8 voiceStr[] = _("VOICE‥‥‥‥"); + u8 volumeStr[] = _("VOLUME‥‥‥"); + u8 panpotStr[] = _("PANPOT‥‥‥"); + u8 pitchStr[] = _("PITCH‥‥‥‥"); + u8 lengthStr[] = _("LENGTH‥‥‥"); + u8 releaseStr[] = _("RELEASE‥‥"); + u8 progressStr[] = _("PROGRESS‥"); + u8 chorusStr[] = _("CHORUS‥‥‥"); + u8 priorityStr[] = _("PRIORITY‥"); + u8 playingStr[] = _("さいせいちゆう‥"); // 再生中 (playing) + u8 reverseStr[] = _("はんてん‥‥‥‥"); // 反転 (reverse) + u8 stereoStr[] = _("すてれお‥‥‥‥"); // stereo + + REG_DISPCNT = 0x3140; + MenuDrawTextWindow(0, 0, 29, 19); + MenuPrint(bbackStr, 19, 4); + MenuPrint(aplayStr, 19, 2); + MenuPrint(voiceStr, 2, 1); + MenuPrint(volumeStr, 2, 3); + MenuPrint(panpotStr, 2, 5); + MenuPrint(pitchStr, 2, 7); + MenuPrint(lengthStr, 2, 9); + MenuPrint(releaseStr, 2, 11); + MenuPrint(progressStr, 2, 13); + MenuPrint(chorusStr, 2, 15); + MenuPrint(priorityStr, 2, 17); + MenuPrint(playingStr, 19, 16); + MenuPrint(reverseStr, 19, 14); + MenuPrint(stereoStr, 19, 12); + REG_WIN0H = WIN_RANGE(0, DISPLAY_WIDTH); + REG_WIN0V = WIN_RANGE(0, DISPLAY_HEIGHT); + sDriverTestSelection = 0; + gUnknown_020387B1 = 0; + gUnknown_020387B2 = 0; + gUnknown_03005D30 = NULL; + gUnknown_020387D8 = 0; + gUnknown_020387D9 = 1; + sSoundTestParams[CRY_TEST_VOICE] = 0; + sSoundTestParams[CRY_TEST_VOLUME] = 120; + sSoundTestParams[CRY_TEST_PANPOT] = 0; + sSoundTestParams[CRY_TEST_PITCH] = 15360; + sSoundTestParams[CRY_TEST_LENGTH] = 180; + sSoundTestParams[CRY_TEST_PROGRESS] = 0; + sSoundTestParams[CRY_TEST_RELEASE] = 0; + sSoundTestParams[CRY_TEST_CHORUS] = 0; + sSoundTestParams[CRY_TEST_PRIORITY] = 2; + PrintDriverTestMenuText(); + sub_80BAE10(0, 0); + gTasks[taskId].func = Task_ProcessDriverTestInput; +} + +void Task_ProcessDriverTestInput(u8 taskId) +{ + if (gMain.newKeys & B_BUTTON) + { + REG_DISPCNT = 0x7140; + REG_WIN0H = WIN_RANGE(17, 223); + REG_WIN0V = WIN_RANGE(1, 31); + MenuZeroFillWindowRect(0, 0, 29, 19); + gTasks[taskId].func = Task_InitSoundCheckMenu; + return; + } + if (gMain.newAndRepeatedKeys & DPAD_UP) // _080BAAA8 + { + u8 old = sDriverTestSelection; + + if(--sDriverTestSelection < 0) + sDriverTestSelection = 8; + sub_80BAE10(old, sDriverTestSelection); + return; + } + if (gMain.newAndRepeatedKeys & DPAD_DOWN) // _080BAAD0 + { + u8 old = sDriverTestSelection; + + if(++sDriverTestSelection > 8) + sDriverTestSelection = 0; + sub_80BAE10(old, sDriverTestSelection); + return; + } + if (gMain.newKeys & START_BUTTON) // _080BAAF8 + { + gUnknown_020387D8 ^= 1; + PrintDriverTestMenuText(); + return; + } + if (gMain.newKeys & SELECT_BUTTON) // _080BAB14 + { + gUnknown_020387D9 ^= 1; + PrintDriverTestMenuText(); + SetPokemonCryStereo(gUnknown_020387D9); + return; + } + if (gMain.newAndRepeatedKeys & R_BUTTON) // _080BAB38 + { + AdjustSelectedDriverParam(10); + PrintDriverTestMenuText(); + return; + } + if (gMain.newAndRepeatedKeys & L_BUTTON) // _080BAB46 + { + AdjustSelectedDriverParam(-10); + PrintDriverTestMenuText(); + return; + } + if (gMain.newAndRepeatedKeys & DPAD_LEFT) // _080BAB56 + { + AdjustSelectedDriverParam(-1); + PrintDriverTestMenuText(); + return; + } + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) // _080BAB64 + { + AdjustSelectedDriverParam(1); + PrintDriverTestMenuText(); + return; + } + if (gMain.newKeys & A_BUTTON) // _080BAB78 + { + u8 divide, remaining; + + SetPokemonCryVolume(sSoundTestParams[CRY_TEST_VOLUME]); + SetPokemonCryPanpot(sSoundTestParams[CRY_TEST_PANPOT]); + SetPokemonCryPitch(sSoundTestParams[CRY_TEST_PITCH]); + SetPokemonCryLength(sSoundTestParams[CRY_TEST_LENGTH]); + SetPokemonCryProgress(sSoundTestParams[CRY_TEST_PROGRESS]); + SetPokemonCryRelease(sSoundTestParams[CRY_TEST_RELEASE]); + SetPokemonCryChorus(sSoundTestParams[CRY_TEST_CHORUS]); + SetPokemonCryPriority(sSoundTestParams[CRY_TEST_PRIORITY]); + + remaining = sSoundTestParams[CRY_TEST_VOICE] % 128; + divide = sSoundTestParams[CRY_TEST_VOICE] / 128; + + switch (divide) + { + case 0: + if (gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84537C0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8452590[remaining]); + break; + case 1: + if (gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453DC0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8452B90[remaining]); + break; + case 2: + if (gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84543C0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453190[remaining]); + break; + case 3: + if (gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84549C0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453790[remaining]); + break; + } + } + + // _080BACA2 + if (gUnknown_03005D30 != NULL) + { + gUnknown_020387B1 = IsPokemonCryPlaying(gUnknown_03005D30); + + if (gUnknown_020387B1 != gUnknown_020387B2) + PrintDriverTestMenuText(); + + gUnknown_020387B2 = gUnknown_020387B1; + } +} + +void AdjustSelectedDriverParam(s8 delta) +{ + // also ideally should be a MinMax struct, but any attempt to make this into a struct causes it to not match due to the weird multi dim access. + int paramRanges[] = + { + 0, 387, // Voice + 0, 127, // Volume + -127, 127, // Panpot + -128, 32639, // Pitch + 0, 65535, // Length + 0, 255, // Release + 0, 65535, // Progress + -64, 63 // Chorus + // Priority??? Why is it missing? + }; + + sSoundTestParams[sDriverTestSelection] += delta; + + if (sSoundTestParams[sDriverTestSelection] > paramRanges[MULTI_DIM_ARR(sDriverTestSelection, B_16, MAX)]) + sSoundTestParams[sDriverTestSelection] = paramRanges[MULTI_DIM_ARR(sDriverTestSelection, B_16, MIN)]; + + if (sSoundTestParams[sDriverTestSelection] < paramRanges[MULTI_DIM_ARR(sDriverTestSelection, B_16, MIN)]) + sSoundTestParams[sDriverTestSelection] = paramRanges[MULTI_DIM_ARR(sDriverTestSelection, B_16, MAX)]; +} + +void PrintDriverTestMenuText(void) +{ + PrintSignedNumber(sSoundTestParams[CRY_TEST_VOICE] + 1, 11, 1, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_VOLUME], 11, 3, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_PANPOT], 11, 5, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_PITCH], 11, 7, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_LENGTH], 11, 9, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_RELEASE], 11, 11, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_PROGRESS], 11, 13, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_CHORUS], 11, 15, 5); + PrintSignedNumber(sSoundTestParams[CRY_TEST_PRIORITY], 11, 17, 5); + PrintSignedNumber(gUnknown_020387B1, 27, 16, 1); + PrintSignedNumber(gUnknown_020387D8, 27, 14, 1); + PrintSignedNumber(gUnknown_020387D9, 27, 12, 1); +} + +void sub_80BAE10(u8 var1, u8 var2) +{ + u8 str1[] = _("▶"); + u8 str2[] = _(" "); + + MenuPrint(str2, gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 1)]); + MenuPrint(str1, gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 1)]); +} + +void PrintSignedNumber(int n, u16 x, u16 y, u8 digits) +{ + int powersOfTen[6] = + { + 1, + 10, + 100, + 1000, + 10000, + 100000 + }; + u8 str[8]; + s8 i; + s8 negative; + s8 someVar2; + + for (i = 0; i <= digits; i++) + str[i] = CHAR_SPACE; + str[digits + 1] = EOS; + + negative = FALSE; + if (n < 0) + { + n = -n; + negative = TRUE; + } + + if (digits == 1) + someVar2 = TRUE; + else + someVar2 = FALSE; + + for (i = digits - 1; i >= 0; i--) + { + s8 d = n / powersOfTen[i]; + + if (d != 0 || someVar2 || i == 0) + { + if (negative && !someVar2) + str[digits - i - 1] = CHAR_HYPHEN; + str[digits - i] = CHAR_0 + d; + someVar2 = TRUE; + } + n %= powersOfTen[i]; + } + + MenuPrint(str, x, y); +} + +static const s8 gUnknown_083D03F8[5] = { 0x3F, 0x00, 0xC0, 0x7F, 0x80 }; + +void sub_80BAF84(u8 taskId) +{ + u8 seStr[] = _("SE"); + u8 panStr[] = _("PAN"); + u8 playingStr[] = _("さいせいちゆう‥"); + + REG_DISPCNT = 0x3140; + MenuDrawTextWindow(0, 0, 29, 19); + MenuPrint(seStr, 3, 2); + MenuPrint(panStr, 3, 4); + MenuPrint(playingStr, 3, 8); + REG_WIN0H = WIN_RANGE(0, DISPLAY_WIDTH); + REG_WIN0V = WIN_RANGE(0, DISPLAY_HEIGHT); + sSoundTestParams[CRY_TEST_VOICE] = 1; + sSoundTestParams[CRY_TEST_PANPOT] = 0; + sSoundTestParams[CRY_TEST_CHORUS] = 0; + sSoundTestParams[CRY_TEST_PROGRESS] = 0; + sSoundTestParams[CRY_TEST_RELEASE] = 0; + sub_80BB1D4(); + gTasks[taskId].func = sub_80BB038; +} + +void sub_80BB038(u8 taskId) +{ + sub_80BB1D4(); + if (sSoundTestParams[CRY_TEST_PROGRESS]) + { + if (sSoundTestParams[CRY_TEST_RELEASE]) + { + sSoundTestParams[CRY_TEST_RELEASE]--; + } + else // _080BB05C + { + s8 panpot = gUnknown_083D03F8[sSoundTestParams[CRY_TEST_PANPOT]]; + if (panpot != -128) + { + if (panpot == 127) + { + sSoundTestParams[CRY_TEST_CHORUS] += 2; + if (sSoundTestParams[CRY_TEST_CHORUS] < 63) + SE12PanpotControl(sSoundTestParams[CRY_TEST_CHORUS]); + } + } + else // _080BB08C + { + sSoundTestParams[CRY_TEST_CHORUS] -= 2; + if (sSoundTestParams[CRY_TEST_CHORUS] > -64) + SE12PanpotControl(sSoundTestParams[CRY_TEST_CHORUS]); + } + } + } + // _080BB0A2 + if (gMain.newKeys & B_BUTTON) + { + REG_DISPCNT = 0x7140; + REG_WIN0H = WIN_RANGE(17, 223); + REG_WIN0V = WIN_RANGE(1, 31); + MenuZeroFillWindowRect(0, 0, 29, 19); + gTasks[taskId].func = Task_InitSoundCheckMenu; + return; + } + if (gMain.newKeys & A_BUTTON) // _080BB104 + { + s8 panpot = gUnknown_083D03F8[sSoundTestParams[CRY_TEST_PANPOT]]; + if (panpot != -128) + { + if (panpot == 127) + { + PlaySE12WithPanning(sSoundTestParams[CRY_TEST_VOICE], -64); + sSoundTestParams[CRY_TEST_CHORUS] = -64; + sSoundTestParams[CRY_TEST_PROGRESS] = 1; + sSoundTestParams[CRY_TEST_RELEASE] = 30; + return; + } + } + else // _080BB140 + { + PlaySE12WithPanning(sSoundTestParams[CRY_TEST_VOICE], 63); + sSoundTestParams[CRY_TEST_CHORUS] = 63; + sSoundTestParams[CRY_TEST_PROGRESS] = 1; + sSoundTestParams[CRY_TEST_RELEASE] = 30; + return; + } + // _080BB154 + PlaySE12WithPanning(sSoundTestParams[CRY_TEST_VOICE], panpot); + sSoundTestParams[CRY_TEST_PROGRESS] = 0; + return; + } + if (gMain.newKeys & L_BUTTON) // _080BB15E + { + sSoundTestParams[CRY_TEST_PANPOT]++; + if (sSoundTestParams[CRY_TEST_PANPOT] > 4) + sSoundTestParams[CRY_TEST_PANPOT] = 0; + } + if (gMain.newKeys & R_BUTTON) // _080BB176 + { + sSoundTestParams[CRY_TEST_PANPOT]--; + if (sSoundTestParams[CRY_TEST_PANPOT] < 0) + sSoundTestParams[CRY_TEST_PANPOT] = 4; + } + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) // _080BB192 + { + sSoundTestParams[CRY_TEST_VOICE]++; + if (sSoundTestParams[CRY_TEST_VOICE] > 247) + sSoundTestParams[CRY_TEST_VOICE] = 0; + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT) // _080BB1B0 + { + sSoundTestParams[CRY_TEST_VOICE]--; + if (sSoundTestParams[CRY_TEST_VOICE] < 0) + sSoundTestParams[CRY_TEST_VOICE] = 247; + } +} + +void sub_80BB1D4(void) +{ + u8 lrStr[] = _(" LR"); + u8 rlStr[] = _(" RL"); + + PrintSignedNumber(sSoundTestParams[CRY_TEST_VOICE], 7, 2, 3); + + switch (gUnknown_083D03F8[sSoundTestParams[CRY_TEST_PANPOT]]) + { + case 127: + MenuPrint(lrStr, 7, 4); + break; + case -128: + MenuPrint(rlStr, 7, 4); + break; + default: + PrintSignedNumber(gUnknown_083D03F8[sSoundTestParams[CRY_TEST_PANPOT]], 7, 4, 3); + break; + } + PrintSignedNumber(IsSEPlaying(), 12, 8, 1); +} + +#define SOUND_LIST_BGM \ + X(BGM_STOP, "STOP") \ + X(BGM_TETSUJI, "TETSUJI") \ + X(BGM_FIELD13, "FIELD13") \ + X(BGM_KACHI22, "KACHI22") \ + X(BGM_KACHI2, "KACHI2") \ + X(BGM_KACHI3, "KACHI3") \ + X(BGM_KACHI5, "KACHI5") \ + X(BGM_PCC, "PCC") \ + X(BGM_NIBI, "NIBI") \ + X(BGM_SUIKUN, "SUIKUN") \ + X(BGM_DOORO1, "DOORO1") \ + X(BGM_DOORO_X1, "DOORO-X1") \ + X(BGM_DOORO_X3, "DOORO-X3") \ + X(BGM_MACHI_S2, "MACHI-S2") \ + X(BGM_MACHI_S4, "MACHI-S4") \ + X(BGM_GIM, "GIM") \ + X(BGM_NAMINORI, "NAMINORI") \ + X(BGM_DAN01, "DAN01") \ + X(BGM_FANFA1, "FANFA1") \ + X(BGM_ME_ASA, "ME-ASA") \ + X(BGM_ME_BACHI, "ME-BACHI") \ + X(BGM_FANFA4, "FANFA4") \ + X(BGM_FANFA5, "FANFA5") \ + X(BGM_ME_WAZA, "ME-WAZA") \ + X(BGM_BIJYUTU, "BIJYUTU") \ + X(BGM_DOORO_X4, "DOORO-X4") \ + X(BGM_FUNE_KAN, "FUNE-KAN") \ + X(BGM_ME_SHINKA, "ME-SHINKA") \ + X(BGM_SHINKA, "SHINKA") \ + X(BGM_ME_WASURE, "ME-WASURE") \ + X(BGM_SYOUJOEYE, "SYOUJOEYE") \ + X(BGM_BOYEYE, "BOYEYE") \ + X(BGM_DAN02, "DAN02") \ + X(BGM_MACHI_S3, "MACHI-S3") \ + X(BGM_ODAMAKI, "ODAMAKI") \ + X(BGM_B_TOWER, "B-TOWER") \ + X(BGM_SWIMEYE, "SWIMEYE") \ + X(BGM_DAN03, "DAN03") \ + X(BGM_ME_KINOMI, "ME-KINOMI") \ + X(BGM_ME_TAMA, "ME-TAMA") \ + X(BGM_ME_B_BIG, "ME-B-BIG") \ + X(BGM_ME_B_SMALL, "ME-B-SMALL") \ + X(BGM_ME_ZANNEN, "ME-ZANNEN") \ + X(BGM_BD_TIME, "BD-TIME") \ + X(BGM_TEST1, "TEST1") \ + X(BGM_TEST2, "TEST2") \ + X(BGM_TEST3, "TEST3") \ + X(BGM_TEST4, "TEST4") \ + X(BGM_TEST, "TEST") \ + X(BGM_GOMACHI0, "GOMACHI0") \ + X(BGM_GOTOWN, "GOTOWN") \ + X(BGM_POKECEN, "POKECEN") \ + X(BGM_NEXTROAD, "NEXTROAD") \ + X(BGM_GRANROAD, "GRANROAD") \ + X(BGM_CYCLING, "CYCLING") \ + X(BGM_FRIENDLY, "FRIENDLY") \ + X(BGM_MISHIRO, "MISHIRO") \ + X(BGM_TOZAN, "TOZAN") \ + X(BGM_GIRLEYE, "GIRLEYE") \ + X(BGM_MINAMO, "MINAMO") \ + X(BGM_ASHROAD, "ASHROAD") \ + X(BGM_EVENT0, "EVENT0") \ + X(BGM_DEEPDEEP, "DEEPDEEP") \ + X(BGM_KACHI1, "KACHI1") \ + X(BGM_TITLE3, "TITLE3") \ + X(BGM_DEMO1, "DEMO1") \ + X(BGM_GIRL_SUP, "GIRL-SUP") \ + X(BGM_HAGESHII, "HAGESHII") \ + X(BGM_KAKKOII, "KAKKOII") \ + X(BGM_KAZANBAI, "KAZANBAI") \ + X(BGM_AQA_0, "AQA-0") \ + X(BGM_TSURETEK, "TSURETEK") \ + X(BGM_BOY_SUP, "BOY-SUP") \ + X(BGM_RAINBOW, "RAINBOW") \ + X(BGM_AYASII, "AYASII") \ + X(BGM_KACHI4, "KACHI4") \ + X(BGM_ROPEWAY, "ROPEWAY") \ + X(BGM_CASINO, "CASINO") \ + X(BGM_HIGHTOWN, "HIGHTOWN") \ + X(BGM_SAFARI, "SAFARI") \ + X(BGM_C_ROAD, "C-ROAD") \ + X(BGM_AJITO, "AJITO") \ + X(BGM_M_BOAT, "M-BOAT") \ + X(BGM_M_DUNGON, "M-DUNGON") \ + X(BGM_FINECITY, "FINECITY") \ + X(BGM_MACHUPI, "MACHUPI") \ + X(BGM_P_SCHOOL, "P-SCHOOL") \ + X(BGM_DENDOU, "DENDOU") \ + X(BGM_TONEKUSA, "TONEKUSA") \ + X(BGM_MABOROSI, "MABOROSI") \ + X(BGM_CON_FAN, "CON-FAN") \ + X(BGM_CONTEST0, "CONTEST0") \ + X(BGM_MGM0, "MGM0") \ + X(BGM_T_BATTLE, "T-BATTLE") \ + X(BGM_OOAME, "OOAME") \ + X(BGM_HIDERI, "HIDERI") \ + X(BGM_RUNECITY, "RUNECITY") \ + X(BGM_CON_K, "CON-K") \ + X(BGM_EIKOU_R, "EIKOU-R") \ + X(BGM_KARAKURI, "KARAKURI") \ + X(BGM_HUTAGO, "HUTAGO") \ + X(BGM_SITENNOU, "SITENNOU") \ + X(BGM_YAMA_EYE, "YAMA-EYE") \ + X(BGM_CONLOBBY, "CONLOBBY") \ + X(BGM_INTER_V, "INTER-V") \ + X(BGM_DAIGO, "DAIGO") \ + X(BGM_THANKFOR, "THANKFOR") \ + X(BGM_END, "END") \ + X(BGM_BATTLE27, "BATTLE27") \ + X(BGM_BATTLE31, "BATTLE31") \ + X(BGM_BATTLE20, "BATTLE20") \ + X(BGM_BATTLE32, "BATTLE32") \ + X(BGM_BATTLE33, "BATTLE33") \ + X(BGM_BATTLE36, "BATTLE36") \ + X(BGM_BATTLE34, "BATTLE34") \ + X(BGM_BATTLE35, "BATTLE35") \ + X(BGM_BATTLE38, "BATTLE38") \ + X(BGM_BATTLE30, "BATTLE30") + +#define SOUND_LIST_SE \ + X(SE_STOP, "STOP") \ + X(SE_KAIFUKU, "KAIFUKU") \ + X(SE_PC_LOGON, "PC-LOGON") \ + X(SE_PC_OFF, "PC-OFF") \ + X(SE_PC_ON, "PC-ON") \ + X(SE_SELECT, "SELECT") \ + X(SE_WIN_OPEN, "WIN-OPEN") \ + X(SE_WALL_HIT, "WALL-HIT") \ + X(SE_DOOR, "DOOR") \ + X(SE_KAIDAN, "KAIDAN") \ + X(SE_DANSA, "DANSA") \ + X(SE_JITENSYA, "JITENSYA") \ + X(SE_KOUKA_L, "KOUKA-L") \ + X(SE_KOUKA_M, "KOUKA-M") \ + X(SE_KOUKA_H, "KOUKA-H") \ + X(SE_BOWA2, "BOWA2") \ + X(SE_POKE_DEAD, "POKE-DEAD") \ + X(SE_NIGERU, "NIGERU") \ + X(SE_JIDO_DOA, "JIDO-DOA") \ + X(SE_NAMINORI, "NAMINORI") \ + X(SE_BAN, "BAN") \ + X(SE_PIN, "PIN") \ + X(SE_BOO, "BOO") \ + X(SE_BOWA, "BOWA") \ + X(SE_JYUNI, "JYUNI") \ + X(SE_A, "A") \ + X(SE_I, "I") \ + X(SE_U, "U") \ + X(SE_E, "E") \ + X(SE_O, "O") \ + X(SE_N, "N") \ + X(SE_SEIKAI, "SEIKAI") \ + X(SE_HAZURE, "HAZURE") \ + X(SE_EXP, "EXP") \ + X(SE_JITE_PYOKO, "JITE-PYOKO") \ + X(SE_MU_PACHI, "MU-PACHI") \ + X(SE_TK_KASYA, "TK-KASYA") \ + X(SE_FU_ZAKU, "FU-ZAKU") \ + X(SE_FU_ZAKU2, "FU-ZAKU2") \ + X(SE_FU_ZUZUZU, "FU-ZUZUZU") \ + X(SE_RU_GASHIN, "RU-GASHIN") \ + X(SE_RU_GASYAN, "RU-GASYAN") \ + X(SE_RU_BARI, "RU-BARI") \ + X(SE_RU_HYUU, "RU-HYUU") \ + X(SE_KI_GASYAN, "KI-GASYAN") \ + X(SE_TK_WARPIN, "TK-WARPIN") \ + X(SE_TK_WARPOUT, "TK-WARPOUT") \ + X(SE_TU_SAA, "TU-SAA") \ + X(SE_HI_TURUN, "HI-TURUN") \ + X(SE_TRACK_MOVE, "TRACK-MOVE") \ + X(SE_TRACK_STOP, "TRACK-STOP") \ + X(SE_TRACK_HAIK, "TRACK-HAIK") \ + X(SE_TRACK_DOOR, "TRACK-DOOR") \ + X(SE_MOTER, "MOTER") \ + X(SE_CARD, "CARD") \ + X(SE_SAVE, "SAVE") \ + X(SE_KON, "KON") \ + X(SE_KON2, "KON2") \ + X(SE_KON3, "KON3") \ + X(SE_KON4, "KON4") \ + X(SE_SUIKOMU, "SUIKOMU") \ + X(SE_NAGERU, "NAGERU") \ + X(SE_TOY_C, "TOY-C") \ + X(SE_TOY_D, "TOY-D") \ + X(SE_TOY_E, "TOY-E") \ + X(SE_TOY_F, "TOY-F") \ + X(SE_TOY_G, "TOY-G") \ + X(SE_TOY_A, "TOY-A") \ + X(SE_TOY_B, "TOY-B") \ + X(SE_TOY_C1, "TOY-C1") \ + X(SE_MIZU, "MIZU") \ + X(SE_HASHI, "HASHI") \ + X(SE_DAUGI, "DAUGI") \ + X(SE_PINPON, "PINPON") \ + X(SE_FUUSEN1, "FUUSEN1") \ + X(SE_FUUSEN2, "FUUSEN2") \ + X(SE_FUUSEN3, "FUUSEN3") \ + X(SE_TOY_KABE, "TOY-KABE") \ + X(SE_TOY_DANGO, "TOY-DANGO") \ + X(SE_DOKU, "DOKU") \ + X(SE_ESUKA, "ESUKA") \ + X(SE_T_AME, "T-AME") \ + X(SE_T_AME_E, "T-AME-E") \ + X(SE_T_OOAME, "T-OOAME") \ + X(SE_T_OOAME_E, "T-OOAME-E") \ + X(SE_T_KOAME, "T-KOAME") \ + X(SE_T_KOAME_E, "T-KOAME-E") \ + X(SE_T_KAMI, "T-KAMI") \ + X(SE_T_KAMI2, "T-KAMI2") \ + X(SE_ELEBETA, "ELEBETA") \ + X(SE_HINSI, "HINSI") \ + X(SE_EXPMAX, "EXPMAX") \ + X(SE_TAMAKORO, "TAMAKORO") \ + X(SE_TAMAKORO_E, "TAMAKORO-E") \ + X(SE_BASABASA, "BASABASA") \ + X(SE_REGI, "REGI") \ + X(SE_C_GAJI, "C-GAJI") \ + X(SE_C_MAKU_U, "C-MAKU-U") \ + X(SE_C_MAKU_D, "C-MAKU-D") \ + X(SE_C_PASI, "C-PASI") \ + X(SE_C_SYU, "C-SYU") \ + X(SE_C_PIKON, "C-PIKON") \ + X(SE_REAPOKE, "REAPOKE") \ + X(SE_OP_BASYU, "OP-BASYU") \ + X(SE_BT_START, "BT-START") \ + X(SE_DENDOU, "DENDOU") \ + X(SE_JIHANKI, "JIHANKI") \ + X(SE_TAMA, "TAMA") \ + X(SE_Z_SCROLL, "Z-SCROLL") \ + X(SE_Z_PAGE, "Z-PAGE") \ + X(SE_PN_ON, "PN-ON") \ + X(SE_PN_OFF, "PN-OFF") \ + X(SE_Z_SEARCH, "Z-SEARCH") \ + X(SE_TAMAGO, "TAMAGO") \ + X(SE_TB_START, "TB-START") \ + X(SE_TB_KON, "TB-KON") \ + X(SE_TB_KARA, "TB-KARA") \ + X(SE_BIDORO, "BIDORO") \ + X(SE_W085, "W085") \ + X(SE_W085B, "W085B") \ + X(SE_W231, "W231") \ + X(SE_W171, "W171") \ + X(SE_W233, "W233") \ + X(SE_W233B, "W233B") \ + X(SE_W145, "W145") \ + X(SE_W145B, "W145B") \ + X(SE_W145C, "W145C") \ + X(SE_W240, "W240") \ + X(SE_W015, "W015") \ + X(SE_W081, "W081") \ + X(SE_W081B, "W081B") \ + X(SE_W088, "W088") \ + X(SE_W016, "W016") \ + X(SE_W016B, "W016B") \ + X(SE_W003, "W003") \ + X(SE_W104, "W104") \ + X(SE_W013, "W013") \ + X(SE_W196, "W196") \ + X(SE_W086, "W086") \ + X(SE_W004, "W004") \ + X(SE_W025, "W025") \ + X(SE_W025B, "W025B") \ + X(SE_W152, "W152") \ + X(SE_W026, "W026") \ + X(SE_W172, "W172") \ + X(SE_W172B, "W172B") \ + X(SE_W053, "W053") \ + X(SE_W007, "W007") \ + X(SE_W092, "W092") \ + X(SE_W221, "W221") \ + X(SE_W221B, "W221B") \ + X(SE_W052, "W052") \ + X(SE_W036, "W036") \ + X(SE_W059, "W059") \ + X(SE_W059B, "W059B") \ + X(SE_W010, "W010") \ + X(SE_W011, "W011") \ + X(SE_W017, "W017") \ + X(SE_W019, "W019") \ + X(SE_W028, "W028") \ + X(SE_W013B, "W013B") \ + X(SE_W044, "W044") \ + X(SE_W029, "W029") \ + X(SE_W057, "W057") \ + X(SE_W056, "W056") \ + X(SE_W250, "W250") \ + X(SE_W030, "W030") \ + X(SE_W039, "W039") \ + X(SE_W054, "W054") \ + X(SE_W077, "W077") \ + X(SE_W020, "W020") \ + X(SE_W082, "W082") \ + X(SE_W047, "W047") \ + X(SE_W195, "W195") \ + X(SE_W006, "W006") \ + X(SE_W091, "W091") \ + X(SE_W146, "W146") \ + X(SE_W120, "W120") \ + X(SE_W153, "W153") \ + X(SE_W071B, "W071B") \ + X(SE_W071, "W071") \ + X(SE_W103, "W103") \ + X(SE_W062, "W062") \ + X(SE_W062B, "W062B") \ + X(SE_W048, "W048") \ + X(SE_W187, "W187") \ + X(SE_W118, "W118") \ + X(SE_W155, "W155") \ + X(SE_W122, "W122") \ + X(SE_W060, "W060") \ + X(SE_W185, "W185") \ + X(SE_W014, "W014") \ + X(SE_W043, "W043") \ + X(SE_W207, "W207") \ + X(SE_W207B, "W207B") \ + X(SE_W215, "W215") \ + X(SE_W109, "W109") \ + X(SE_W173, "W173") \ + X(SE_W280, "W280") \ + X(SE_W202, "W202") \ + X(SE_W060B, "W060B") \ + X(SE_W076, "W076") \ + X(SE_W080, "W080") \ + X(SE_W100, "W100") \ + X(SE_W107, "W107") \ + X(SE_W166, "W166") \ + X(SE_W129, "W129") \ + X(SE_W115, "W115") \ + X(SE_W112, "W112") \ + X(SE_W197, "W197") \ + X(SE_W199, "W199") \ + X(SE_W236, "W236") \ + X(SE_W204, "W204") \ + X(SE_W268, "W268") \ + X(SE_W070, "W070") \ + X(SE_W063, "W063") \ + X(SE_W127, "W127") \ + X(SE_W179, "W179") \ + X(SE_W151, "W151") \ + X(SE_W201, "W201") \ + X(SE_W161, "W161") \ + X(SE_W161B, "W161B") \ + X(SE_W227, "W227") \ + X(SE_W227B, "W227B") \ + X(SE_W226, "W226") \ + X(SE_W208, "W208") \ + X(SE_W213, "W213") \ + X(SE_W213B, "W213B") \ + X(SE_W234, "W234") \ + X(SE_W260, "W260") \ + X(SE_W328, "W328") \ + X(SE_W320, "W320") \ + X(SE_W255, "W255") \ + X(SE_W291, "W291") \ + X(SE_W089, "W089") \ + X(SE_W239, "W239") \ + X(SE_W230, "W230") \ + X(SE_W281, "W281") \ + X(SE_W327, "W327") \ + X(SE_W287, "W287") \ + X(SE_W257, "W257") \ + X(SE_W253, "W253") \ + X(SE_W258, "W258") \ + X(SE_W322, "W322") \ + X(SE_W298, "W298") \ + X(SE_W287B, "W287B") \ + X(SE_W114, "W114") \ + X(SE_W063B, "W063B") + +// Create BGM list +#define X(songId, name) static const u8 sBGMName_##songId[] = _(name); +SOUND_LIST_BGM +#undef X + +#define X(songId, name) sBGMName_##songId, +static const u8 *const gBGMNames[] = +{ +SOUND_LIST_BGM +}; +#undef X + +// Create SE list +#define X(songId, name) static const u8 sSEName_##songId[] = _(name); +SOUND_LIST_SE +#undef X + +#define X(songId, name) sSEName_##songId, +static const u8 *const gSENames[] = +{ +SOUND_LIST_SE +}; +#undef X + +void Task_InitCryTest(u8 taskId) +{ + struct CryRelatedStruct cryStruct, cryStruct2; + u8 zero; + + SetUpWindowConfig(&gWindowConfig_81E6C3C); + InitMenuWindow(&gWindowConfig_81E6CE4); + gSoundTestCryNum = 1; + ResetSpriteData(); + FreeAllSpritePalettes(); + + cryStruct.unk0 = 0x2000; + cryStruct.unk2 = 29; + cryStruct.paletteNo = 12; + cryStruct.yPos = 30; + cryStruct.xPos = 4; + + zero = 0; // wtf? + gUnknown_03005E98 = 0; + + while (sub_8119E3C(&cryStruct, 3) == FALSE) + ; + + cryStruct2.unk0 = 0; + cryStruct2.unk2 = 15; + cryStruct2.paletteNo = 13; + cryStruct2.xPos = 12; + cryStruct2.yPos = 12; + + zero = 0; // wtf? + gUnknown_03005E98 = 0; + + while (ShowPokedexCryScreen(&cryStruct2, 2) == FALSE) + ; + + MenuDrawTextWindow(0, 16, 5, 19); + PrintCryNumber(); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG2CNT = 0xF01; + REG_BG3CNT = 0x1D03; + REG_DISPCNT = 0x1d40; + m4aMPlayFadeOutTemporarily(&gMPlay_BGM, 2); + gTasks[taskId].func = Task_ProcessCryTestInput; +} + +void Task_ProcessCryTestInput(u8 taskId) +{ + sub_8119F88(3); + + if (gMain.newKeys & A_BUTTON) + { + sub_811A050(gSoundTestCryNum); + } + if (gMain.newKeys & R_BUTTON) + { + StopCryAndClearCrySongs(); + } + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if(--gSoundTestCryNum == 0) + gSoundTestCryNum = 384; // total species + PrintCryNumber(); + } + if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if(++gSoundTestCryNum > 384) + gSoundTestCryNum = 1; + PrintCryNumber(); + } + if (gMain.newKeys & B_BUTTON) + { + REG_DISPCNT = 0x7140; + REG_WIN0H = WIN_RANGE(17, 223); + REG_WIN0V = WIN_RANGE(1, 31); + MenuZeroFillWindowRect(0, 0, 29, 19); + gTasks[taskId].func = Task_InitSoundCheckMenu; + DestroyCryMeterNeedleSprite(); + } +} + +void PrintCryNumber(void) +{ + PrintSignedNumber(gSoundTestCryNum, 1, 17, 3); +} diff --git a/src/unknown_debug_menu.c b/src/debug/unknown_debug_menu.c index a81625f2a..a81625f2a 100644 --- a/src/unknown_debug_menu.c +++ b/src/debug/unknown_debug_menu.c diff --git a/src/blend_palette.c b/src/engine/blend_palette.c index 843c50ac1..843c50ac1 100644 --- a/src/blend_palette.c +++ b/src/engine/blend_palette.c diff --git a/src/cable_club.c b/src/engine/cable_club.c index 7a85f2b6c..c61a1d01c 100644 --- a/src/cable_club.c +++ b/src/engine/cable_club.c @@ -68,7 +68,7 @@ static void sub_8083B6C(void); static void sub_8083CA4(u8 taskId); extern void sub_80831F8(u8 taskId); -extern void call_map_music_set_to_zero(void); +extern void Overworld_ResetMapMusic(void); extern void sub_810FEFC(void); extern void sub_8047CD8(void); extern void sub_805559C(void); @@ -708,7 +708,7 @@ static void sub_808382C(u8 taskId) static void sub_8083958(void) { - call_map_music_set_to_zero(); + Overworld_ResetMapMusic(); LoadPlayerParty(); SavePlayerBag(); sub_810FEFC(); diff --git a/src/clear_save_data_menu.c b/src/engine/clear_save_data_menu.c index 498562fe0..498562fe0 100644 --- a/src/clear_save_data_menu.c +++ b/src/engine/clear_save_data_menu.c diff --git a/src/clock.c b/src/engine/clock.c index 9635514d2..9635514d2 100644 --- a/src/clock.c +++ b/src/engine/clock.c diff --git a/src/decompress.c b/src/engine/decompress.c index d7f7087a7..3e5993118 100644 --- a/src/decompress.c +++ b/src/engine/decompress.c @@ -6,7 +6,7 @@ #define WRAM 0x02000000 -void sub_800D238(const void *src, void *dest) +void LZDecompressWram(const void *src, void *dest) { LZ77UnCompWram(src, dest); } diff --git a/src/link.c b/src/engine/link.c index 850201ccb..850201ccb 100644 --- a/src/link.c +++ b/src/engine/link.c diff --git a/src/load_save.c b/src/engine/load_save.c index 8424b1121..8424b1121 100644 --- a/src/load_save.c +++ b/src/engine/load_save.c diff --git a/src/main.c b/src/engine/main.c index d7c11b6c8..d7c11b6c8 100644 --- a/src/main.c +++ b/src/engine/main.c diff --git a/src/main_menu.c b/src/engine/main_menu.c index e0af86f3d..e0af86f3d 100644 --- a/src/main_menu.c +++ b/src/engine/main_menu.c diff --git a/src/menu.c b/src/engine/menu.c index a9c4aaa43..a9c4aaa43 100644 --- a/src/menu.c +++ b/src/engine/menu.c diff --git a/src/menu_cursor.c b/src/engine/menu_cursor.c index d43be2a2f..d43be2a2f 100644 --- a/src/menu_cursor.c +++ b/src/engine/menu_cursor.c diff --git a/src/mystery_event_menu.c b/src/engine/mystery_event_menu.c index 0e48dc177..0e48dc177 100644 --- a/src/mystery_event_menu.c +++ b/src/engine/mystery_event_menu.c diff --git a/src/mystery_event_script.c b/src/engine/mystery_event_script.c index f507942a7..a6568f5de 100644 --- a/src/mystery_event_script.c +++ b/src/engine/mystery_event_script.c @@ -401,8 +401,8 @@ bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx) if (species != SPECIES_EGG) { u16 pokedexNum = SpeciesToNationalPokedexNum(species); - GetNationalPokedexFlag(pokedexNum, 2); - GetNationalPokedexFlag(pokedexNum, 3); + GetSetPokedexFlag(pokedexNum, 2); + GetSetPokedexFlag(pokedexNum, 3); } heldItem = GetMonData(&gPlayerParty[5], MON_DATA_HELD_ITEM); diff --git a/src/name_string_util.c b/src/engine/name_string_util.c index f1a935453..f1a935453 100644 --- a/src/name_string_util.c +++ b/src/engine/name_string_util.c diff --git a/src/naming_screen.c b/src/engine/naming_screen.c index 3f8417e6d..3f8417e6d 100644 --- a/src/naming_screen.c +++ b/src/engine/naming_screen.c diff --git a/src/option_menu.c b/src/engine/option_menu.c index dfc49b035..dfc49b035 100644 --- a/src/option_menu.c +++ b/src/engine/option_menu.c diff --git a/src/palette.c b/src/engine/palette.c index 94a4f8092..17e9ca178 100644 --- a/src/palette.c +++ b/src/engine/palette.c @@ -74,7 +74,7 @@ static bool8 IsSoftwarePaletteFadeFinishing(void); void LoadCompressedPalette(const void *src, u16 offset, u16 size) { - sub_800D238(src, sPaletteDecompressionBuffer); + LZDecompressWram(src, sPaletteDecompressionBuffer); CpuCopy16(sPaletteDecompressionBuffer, gPlttBufferUnfaded + offset, size); CpuCopy16(sPaletteDecompressionBuffer, gPlttBufferFaded + offset, size); } diff --git a/src/play_time.c b/src/engine/play_time.c index 9882c9c4b..9882c9c4b 100644 --- a/src/play_time.c +++ b/src/engine/play_time.c diff --git a/src/record_mixing.c b/src/engine/record_mixing.c index 8dff432c1..8dff432c1 100644 --- a/src/record_mixing.c +++ b/src/engine/record_mixing.c diff --git a/src/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index d052992ad..d052992ad 100644 --- a/src/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c diff --git a/src/rng.c b/src/engine/rng.c index 7d4b5600e..7d4b5600e 100644 --- a/src/rng.c +++ b/src/engine/rng.c diff --git a/src/rtc.c b/src/engine/rtc.c index d73f943d2..d73f943d2 100644 --- a/src/rtc.c +++ b/src/engine/rtc.c diff --git a/src/save.c b/src/engine/save.c index eae3f4470..eae3f4470 100644 --- a/src/save.c +++ b/src/engine/save.c diff --git a/src/save_failed_screen.c b/src/engine/save_failed_screen.c index b91e8b5bf..b91e8b5bf 100644 --- a/src/save_failed_screen.c +++ b/src/engine/save_failed_screen.c diff --git a/src/save_menu_util.c b/src/engine/save_menu_util.c index a2d17bd36..a2d17bd36 100644 --- a/src/save_menu_util.c +++ b/src/engine/save_menu_util.c diff --git a/src/script.c b/src/engine/script.c index f049b96fc..8625cfdc2 100644 --- a/src/script.c +++ b/src/engine/script.c @@ -3,6 +3,14 @@ #include "event_data.h" #define RAM_SCRIPT_MAGIC 51 +#define SCRIPT_STACK_SIZE 20 + +enum +{ + SCRIPT_MODE_STOPPED, + SCRIPT_MODE_BYTECODE, + SCRIPT_MODE_NATIVE, +}; EWRAM_DATA u8 *gUnknown_0202E8AC = NULL; @@ -19,66 +27,66 @@ void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTable { s32 i; - ctx->mode = 0; - ctx->scriptPtr = 0; + ctx->mode = SCRIPT_MODE_STOPPED; + ctx->scriptPtr = NULL; ctx->stackDepth = 0; - ctx->nativePtr = 0; + ctx->nativePtr = NULL; ctx->cmdTable = cmdTable; ctx->cmdTableEnd = cmdTableEnd; for (i = 0; i < 4; i++) ctx->data[i] = 0; - for (i = 0; i < 20; i++) + for (i = 0; i < SCRIPT_STACK_SIZE; i++) ctx->stack[i] = 0; } u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr) { ctx->scriptPtr = ptr; - ctx->mode = 1; + ctx->mode = SCRIPT_MODE_BYTECODE; return 1; } void SetupNativeScript(struct ScriptContext *ctx, bool8 (*ptr)(void)) { - ctx->mode = 2; + ctx->mode = SCRIPT_MODE_NATIVE; ctx->nativePtr = ptr; } void StopScript(struct ScriptContext *ctx) { - ctx->mode = 0; - ctx->scriptPtr = 0; + ctx->mode = SCRIPT_MODE_STOPPED; + ctx->scriptPtr = NULL; } -u8 RunScriptCommand(struct ScriptContext *ctx) +bool8 RunScriptCommand(struct ScriptContext *ctx) { - if (ctx->mode == 0) - return 0; + if (ctx->mode == SCRIPT_MODE_STOPPED) + return FALSE; switch (ctx->mode) { - case 0: - return 0; - case 2: + case SCRIPT_MODE_STOPPED: + return FALSE; + case SCRIPT_MODE_NATIVE: if (ctx->nativePtr) { if (ctx->nativePtr() == TRUE) - ctx->mode = 1; - return 1; + ctx->mode = SCRIPT_MODE_BYTECODE; + return TRUE; } - ctx->mode = 1; - case 1: + ctx->mode = SCRIPT_MODE_BYTECODE; + case SCRIPT_MODE_BYTECODE: while (1) { u8 cmdCode; - ScrCmdFunc *func; + ScrCmdFunc *cmdFunc; - if (!ctx->scriptPtr) + if (ctx->scriptPtr == NULL) { - ctx->mode = 0; - return 0; + ctx->mode = SCRIPT_MODE_STOPPED; + return FALSE; } if (ctx->scriptPtr == gNullScriptPtr) @@ -89,25 +97,25 @@ u8 RunScriptCommand(struct ScriptContext *ctx) cmdCode = *(ctx->scriptPtr); ctx->scriptPtr++; - func = &ctx->cmdTable[cmdCode]; + cmdFunc = &ctx->cmdTable[cmdCode]; - if (func >= ctx->cmdTableEnd) + if (cmdFunc >= ctx->cmdTableEnd) { - ctx->mode = 0; - return 0; + ctx->mode = SCRIPT_MODE_STOPPED; + return FALSE; } - if ((*func)(ctx) == 1) - return 1; + if ((*cmdFunc)(ctx) == TRUE) + return TRUE; } } - return 1; + return TRUE; } u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr) { - if (ctx->stackDepth + 1 >= 20) + if (ctx->stackDepth + 1 >= SCRIPT_STACK_SIZE) { return 1; } diff --git a/src/sound.c b/src/engine/sound.c index 91f5e06a3..a6a61c0b5 100644 --- a/src/sound.c +++ b/src/engine/sound.c @@ -81,8 +81,6 @@ void MapMusicMain(void) PlayBGM(sCurrentMapMusic); break; case 2: - case 3: - case 4: break; case 5: if (IsBGMStopped()) diff --git a/src/sprite.c b/src/engine/sprite.c index fb8c2b648..fb8c2b648 100644 --- a/src/sprite.c +++ b/src/engine/sprite.c diff --git a/src/string_util.c b/src/engine/string_util.c index 9686256a1..9686256a1 100644 --- a/src/string_util.c +++ b/src/engine/string_util.c diff --git a/src/task.c b/src/engine/task.c index 7bd2b5937..7bd2b5937 100644 --- a/src/task.c +++ b/src/engine/task.c diff --git a/src/text.c b/src/engine/text.c index 35f74b339..87903608f 100644 --- a/src/text.c +++ b/src/engine/text.c @@ -219,12 +219,12 @@ static const u8 sBrailleGlyphs[] = INCBIN_U8("graphics/fonts/font6_braille.1bpp" static const u32 sDownArrowTiles[] = INCBIN_U32("graphics/fonts/down_arrow.4bpp"); // clang-format off -#include "data/text/type1_map.h" -#include "data/text/type3_map.h" -#include "data/text/font1_widths.h" -#include "data/text/font4_widths.h" -#include "data/text/font0_widths.h" -#include "data/text/font3_widths.h" +#include "../data/text/type1_map.h" +#include "../data/text/type3_map.h" +#include "../data/text/font1_widths.h" +#include "../data/text/font4_widths.h" +#include "../data/text/font0_widths.h" +#include "../data/text/font3_widths.h" // clang-format on const u16 gUnknownPalette_81E6692[] = INCBIN_U16("graphics/fonts/unknown_81E6692.gbapal"); diff --git a/src/text_window.c b/src/engine/text_window.c index 9a88789d1..9a88789d1 100644 --- a/src/text_window.c +++ b/src/engine/text_window.c diff --git a/src/tileset_anim.c b/src/engine/tileset_anim.c index 34685381d..34685381d 100644 --- a/src/tileset_anim.c +++ b/src/engine/tileset_anim.c diff --git a/src/time_events.c b/src/engine/time_events.c index accb03db8..accb03db8 100644 --- a/src/time_events.c +++ b/src/engine/time_events.c diff --git a/src/trade.c b/src/engine/trade.c index 37b91f57e..19381f4ee 100644 --- a/src/trade.c +++ b/src/engine/trade.c @@ -2403,7 +2403,7 @@ static void sub_8049ED4(u8 a0) gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].data0 = 20; gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].data2 = (gTradeMonSpriteCoords[6 * whichParty + whichPokemon][0] + gTradeMonSpriteCoords[6 * whichParty + whichPokemon + 1][0]) / 2 * 8 + 14; gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].data4 = gTradeMonSpriteCoords[6 * whichParty + whichPokemon][1] * 8 - 12; - oamt_set_x3A_32(&gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]], sub_809D62C); + StoreSpriteCallbackInData6(&gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]], sub_809D62C); gUnknown_03004824->unk_0080[a0] ++; sub_8078A34(&gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]]); HandleDestroyMenuCursors(); @@ -2617,7 +2617,7 @@ static void sub_8049ED4(u8 a0) "\tlsls r0, 2\n" "\tadds r0, r7\n" "\tldr r1, _0804A0A0 @ =sub_809D62C\n" - "\tbl oamt_set_x3A_32\n" + "\tbl StoreSpriteCallbackInData6\n" "\tldr r2, _0804A09C @ =gUnknown_03004824\n" "\tldr r1, [r2]\n" "\tadds r1, 0x80\n" @@ -3943,11 +3943,11 @@ static void sub_804B2D0(u8 whichParty, u8 a1) species = GetMonData(pokemon, MON_DATA_SPECIES2); personality = GetMonData(pokemon, MON_DATA_PERSONALITY); HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, (u32)ewram, gUnknown_081FAF4C[whichParty * 2 + 1], species, personality); - LoadCompressedObjectPalette(sub_8040990(pokemon)); + LoadCompressedObjectPalette(GetMonSpritePalStruct(pokemon)); gUnknown_03004828->tradeSpecies[whichParty] = species; break; case 1: - GetMonSpriteTemplate_803C56C(sub_8040990(pokemon)->tag, v0); + GetMonSpriteTemplate_803C56C(GetMonSpritePalStruct(pokemon)->tag, v0); gUnknown_03004828->pokePicSpriteIdxs[whichParty] = CreateSprite(&gUnknown_02024E8C, 0x78, 0x3c, 0x6); gSprites[gUnknown_03004828->pokePicSpriteIdxs[whichParty]].invisible = TRUE; gSprites[gUnknown_03004828->pokePicSpriteIdxs[whichParty]].callback = SpriteCallbackDummy; @@ -4545,8 +4545,8 @@ static void sub_804BA18(u8 partyIdx) if (!GetMonData(pokemon, MON_DATA_IS_EGG)) { u16 species = SpeciesToNationalPokedexNum(GetMonData(pokemon, MON_DATA_SPECIES, NULL)); - GetNationalPokedexFlag(species, 2); - GetNationalPokedexFlag(species, 3); + GetSetPokedexFlag(species, 2); + GetSetPokedexFlag(species, 3); } } @@ -4949,7 +4949,7 @@ static bool8 sub_804C29C(void) gUnknown_03004828->unk_00c4 ++; break; case 37: - if (!sub_8040A3C(gUnknown_03004828->tradeSpecies[0])) + if (!IsPokeSpriteNotFlipped(gUnknown_03004828->tradeSpecies[0])) { gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].affineAnims = gSpriteAffineAnimTable_8215AC0; gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].oam.affineMode = 3; diff --git a/src/trainer_card.c b/src/engine/trainer_card.c index bcb62ede6..bcb62ede6 100644 --- a/src/trainer_card.c +++ b/src/engine/trainer_card.c diff --git a/src/trig.c b/src/engine/trig.c index e16a69e63..e16a69e63 100644 --- a/src/trig.c +++ b/src/engine/trig.c diff --git a/src/util.c b/src/engine/util.c index 582b9f806..582b9f806 100644 --- a/src/util.c +++ b/src/engine/util.c diff --git a/src/bard_music.c b/src/field/bard_music.c index daf003233..daf003233 100644 --- a/src/bard_music.c +++ b/src/field/bard_music.c diff --git a/src/berry.c b/src/field/berry.c index d82eab2a6..d82eab2a6 100644 --- a/src/berry.c +++ b/src/field/berry.c diff --git a/src/berry_tag_screen.c b/src/field/berry_tag_screen.c index 1413a02ca..1413a02ca 100644 --- a/src/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c diff --git a/src/bike.c b/src/field/bike.c index dae86bd88..8df901b40 100644 --- a/src/bike.c +++ b/src/field/bike.c @@ -935,13 +935,13 @@ void GetOnOffBike(u8 var) if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE)) { SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); - sav1_reset_battle_music_maybe(); - sub_8053E90(); + Overworld_ClearSavedMusic(); + Overworld_PlaySpecialMapMusic(); } else { SetPlayerAvatarTransitionFlags(var); - sav1_set_battle_music_maybe(BGM_CYCLING); + Overworld_SetSavedMusic(BGM_CYCLING); Overworld_ChangeMusicTo(BGM_CYCLING); } } diff --git a/src/birch_pc.c b/src/field/birch_pc.c index 5fb6427c3..9872dd54d 100644 --- a/src/birch_pc.c +++ b/src/field/birch_pc.c @@ -91,15 +91,15 @@ const u8 *GetPokedexRatingText(u16 count) return gBirchDexRatingText_LessThan200; if (count == 200) { - if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) - || GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // Jirachi or Deoxys is not counted towards the dex completion. If either of these flags are enabled, it means the actual count is less than 200. + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) + || GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // Jirachi or Deoxys is not counted towards the dex completion. If either of these flags are enabled, it means the actual count is less than 200. return gBirchDexRatingText_LessThan200; return gBirchDexRatingText_DexCompleted; } if (count == 201) { - if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) - && GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // If both of these flags are enabled, it means the actual count is less than 200. + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) + && GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // If both of these flags are enabled, it means the actual count is less than 200. return gBirchDexRatingText_LessThan200; return gBirchDexRatingText_DexCompleted; } diff --git a/src/braille_puzzles.c b/src/field/braille_puzzles.c index b11b1ff3a..b11b1ff3a 100644 --- a/src/braille_puzzles.c +++ b/src/field/braille_puzzles.c diff --git a/src/choose_party.c b/src/field/choose_party.c index 9cdf63fc8..9cdf63fc8 100644 --- a/src/choose_party.c +++ b/src/field/choose_party.c diff --git a/src/coins.c b/src/field/coins.c index 3c6356612..91a4b508d 100644 --- a/src/coins.c +++ b/src/field/coins.c @@ -6,47 +6,47 @@ #define MAX_COINS 9999 -void UpdateCoinsWindow(s32 a, u8 b, u8 c) +void UpdateCoinsWindow(s32 coins, u8 x, u8 y) { - PrintCoins(a, 4, b + 2, c + 1); + PrintCoins(coins, 4, x + 2, y + 1); } -void ShowCoinsWindow(u32 a, u8 b, u8 c) +void ShowCoinsWindow(u32 coins, u8 x, u8 y) { - MenuDrawTextWindow(b, c, b + 9, c + 3); - UpdateCoinsWindow(a, b, c); + MenuDrawTextWindow(x, y, x + 9, y + 3); + UpdateCoinsWindow(coins, x, y); } -void HideCoinsWindow(u8 a, u8 b) +void HideCoinsWindow(u8 x, u8 y) { - MenuZeroFillWindowRect(a, b, a + 9, b + 3); + MenuZeroFillWindowRect(x, y, x + 9, y + 3); } -void PrintCoins(s32 a, u8 b, u8 c, u8 d) +void PrintCoins(s32 coins, u8 b, u8 x, u8 y) { u8 string[16]; u8 *ptr; u8 r1; u8 foo; - ConvertIntToDecimalString(string, a); + ConvertIntToDecimalString(string, coins); r1 = (b * 6 + 0x21 - 8 * (b + 2)); - c = c - r1 / 8; + x = x - r1 / 8; foo = r1 % 8; ptr = gStringVar1; if (foo) { - ptr[0] = 0xFC; + ptr[0] = EXT_CTRL_CODE_BEGIN; ptr[1] = 0x11; ptr[2] = 8 - (foo); ptr += 3; } - ptr[0] = 0xFC; + ptr[0] = EXT_CTRL_CODE_BEGIN; ptr[1] = 0x11; ptr[2] = (b - StringLength(string)) * 6; ptr += 3; StringCopy(ptr, string); - MenuPrint(gOtherText_Coins2, c, d); + MenuPrint(gOtherText_Coins2, x, y); } u16 GetCoins(void) diff --git a/src/coord_event_weather.c b/src/field/coord_event_weather.c index 9c5a1ca4d..9c5a1ca4d 100644 --- a/src/coord_event_weather.c +++ b/src/field/coord_event_weather.c diff --git a/src/daycare.c b/src/field/daycare.c index 591b5b188..591b5b188 100644 --- a/src/daycare.c +++ b/src/field/daycare.c diff --git a/src/decoration.c b/src/field/decoration.c index 1d48692c1..e067191e9 100644 --- a/src/decoration.c +++ b/src/field/decoration.c @@ -619,7 +619,7 @@ const u8 DecorDesc_REGISTEEL_DOLL[] = _( "Place it on a mat\n" "or a desk."); #elif GERMAN -#include "data/decoration/descriptions_de.h" +#include "../data/decoration/descriptions_de.h" #endif const u16 DecorGfx_SMALL_DESK[] = { @@ -1389,7 +1389,7 @@ const struct Decoration gDecorations[] = { {DECOR_REGISTEEL_DOLL, _("REGISTEEL DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_REGISTEEL_DOLL, DecorGfx_REGISTEEL_DOLL} }; #elif GERMAN -#include "data/decoration/decorations.h" +#include "../data/decoration/decorations.h" #endif const u8 *const gUnknown_083EC5E4[] = { @@ -2199,7 +2199,7 @@ void sub_80FF0E0(u8 taskId) void sub_80FF114(u8 taskId) { DrawWholeMapView(); - warp1_set(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gTasks[taskId].data[3], gTasks[taskId].data[4]); + Overworld_SetWarpDestination(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gTasks[taskId].data[3], gTasks[taskId].data[4]); warp_in(); } void sub_80FF160(u8 taskId) diff --git a/src/decoration_inventory.c b/src/field/decoration_inventory.c index 083cb260c..083cb260c 100644 --- a/src/decoration_inventory.c +++ b/src/field/decoration_inventory.c diff --git a/src/dewford_trend.c b/src/field/dewford_trend.c index aaf4dd66a..aaf4dd66a 100644 --- a/src/dewford_trend.c +++ b/src/field/dewford_trend.c diff --git a/src/diploma.c b/src/field/diploma.c index 27601404c..27601404c 100644 --- a/src/diploma.c +++ b/src/field/diploma.c diff --git a/src/easy_chat.c b/src/field/easy_chat.c index e71067454..6014b3d14 100644 --- a/src/easy_chat.c +++ b/src/field/easy_chat.c @@ -430,7 +430,7 @@ static u16 sub_80EB9D8(void) for (i = 0; i < gEasyChatGroupSizes[EC_GROUP_POKEMON]; i++) { const u16 dexNum = SpeciesToNationalPokedexNum(*speciesList); - const u8 local2 = GetNationalPokedexFlag(dexNum, 0); + const u8 local2 = GetSetPokedexFlag(dexNum, 0); if (local2) { diff --git a/src/event_data.c b/src/field/event_data.c index ee475343f..43d49c417 100644 --- a/src/event_data.c +++ b/src/field/event_data.c @@ -114,10 +114,8 @@ u16 *GetVarPointer(u16 id) { if (id < 0x4000) return NULL; - - if ((s16)id >= 0) + if (id < 0x8000) return &gSaveBlock1.vars[id - 0x4000]; - return gSpecialVars[id - 0x8000]; } diff --git a/src/field_camera.c b/src/field/field_camera.c index db51cf054..db51cf054 100644 --- a/src/field_camera.c +++ b/src/field/field_camera.c diff --git a/src/field_control_avatar.c b/src/field/field_control_avatar.c index ff8e8504c..ff8e8504c 100644 --- a/src/field_control_avatar.c +++ b/src/field/field_control_avatar.c diff --git a/src/field_door.c b/src/field/field_door.c index ab46f0696..ab46f0696 100644 --- a/src/field_door.c +++ b/src/field/field_door.c diff --git a/src/field_effect.c b/src/field/field_effect.c index 72224f299..afe020ac7 100644 --- a/src/field_effect.c +++ b/src/field/field_effect.c @@ -660,7 +660,7 @@ u8 CreateMonSprite_FieldMove(u16 species, u32 d, u32 g, s16 x, s16 y, u8 subprio const struct CompressedSpritePalette *spritePalette; HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, (u32)gUnknown_081FAF4C[3] /* this is actually u8* or something, pointing to ewram */, gUnknown_081FAF4C[3], species, g); - spritePalette = sub_80409C8(species, d, g); + spritePalette = GetMonSpritePalStructFromOtIdPersonality(species, d, g); LoadCompressedObjectPalette(spritePalette); GetMonSpriteTemplate_803C56C(species, 3); gUnknown_02024E8C.paletteTag = spritePalette->tag; @@ -1213,7 +1213,7 @@ void task00_8084310(u8 taskId) } if (!FieldEffectActiveListContains(FLDEFF_USE_FLY)) { - flag_var_implications_of_teleport_(); + Overworld_ResetStateAfterFly(); warp_in(); SetMainCallback2(CB2_LoadMap); gFieldCallback = mapldr_08084390; @@ -1223,7 +1223,7 @@ void task00_8084310(u8 taskId) void mapldr_08084390(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_black(); CreateTask(c3_080843F8, 0); gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 1; @@ -1264,7 +1264,7 @@ extern void CameraObjectReset1(void); void sub_8086748(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_for_map_transition(); ScriptContext2_Enable(); FreezeMapObjects(); @@ -1533,7 +1533,7 @@ void sub_8086C40(void) void sub_8086C94(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_for_map_transition(); ScriptContext2_Enable(); CreateTask(sub_8086CBC, 0); @@ -1897,7 +1897,7 @@ void sub_8087470(u8); void mapldr_080851BC(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_for_map_transition(); ScriptContext2_Enable(); gFieldCallback = NULL; @@ -2134,7 +2134,7 @@ void sub_8087A74(u8); void mapldr_080859D4(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_for_map_transition(); ScriptContext2_Enable(); FreezeMapObjects(); @@ -2266,7 +2266,7 @@ void sub_8087D78(struct Task *task) { if (!gPaletteFade.active && sub_8054034() == TRUE) { - sub_8053570(); + Overworld_SetWarpDestToLastHealLoc(); warp_in(); SetMainCallback2(CB2_LoadMap); gFieldCallback = mapldr_08085D88; @@ -2278,7 +2278,7 @@ void sub_8087E1C(u8); void mapldr_08085D88(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_for_map_transition(); ScriptContext2_Enable(); FreezeMapObjects(); @@ -2879,7 +2879,7 @@ u8 FldEff_UseSurf(void) u8 taskId; taskId = CreateTask(sub_8088954, 0xff); gTasks[taskId].data[15] = gFieldEffectArguments[0]; - sav1_reset_battle_music_maybe(); + Overworld_ClearSavedMusic(); Overworld_ChangeMusicTo(0x016d); return FALSE; } diff --git a/src/field_effect_helpers.c b/src/field/field_effect_helpers.c index 2ad8bdce3..2ad8bdce3 100644 --- a/src/field_effect_helpers.c +++ b/src/field/field_effect_helpers.c diff --git a/src/field_fadetransition.c b/src/field/field_fadetransition.c index d95177821..82776d18c 100644 --- a/src/field_fadetransition.c +++ b/src/field/field_fadetransition.c @@ -89,7 +89,7 @@ void task0A_asap_script_env_2_enable_and_set_ctx_running(u8 taskID) void sub_8080990(void) { ScriptContext2_Enable(); - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_black(); CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10); } @@ -130,7 +130,7 @@ void task_mpl_807DD60(u8 taskId) void sub_8080A3C(void) { ScriptContext2_Enable(); - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); palette_bg_fill_black(); CreateTask(task_mpl_807DD60, 10); } @@ -165,7 +165,7 @@ void sub_8080A5C(u8 taskId) void sub_8080AC4(void) { ScriptContext2_Enable(); - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); palette_bg_fill_black(); CreateTask(sub_8080A5C, 10); } @@ -188,7 +188,7 @@ void sub_8080AE4(void) void mapldr_default(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_for_map_transition(); sub_8080AE4(); ScriptContext2_Enable(); @@ -196,7 +196,7 @@ void mapldr_default(void) void sub_8080B60(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_black(); sub_8080AE4(); ScriptContext2_Enable(); @@ -204,7 +204,7 @@ void sub_8080B60(void) void sub_8080B78(void) { - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_for_map_transition(); PlaySE(SE_TK_WARPOUT); CreateTask(task_map_chg_seq_0807E2CC, 10); @@ -354,7 +354,7 @@ void sub_8080E28(void) void sub_8080E44(void) { ScriptContext2_Enable(); - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); pal_fill_black(); CreateTask(task_mpl_807E3C8, 10); } diff --git a/src/field_ground_effect.c b/src/field/field_ground_effect.c index 5af8ea3e3..5af8ea3e3 100644 --- a/src/field_ground_effect.c +++ b/src/field/field_ground_effect.c diff --git a/src/field_map_obj.c b/src/field/field_map_obj.c index 59319a16e..0cba448a9 100644 --- a/src/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -2462,24 +2462,24 @@ extern void sub_8064970(struct Sprite *); extern void sub_8060470(s16 *, s16 *, s16, s16); extern void InitObjectPriorityByZCoord(); -u8 sub_805B410(u8 a, u8 b, s16 c, s16 d, u8 e, u8 f) +u8 sub_805B410(u8 graphicsId, u8 b, s16 x, s16 y, u8 elevation, u8 direction) { const struct MapObjectGraphicsInfo *gfxInfo; struct SpriteTemplate spriteTemplate; const struct SubspriteTable *subspriteTables; u8 spriteId; - gfxInfo = GetFieldObjectGraphicsInfo(a); - MakeObjectTemplateFromFieldObjectGraphicsInfo(a, sub_8064970, &spriteTemplate, &subspriteTables); + gfxInfo = GetFieldObjectGraphicsInfo(graphicsId); + MakeObjectTemplateFromFieldObjectGraphicsInfo(graphicsId, sub_8064970, &spriteTemplate, &subspriteTables); #ifdef NONMATCHING spriteTemplate.paletteTag = 0xFFFF; #else *(u16 *)&spriteTemplate.paletteTag = 0xFFFF; #endif - c += 7; - d += 7; - sub_8060470(&c, &d, 8, 16); - spriteId = CreateSpriteAtEnd(&spriteTemplate, c, d, 0); + x += 7; + y += 7; + sub_8060470(&x, &y, 8, 16); + spriteId = CreateSpriteAtEnd(&spriteTemplate, x, y, 0); if (spriteId != 64) { struct Sprite *sprite = &gSprites[spriteId]; @@ -2490,7 +2490,7 @@ u8 sub_805B410(u8 a, u8 b, s16 c, s16 d, u8 e, u8 f) sprite->oam.paletteNum = gfxInfo->paletteSlot; sprite->coordOffsetEnabled = TRUE; sprite->data0 = b; - sprite->data1 = e; + sprite->data1 = elevation; if (gfxInfo->paletteSlot == 10) npc_load_two_palettes__and_record(gfxInfo->paletteTag1, gfxInfo->paletteSlot); if (subspriteTables != NULL) @@ -2498,9 +2498,9 @@ u8 sub_805B410(u8 a, u8 b, s16 c, s16 d, u8 e, u8 f) SetSubspriteTables(sprite, subspriteTables); sprite->subspriteMode = 2; } - InitObjectPriorityByZCoord(sprite, e); - SetObjectSubpriorityByZCoord(e, sprite, 1); - StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(f)); + InitObjectPriorityByZCoord(sprite, elevation); + SetObjectSubpriorityByZCoord(elevation, sprite, 1); + StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(direction)); } return spriteId; } diff --git a/src/field_map_obj_helpers.c b/src/field/field_map_obj_helpers.c index b453d3794..b453d3794 100644 --- a/src/field_map_obj_helpers.c +++ b/src/field/field_map_obj_helpers.c diff --git a/src/field_message_box.c b/src/field/field_message_box.c index 35aac7ac9..35aac7ac9 100644 --- a/src/field_message_box.c +++ b/src/field/field_message_box.c diff --git a/src/field_player_avatar.c b/src/field/field_player_avatar.c index e7947b704..6c1c9123a 100644 --- a/src/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -1365,8 +1365,8 @@ void sub_805A20C(u8 a) u8 taskId; ScriptContext2_Enable(); - sav1_reset_battle_music_maybe(); - sub_8053F84(); + Overworld_ClearSavedMusic(); + Overworld_ChangeMusicToDefault(); gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_SURFING; gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_ON_FOOT; gPlayerAvatar.unk6 = 1; diff --git a/src/field_poison.c b/src/field/field_poison.c index 1244b9c62..1244b9c62 100644 --- a/src/field_poison.c +++ b/src/field/field_poison.c diff --git a/src/field_region_map.c b/src/field/field_region_map.c index 7cb22e5df..7cb22e5df 100644 --- a/src/field_region_map.c +++ b/src/field/field_region_map.c diff --git a/src/field_screen_effect.c b/src/field/field_screen_effect.c index 1464a99b1..0c76d254d 100644 --- a/src/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -327,7 +327,7 @@ static void task50_0807F0C8(u8); void sub_8081924(void) { - sub_8054044(); + Overworld_FadeOutMapMusic(); CreateTask(task50_0807F0C8, 80); } diff --git a/src/field_special_scene.c b/src/field/field_special_scene.c index 38c076c51..d4b59c8a2 100644 --- a/src/field_special_scene.c +++ b/src/field/field_special_scene.c @@ -250,7 +250,7 @@ bool8 sub_80C7754(void) } else { - warp1_set(mapGroup, mapNum, -1, x, y); + Overworld_SetWarpDestination(mapGroup, mapNum, -1, x, y); return TRUE; } } diff --git a/src/field_specials.c b/src/field/field_specials.c index c23ea2ddc..36362d098 100644 --- a/src/field_specials.c +++ b/src/field/field_specials.c @@ -213,7 +213,7 @@ void UpdateCyclingRoadState(void) { if (VarGet(0x40a9) == 2 || VarGet(0x40a9) == 3) { VarSet(0x40a9, 0); - sav1_set_battle_music_maybe(SE_STOP); + Overworld_SetSavedMusic(SE_STOP); } } @@ -700,11 +700,11 @@ void CableCarWarp(void) { if (gSpecialVar_0x8004 != 0) { - warp1_set(MAP_GROUP_ROUTE112_CABLE_CAR_STATION, MAP_ID_ROUTE112_CABLE_CAR_STATION, -1, 6, 4); + Overworld_SetWarpDestination(MAP_GROUP_ROUTE112_CABLE_CAR_STATION, MAP_ID_ROUTE112_CABLE_CAR_STATION, -1, 6, 4); } else { - warp1_set(MAP_GROUP_MT_CHIMNEY_CABLE_CAR_STATION, MAP_ID_MT_CHIMNEY_CABLE_CAR_STATION, -1, 6, 4); + Overworld_SetWarpDestination(MAP_GROUP_MT_CHIMNEY_CABLE_CAR_STATION, MAP_ID_MT_CHIMNEY_CABLE_CAR_STATION, -1, 6, 4); } } diff --git a/src/field_tasks.c b/src/field/field_tasks.c index da6f162c2..da6f162c2 100644 --- a/src/field_tasks.c +++ b/src/field/field_tasks.c diff --git a/src/field_weather.c b/src/field/field_weather.c index 443a38357..443a38357 100644 --- a/src/field_weather.c +++ b/src/field/field_weather.c diff --git a/src/fieldmap.c b/src/field/fieldmap.c index 7a31ae720..7a31ae720 100644 --- a/src/fieldmap.c +++ b/src/field/fieldmap.c diff --git a/src/fldeff_cut.c b/src/field/fldeff_cut.c index 00643a979..00643a979 100644 --- a/src/fldeff_cut.c +++ b/src/field/fldeff_cut.c diff --git a/src/fldeff_flash.c b/src/field/fldeff_flash.c index 1ee8a8f05..1ee8a8f05 100644 --- a/src/fldeff_flash.c +++ b/src/field/fldeff_flash.c diff --git a/src/fldeff_softboiled.c b/src/field/fldeff_softboiled.c index cb26d9966..cb26d9966 100644 --- a/src/fldeff_softboiled.c +++ b/src/field/fldeff_softboiled.c diff --git a/src/fldeff_strength.c b/src/field/fldeff_strength.c index d9603d094..d9603d094 100644 --- a/src/fldeff_strength.c +++ b/src/field/fldeff_strength.c diff --git a/src/fldeff_sweetscent.c b/src/field/fldeff_sweetscent.c index b9dbf619d..b9dbf619d 100644 --- a/src/fldeff_sweetscent.c +++ b/src/field/fldeff_sweetscent.c diff --git a/src/fldeff_teleport.c b/src/field/fldeff_teleport.c index af48fb414..af48fb414 100644 --- a/src/fldeff_teleport.c +++ b/src/field/fldeff_teleport.c diff --git a/src/heal_location.c b/src/field/heal_location.c index 42bc18567..42bc18567 100644 --- a/src/heal_location.c +++ b/src/field/heal_location.c diff --git a/src/hof_pc.c b/src/field/hof_pc.c index aeeb7fe17..267ed4274 100644 --- a/src/hof_pc.c +++ b/src/field/hof_pc.c @@ -28,7 +28,7 @@ void ReturnFromHallOfFamePC(void) static void ReshowPCMenuAfterHallOfFamePC(void) { ScriptContext2_Enable(); - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0); ScrSpecial_CreatePCMenu(); ScriptMenu_DisplayPCStartupPrompt(); diff --git a/src/item.c b/src/field/item.c index 36871285a..fd49f5c39 100644 --- a/src/item.c +++ b/src/field/item.c @@ -30,11 +30,11 @@ enum }; #if ENGLISH -#include "data/item_descriptions_en.h" -#include "data/items_en.h" +#include "../data/item_descriptions_en.h" +#include "../data/items_en.h" #elif GERMAN -#include "data/item_descriptions_de.h" -#include "data/items_de.h" +#include "../data/item_descriptions_de.h" +#include "../data/items_de.h" #endif static void CompactPCItems(void); diff --git a/src/item_menu.c b/src/field/item_menu.c index 891eb135f..c508bcacf 100644 --- a/src/item_menu.c +++ b/src/field/item_menu.c @@ -152,7 +152,7 @@ static u8 sReturnLocation; static const u8 *sPopupMenuActionList; // common -void (*gUnknown_03005D00)(u8) = NULL; +void (*gFieldItemUseCallback)(u8) = NULL; extern u16 gUnknown_030041B4; extern struct PocketScrollState gBagPocketScrollStates[]; extern struct ItemSlot *gCurrentBagPocketItemSlots; // selected pocket item slots @@ -2718,7 +2718,7 @@ void ExecuteItemUseFromBlackPalette(void) static void Task_CallItemUseOnFieldCallback(u8 taskId) { if (sub_807D770() == TRUE) - gUnknown_03005D00(taskId); + gFieldItemUseCallback(taskId); } void sub_80A5D04(void) @@ -4492,7 +4492,7 @@ static void LoadBerryPic(u8 berryId) spritePal.data = (u16 *)sBerryGraphicsTable[berryId].lzPalette; spritePal.tag = 0x7544; LoadCompressedObjectPalette((struct CompressedSpritePalette *)&spritePal); - sub_800D238(sBerryGraphicsTable[berryId].lzPic, ewramBerryPicTemp); + LZDecompressWram(sBerryGraphicsTable[berryId].lzPic, ewramBerryPicTemp); DrawBerryPic(ewramBerryPicTemp, ewramBerryPic); } } diff --git a/src/item_use.c b/src/field/item_use.c index 8bc83bdc6..68da27fdb 100644 --- a/src/item_use.c +++ b/src/field/item_use.c @@ -36,7 +36,7 @@ #include "task.h" #include "vars.h" -extern void (*gUnknown_03005D00)(u8); +extern void (*gFieldItemUseCallback)(u8); extern void (*gFieldCallback)(void); extern void (*gUnknown_0300485C)(void); extern void (*gUnknown_03004AE4)(u8, u16, TaskFunc); @@ -106,11 +106,13 @@ void SetUpItemUseOnFieldCallback(u8 taskId) { if (gTasks[taskId].data[2] != 1) { - gFieldCallback = (void *)ExecuteItemUseFromBlackPalette; + gFieldCallback = ExecuteItemUseFromBlackPalette; ItemMenu_ConfirmNormalFade(taskId); } else - gUnknown_03005D00(taskId); + { + gFieldItemUseCallback(taskId); + } } void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *text) @@ -185,9 +187,9 @@ void ItemUseOutOfBattle_Bike(u8 taskId) } else { - if (Overworld_IsBikeAllowedOnCurrentMap() == TRUE && IsBikingDisallowedByPlayer() == FALSE) + if (Overworld_IsBikingAllowed() == TRUE && IsBikingDisallowedByPlayer() == FALSE) { - gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Bike; + gFieldItemUseCallback = (void *)ItemUseOnFieldCB_Bike; SetUpItemUseOnFieldCallback(taskId); } else @@ -241,7 +243,7 @@ void ItemUseOutOfBattle_Rod(u8 taskId) { if (CanFish() == TRUE) { - gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Rod; + gFieldItemUseCallback = (void *)ItemUseOnFieldCB_Rod; SetUpItemUseOnFieldCallback(taskId); } else @@ -257,7 +259,7 @@ void ItemUseOnFieldCB_Rod(u8 taskId) void ItemUseOutOfBattle_Itemfinder(u8 var) { IncrementGameStat(0x27); - gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Itemfinder; + gFieldItemUseCallback = (void *)ItemUseOnFieldCB_Itemfinder; SetUpItemUseOnFieldCallback(var); } @@ -780,7 +782,7 @@ void sub_80C9C7C(u8 taskId) { if (IsPlayerFacingPlantedBerryTree() == TRUE) { - gUnknown_03005D00 = sub_80C9D00; + gFieldItemUseCallback = sub_80C9D00; gFieldCallback = ExecuteItemUseFromBlackPalette; gTasks[taskId].data[8] = (u32)c2_exit_to_overworld_2_switch >> 16; gTasks[taskId].data[9] = (u32)c2_exit_to_overworld_2_switch; @@ -805,7 +807,7 @@ void ItemUseOutOfBattle_WailmerPail(u8 taskId) { if (TryToWaterBerryTree() == TRUE) { - gUnknown_03005D00 = sub_80C9D74; + gFieldItemUseCallback = sub_80C9D74; SetUpItemUseOnFieldCallback(taskId); } else @@ -909,7 +911,7 @@ void sub_80C9FC0(u8 var) sub_80C9D98(var); } -void sub_80C9FDC(void) +static void PrepareItemUseMessage(void) { RemoveBagItem(gScriptItemId, 1); sub_80A3E0C(); @@ -922,7 +924,7 @@ void ItemUseOutOfBattle_Repel(u8 var) if (VarGet(VAR_REPEL_STEP_COUNT) == FALSE) { VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gScriptItemId)); - sub_80C9FDC(); + PrepareItemUseMessage(); DisplayItemMessageOnField(var, gStringVar4, CleanUpItemMenuMessage, 1); } else @@ -975,10 +977,10 @@ void task08_080A1C44(u8 taskId) DestroyTask(taskId); } -void sub_80CA18C(u8 taskId) +void EscapeRopeCallback(u8 taskId) { - sub_8053014(); - sub_80C9FDC(); + Overworld_ResetStateAfterDigEscRope(); + PrepareItemUseMessage(); gTasks[taskId].data[0] = 0; DisplayItemMessageOnField(taskId, gStringVar4, task08_080A1C44, 0); } @@ -995,7 +997,7 @@ void ItemUseOutOfBattle_EscapeRope(u8 taskId) { if (CanUseEscapeRopeOnCurrMap() == TRUE) { - gUnknown_03005D00 = sub_80CA18C; + gFieldItemUseCallback = EscapeRopeCallback; SetUpItemUseOnFieldCallback(taskId); } else @@ -1114,7 +1116,7 @@ void ItemUseInBattle_Escape(u8 taskId) if((gBattleTypeFlags & BATTLE_TYPE_TRAINER) == FALSE) { - sub_80C9FDC(); + PrepareItemUseMessage(); DisplayItemMessageOnField(taskId, gStringVar4, sub_80A7094, 1); } else diff --git a/src/landmark.c b/src/field/landmark.c index 6a53716bb..6a53716bb 100644 --- a/src/landmark.c +++ b/src/field/landmark.c diff --git a/src/lottery_corner.c b/src/field/lottery_corner.c index c2c25b9ac..c2c25b9ac 100644 --- a/src/lottery_corner.c +++ b/src/field/lottery_corner.c diff --git a/src/map_name_popup.c b/src/field/map_name_popup.c index 01105d0db..01105d0db 100644 --- a/src/map_name_popup.c +++ b/src/field/map_name_popup.c diff --git a/src/map_obj_lock.c b/src/field/map_obj_lock.c index 2856320b8..2856320b8 100644 --- a/src/map_obj_lock.c +++ b/src/field/map_obj_lock.c diff --git a/src/mauville_man.c b/src/field/mauville_man.c index 33bc39648..33bc39648 100644 --- a/src/mauville_man.c +++ b/src/field/mauville_man.c diff --git a/src/menu_helpers.c b/src/field/menu_helpers.c index 14e823355..14e823355 100644 --- a/src/menu_helpers.c +++ b/src/field/menu_helpers.c diff --git a/src/metatile_behavior.c b/src/field/metatile_behavior.c index d05ba0b89..d05ba0b89 100644 --- a/src/metatile_behavior.c +++ b/src/field/metatile_behavior.c diff --git a/src/money.c b/src/field/money.c index 5d0f0ae8d..5d0f0ae8d 100644 --- a/src/money.c +++ b/src/field/money.c diff --git a/src/overworld.c b/src/field/overworld.c index 9b41a262d..d6f255409 100644 --- a/src/overworld.c +++ b/src/field/overworld.c @@ -91,7 +91,7 @@ extern struct MapHeader * const * const gMapGroups[]; extern s32 gMaxFlashLevel; EWRAM_DATA struct WarpData gUnknown_020297F0 = {0}; -EWRAM_DATA struct WarpData gUnknown_020297F8 = {0}; +EWRAM_DATA struct WarpData gWarpDestination = {0}; // new warp position EWRAM_DATA struct WarpData gUnknown_02029800 = {0}; EWRAM_DATA struct WarpData gUnknown_02029808 = {0}; EWRAM_DATA struct UnkPlayerStruct gUnknown_02029810 = {0}; @@ -195,12 +195,12 @@ static void DoWhiteOut(void) ScriptContext2_RunNewScript(S_WhiteOut); gSaveBlock1.money /= 2; ScrSpecial_HealPlayerParty(); - sub_8053050(); - sub_8053570(); + Overworld_ResetStateAfterWhiteOut(); + Overworld_SetWarpDestToLastHealLoc(); warp_in(); } -void flag_var_implications_of_teleport_(void) +void Overworld_ResetStateAfterFly(void) { player_avatar_init_params_reset(); FlagClear(SYS_CYCLING_ROAD); @@ -221,7 +221,7 @@ void Overworld_ResetStateAfterTeleport(void) ScriptContext2_RunNewScript(gUnknown_0819FC9F); } -void sub_8053014(void) +void Overworld_ResetStateAfterDigEscRope(void) { player_avatar_init_params_reset(); FlagClear(SYS_CYCLING_ROAD); @@ -231,7 +231,7 @@ void sub_8053014(void) FlagClear(SYS_USE_FLASH); } -void sub_8053050(void) +void Overworld_ResetStateAfterWhiteOut(void) { player_avatar_init_params_reset(); FlagClear(SYS_CYCLING_ROAD); @@ -283,9 +283,12 @@ void SetGameStat(u8 index, u32 value) gSaveBlock1.gameStats[index] = value; } -void sub_8053154(void) +void LoadMapObjTemplatesFromHeader(void) { + // Clear map object templates CpuFill32(0, gSaveBlock1.mapObjectTemplates, sizeof(gSaveBlock1.mapObjectTemplates)); + + // Copy map header events to save block CpuCopy32(gMapHeader.events->mapObjects, gSaveBlock1.mapObjectTemplates, gMapHeader.events->mapObjectCount * sizeof(struct MapObjectTemplate)); @@ -300,7 +303,7 @@ static void LoadSaveblockMapObjScripts(void) mapObjectTemplates[i].script = gMapHeader.events->mapObjects[i].script; } -void Overworld_SaveMapObjCoords(u8 localId, s16 x, s16 y) +void Overworld_SetMapObjTemplateCoords(u8 localId, s16 x, s16 y) { s32 i; for (i = 0; i < 64; i++) @@ -315,9 +318,10 @@ void Overworld_SaveMapObjCoords(u8 localId, s16 x, s16 y) } } -void Overworld_SaveMapObjMovementType(u8 localId, u8 movementType) +void Overworld_SetMapObjTemplateMovementType(u8 localId, u8 movementType) { s32 i; + for (i = 0; i < 64; i++) { struct MapObjectTemplate *mapObjectTemplate = &gSaveBlock1.mapObjectTemplates[i]; @@ -346,15 +350,15 @@ static struct MapData *get_mapdata_header(void) return NULL; } -static void warp_shift(void) +static void ApplyCurrentWarp(void) { gUnknown_020297F0 = gSaveBlock1.location; - gSaveBlock1.location = gUnknown_020297F8; + gSaveBlock1.location = gWarpDestination; gUnknown_02029800 = sDummyWarpData; gUnknown_02029808 = sDummyWarpData; } -static void warp_set(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +static void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { warp->mapGroup = mapGroup; warp->mapNum = mapNum; @@ -385,7 +389,7 @@ struct MapHeader *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 map struct MapHeader *const warp1_get_mapheader(void) { - return Overworld_GetMapHeaderByGroupAndId(gUnknown_020297F8.mapGroup, gUnknown_020297F8.mapNum); + return Overworld_GetMapHeaderByGroupAndId(gWarpDestination.mapGroup, gWarpDestination.mapNum); } static void set_current_map_header_from_sav1_save_old_name(void) @@ -422,34 +426,34 @@ void sub_80533CC(void) void warp_in(void) { - warp_shift(); + ApplyCurrentWarp(); set_current_map_header_from_sav1_save_old_name(); sub_80533CC(); } -void warp1_set(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - warp_set(&gUnknown_020297F8, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gWarpDestination, mapGroup, mapNum, warpId, x, y); } void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId) { - warp1_set(mapGroup, mapNum, warpId, -1, -1); + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, -1, -1); } void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId) { - warp_set(&gSaveBlock1.warp2, mapGroup, mapNum, warpId, gSaveBlock1.pos.x, gSaveBlock1.pos.y); + SetWarpData(&gSaveBlock1.warp2, mapGroup, mapNum, warpId, gSaveBlock1.pos.x, gSaveBlock1.pos.y); } void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - warp_set(&gSaveBlock1.warp2, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gSaveBlock1.warp2, mapGroup, mapNum, warpId, x, y); } void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused) { - gUnknown_020297F8 = gSaveBlock1.warp2; + gWarpDestination = gSaveBlock1.warp2; } void sub_8053538(u8 a1) @@ -457,81 +461,82 @@ void sub_8053538(u8 a1) const struct HealLocation *warp = GetHealLocation(a1); if (warp) - warp1_set(warp->group, warp->map, -1, warp->x, warp->y); + Overworld_SetWarpDestination(warp->group, warp->map, -1, warp->x, warp->y); } -void sub_8053570(void) +void Overworld_SetWarpDestToLastHealLoc(void) { - gUnknown_020297F8 = gSaveBlock1.warp3; + gWarpDestination = gSaveBlock1.lastHealLocation; } -void sub_8053588(u8 a1) +void Overworld_SetHealLocationWarp(u8 healLocationId) { - const struct HealLocation *warp = GetHealLocation(a1); - if (warp) - warp_set(&gSaveBlock1.warp3, warp->group, warp->map, -1, warp->x, warp->y); + const struct HealLocation *healLocation = GetHealLocation(healLocationId); + + if (healLocation != NULL) + SetWarpData(&gSaveBlock1.lastHealLocation, healLocation->group, healLocation->map, -1, healLocation->x, healLocation->y); } void sub_80535C4(s16 a1, s16 a2) { - u8 v4 = Overworld_GetMapTypeOfSaveblockLocation(); - u8 v5 = GetMapTypeByGroupAndId(gUnknown_020297F8.mapGroup, gUnknown_020297F8.mapNum); - if (is_map_type_1_2_3_5_or_6(v4) && is_map_type_1_2_3_5_or_6(v5) != TRUE) + u8 currMapType = Overworld_GetMapTypeOfSaveblockLocation(); + u8 destMapType = GetMapTypeByGroupAndId(gWarpDestination.mapGroup, gWarpDestination.mapNum); + if (is_map_type_1_2_3_5_or_6(currMapType) && is_map_type_1_2_3_5_or_6(destMapType) != TRUE) sub_805363C(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, a1 - 7, a2 - 6); } void sub_805363C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - warp_set(&gSaveBlock1.warp4, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gSaveBlock1.warp4, mapGroup, mapNum, warpId, x, y); } void sub_8053678(void) { - gUnknown_020297F8 = gSaveBlock1.warp4; + gWarpDestination = gSaveBlock1.warp4; } void sub_8053690(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - warp_set(&gUnknown_02029800, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gUnknown_02029800, mapGroup, mapNum, warpId, x, y); } -void warp1_set_to_warp2(void) +static void warp1_set_to_warp2(void) { - gUnknown_020297F8 = gUnknown_02029800; + gWarpDestination = gUnknown_02029800; } void sub_80536E4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - warp_set(&gUnknown_02029808, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gUnknown_02029808, mapGroup, mapNum, warpId, x, y); } void sub_8053720(s16 x, s16 y) { if (warp_data_is_not_neg_1(&gUnknown_02029808) == TRUE) { - gUnknown_020297F8 = gUnknown_020297F0; + gWarpDestination = gUnknown_020297F0; } else { - warp1_set(gUnknown_02029808.mapGroup, gUnknown_02029808.mapNum, -1, x, y); + Overworld_SetWarpDestination(gUnknown_02029808.mapGroup, gUnknown_02029808.mapNum, -1, x, y); } } void sub_8053778(void) { - gUnknown_020297F8 = gSaveBlock1.warp1; + gWarpDestination = gSaveBlock1.warp1; } void unref_sub_8053790(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - warp_set(&gSaveBlock1.warp1, mapGroup, mapNum, warpId, x, y); + SetWarpData(&gSaveBlock1.warp1, mapGroup, mapNum, warpId, x, y); } void sub_80537CC(u8 a1) { const struct HealLocation *warp = GetHealLocation(a1); if (warp) - warp_set(&gSaveBlock1.warp1, warp->group, warp->map, -1, warp->x, warp->y); + SetWarpData(&gSaveBlock1.warp1, warp->group, warp->map, -1, warp->x, warp->y); } void gpu_sync_bg_hide() @@ -539,7 +544,7 @@ void gpu_sync_bg_hide() gSaveBlock1.warp1 = gSaveBlock1.warp2; } -struct MapConnection *sub_8053818(u8 dir) +struct MapConnection *GetMapConnection(u8 dir) { s32 i; s32 count = gMapHeader.connections->count; @@ -557,10 +562,11 @@ struct MapConnection *sub_8053818(u8 dir) bool8 sub_8053850(u8 dir, u16 x, u16 y) { - struct MapConnection *connection = sub_8053818(dir); + struct MapConnection *connection = GetMapConnection(dir); + if (connection != NULL) { - warp1_set(connection->mapGroup, connection->mapNum, -1, x, y); + Overworld_SetWarpDestination(connection->mapGroup, connection->mapNum, -1, x, y); } else { @@ -586,11 +592,11 @@ void sub_80538F0(u8 mapGroup, u8 mapNum) { s32 i; - warp1_set(mapGroup, mapNum, -1, -1, -1); + Overworld_SetWarpDestination(mapGroup, mapNum, -1, -1, -1); sub_8053F0C(); - warp_shift(); + ApplyCurrentWarp(); set_current_map_header_from_sav1_save_old_name(); - sub_8053154(); + LoadMapObjTemplatesFromHeader(); ClearTempFieldEventData(); ResetCyclingRoadChallengeData(); prev_quest_postbuffer_cursor_backup_reset(); @@ -599,7 +605,7 @@ void sub_80538F0(u8 mapGroup, u8 mapNum) sub_80806E4(); ChooseAmbientCrySpecies(); SetDefaultFlashLevel(); - sav1_reset_battle_music_maybe(); + Overworld_ClearSavedMusic(); mapheader_run_script_with_tag_x3(); not_trainer_hill_battle_pyramid(); sub_8056D38(gMapHeader.mapData); @@ -623,7 +629,7 @@ void sub_8053994(u32 a1) bool8 v3; set_current_map_header_from_sav1_save_old_name(); - sub_8053154(); + LoadMapObjTemplatesFromHeader(); v2 = is_map_type_1_2_3_5_or_6(gMapHeader.mapType); v3 = Overworld_MapTypeIsIndoors(gMapHeader.mapType); ClearTempFieldEventData(); @@ -637,7 +643,7 @@ void sub_8053994(u32 a1) if (v2) FlagClear(SYS_USE_FLASH); SetDefaultFlashLevel(); - sav1_reset_battle_music_maybe(); + Overworld_ClearSavedMusic(); mapheader_run_script_with_tag_x3(); UpdateLocationHistoryForRoamer(); RoamerMoveToOtherLocationSet(); @@ -691,7 +697,7 @@ u8 sub_8053B00(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3) return 16; if (MetatileBehavior_IsSurfableWaterOrUnderwater(a2) == 1) return 8; - if (Overworld_IsBikeAllowedOnCurrentMap() != TRUE) + if (Overworld_IsBikingAllowed() != TRUE) return 1; if (playerStruct->player_field_0 == 2) return 2; @@ -729,7 +735,7 @@ u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void) return MapGridGetMetatileBehaviorAt(gSaveBlock1.pos.x + 7, gSaveBlock1.pos.y + 7); } -bool32 Overworld_IsBikeAllowedOnCurrentMap(void) +bool32 Overworld_IsBikingAllowed(void) { // is player in cycling road entrance? if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE @@ -830,10 +836,11 @@ static u16 GetLocationMusic(struct WarpData *warp) return Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum)->music; } -u16 sav1_map_get_music(void) +u16 GetCurrLocationDefaultMusic(void) { u16 music; + // Play the desert music only when the sandstorm is active on Route 111. if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE111 && gSaveBlock1.location.mapNum == MAP_ID_ROUTE111 && GetSav1Weather() == 8) @@ -853,9 +860,9 @@ u16 sav1_map_get_music(void) } } -u16 warp1_target_get_music(void) +u16 GetWarpDestinationMusic(void) { - u16 music = GetLocationMusic(&gUnknown_020297F8); + u16 music = GetLocationMusic(&gWarpDestination); if (music != 0x7FFF) { return music; @@ -870,19 +877,19 @@ u16 warp1_target_get_music(void) } } -void call_map_music_set_to_zero(void) +void Overworld_ResetMapMusic(void) { ResetMapMusic(); } -void sub_8053E90(void) +void Overworld_PlaySpecialMapMusic(void) { - u16 music = sav1_map_get_music(); + u16 music = GetCurrLocationDefaultMusic(); if (music != LEGENDARY_MUSIC) { - if (gSaveBlock1.battleMusic) - music = gSaveBlock1.battleMusic; + if (gSaveBlock1.savedMusic) + music = gSaveBlock1.savedMusic; else if (Overworld_GetMapTypeOfSaveblockLocation() == MAP_TYPE_UNDERWATER) music = BGM_DEEPDEEP; else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) @@ -893,21 +900,21 @@ void sub_8053E90(void) PlayNewMapMusic(music); } -void sav1_set_battle_music_maybe(u16 songNum) +void Overworld_SetSavedMusic(u16 songNum) { - gSaveBlock1.battleMusic = songNum; + gSaveBlock1.savedMusic = songNum; } -void sav1_reset_battle_music_maybe(void) +void Overworld_ClearSavedMusic(void) { - gSaveBlock1.battleMusic = 0; + gSaveBlock1.savedMusic = 0; } void sub_8053F0C(void) { if (FlagGet(SPECIAL_FLAG_1) != TRUE) { - u16 newMusic = warp1_target_get_music(); + u16 newMusic = GetWarpDestinationMusic(); u16 currentMusic = GetCurrentMapMusic(); if (newMusic != LEGENDARY_MUSIC) { @@ -926,11 +933,11 @@ void sub_8053F0C(void) } } -void sub_8053F84(void) +void Overworld_ChangeMusicToDefault(void) { u16 currentMusic = GetCurrentMapMusic(); - if (currentMusic != sav1_map_get_music()) - FadeOutAndPlayNewMapMusic(sav1_map_get_music(), 8); + if (currentMusic != GetCurrLocationDefaultMusic()) + FadeOutAndPlayNewMapMusic(GetCurrLocationDefaultMusic(), 8); } void Overworld_ChangeMusicTo(u16 newMusic) @@ -951,7 +958,7 @@ u8 GetMapMusicFadeoutSpeed(void) void sub_8053FF8(void) { - u16 music = warp1_target_get_music(); + u16 music = GetWarpDestinationMusic(); if (FlagGet(SPECIAL_FLAG_1) != TRUE && music != GetCurrentMapMusic()) { u8 speed = GetMapMusicFadeoutSpeed(); @@ -964,7 +971,7 @@ bool8 sub_8054034(void) return IsNotWaitingForBGMStop(); } -void sub_8054044(void) +void Overworld_FadeOutMapMusic(void) { FadeOutMapMusic(4); } @@ -972,14 +979,16 @@ void sub_8054044(void) static void PlayAmbientCry(void) { s16 x, y; + s8 pan; + s8 volume; + PlayerGetDestCoords(&x, &y); - if (sIsAmbientCryWaterMon != TRUE - || MetatileBehavior_IsSurfableWaterOrUnderwater(MapGridGetMetatileBehaviorAt(x, y))) - { - s8 pan = (Random() % 88) + 212; - s8 volume = (Random() % 30) + 50; - PlayCry2(sAmbientCrySpecies, pan, volume, 1); - } + if (sIsAmbientCryWaterMon == TRUE + && !MetatileBehavior_IsSurfableWaterOrUnderwater(MapGridGetMetatileBehaviorAt(x, y))) + return; + pan = (Random() % 88) + 212; + volume = (Random() % 30) + 50; + PlayCry2(sAmbientCrySpecies, pan, volume, 1); } void UpdateAmbientCry(s16 *state, u16 *delayCounter) @@ -1149,6 +1158,7 @@ void OverworldBasic(void) sub_8072EDC(); } +// This CB2 is used when starting void CB2_OverworldBasic(void) { OverworldBasic(); @@ -1176,7 +1186,7 @@ void sub_80543DC(u16 (*a1)(u32)) void sub_80543E8(void) { - if (gFieldCallback) + if (gFieldCallback != NULL) gFieldCallback(); else mapldr_default(); @@ -1977,27 +1987,27 @@ void sub_8055280(u16 a1) u16 sub_80552B0(u32 a1) { - if (gMain.heldKeys & 0x40) + if (gMain.heldKeys & DPAD_UP) { return 19; } - else if (gMain.heldKeys & 0x80) + else if (gMain.heldKeys & DPAD_DOWN) { return 18; } - else if (gMain.heldKeys & 0x20) + else if (gMain.heldKeys & DPAD_LEFT) { return 20; } - else if (gMain.heldKeys & 0x10) + else if (gMain.heldKeys & DPAD_RIGHT) { return 21; } - else if (gMain.newKeys & 8) + else if (gMain.newKeys & START_BUTTON) { return 24; } - else if (gMain.newKeys & 1) + else if (gMain.newKeys & A_BUTTON) { return 25; } diff --git a/src/party_menu.c b/src/field/party_menu.c index 39477e293..39477e293 100644 --- a/src/party_menu.c +++ b/src/field/party_menu.c diff --git a/src/player_pc.c b/src/field/player_pc.c index 83e6dd221..83e6dd221 100644 --- a/src/player_pc.c +++ b/src/field/player_pc.c diff --git a/src/pokeblock.c b/src/field/pokeblock.c index 593d7344b..34f4ffa35 100644 --- a/src/pokeblock.c +++ b/src/field/pokeblock.c @@ -378,7 +378,7 @@ static bool8 sub_810B998(void) ewram[0x1ffff]++; break; case 1: - sub_800D238(gMenuPokeblock_Tilemap, gBGTilemapBuffers[2]); + LZDecompressWram(gMenuPokeblock_Tilemap, gBGTilemapBuffers[2]); ewram[0x1ffff]++; break; case 2: diff --git a/src/pokenav.c b/src/field/pokenav.c index 21d7bb4e3..21d7bb4e3 100644 --- a/src/pokenav.c +++ b/src/field/pokenav.c diff --git a/src/region_map.c b/src/field/region_map.c index 900c9ad71..bfd2729c2 100644 --- a/src/region_map.c +++ b/src/field/region_map.c @@ -140,12 +140,12 @@ static const u16 sRegionMapBkgnd_Pal[] = INCBIN_U16("graphics/pokenav/region_map static const u8 sRegionMapBkgnd_ImageLZ[] = INCBIN_U8("graphics/pokenav/region_map.8bpp.lz"); static const u8 sRegionMapBkgnd_TilemapLZ[] = INCBIN_U8("graphics/pokenav/region_map_map.bin.lz"); -#include "data/region_map_layout.h" +#include "../data/region_map_layout.h" #if ENGLISH -#include "data/region_map_names_en.h" +#include "../data/region_map_names_en.h" #elif GERMAN -#include "data/region_map_names_de.h" +#include "../data/region_map_names_de.h" #endif struct RegionMapLocation diff --git a/src/roamer.c b/src/field/roamer.c index 948828d5e..948828d5e 100644 --- a/src/roamer.c +++ b/src/field/roamer.c diff --git a/src/rotating_gate.c b/src/field/rotating_gate.c index e8ab7e1bf..e8ab7e1bf 100644 --- a/src/rotating_gate.c +++ b/src/field/rotating_gate.c diff --git a/src/safari_zone.c b/src/field/safari_zone.c index 14fd1ddc4..14fd1ddc4 100644 --- a/src/safari_zone.c +++ b/src/field/safari_zone.c diff --git a/src/scrcmd.c b/src/field/scrcmd.c index 31a90158a..28584d4d0 100644 --- a/src/scrcmd.c +++ b/src/field/scrcmd.c @@ -91,12 +91,12 @@ static u8 * const sScriptStringVars[] = gStringVar3, }; -bool8 ScrCmd_snop(struct ScriptContext *ctx) +bool8 ScrCmd_nop(struct ScriptContext *ctx) { return FALSE; } -bool8 ScrCmd_snop1(struct ScriptContext *ctx) +bool8 ScrCmd_nop1(struct ScriptContext *ctx) { return FALSE; } @@ -107,9 +107,10 @@ bool8 ScrCmd_end(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_jumpasm(struct ScriptContext *ctx) +bool8 ScrCmd_gotonative(struct ScriptContext *ctx) { bool8 (*addr)(void) = (bool8 (*)(void))ScriptReadWord(ctx); + SetupNativeScript(ctx, addr); return TRUE; } @@ -117,20 +118,23 @@ bool8 ScrCmd_jumpasm(struct ScriptContext *ctx) bool8 ScrCmd_special(struct ScriptContext *ctx) { u16 index = ScriptReadHalfword(ctx); + gSpecials[index](); return FALSE; } -bool8 ScrCmd_specialval(struct ScriptContext *ctx) +bool8 ScrCmd_specialvar(struct ScriptContext *ctx) { u16 *var = GetVarPointer(ScriptReadHalfword(ctx)); + *var = gSpecials[ScriptReadHalfword(ctx)](); return FALSE; } -bool8 ScrCmd_callasm(struct ScriptContext *ctx) +bool8 ScrCmd_callnative(struct ScriptContext *ctx) { NativeFunc func = (NativeFunc)ScriptReadWord(ctx); + func(); return FALSE; } @@ -141,9 +145,10 @@ bool8 ScrCmd_waitstate(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_jump(struct ScriptContext *ctx) +bool8 ScrCmd_goto(struct ScriptContext *ctx) { u8 *ptr = (u8 *)ScriptReadWord(ctx); + ScriptJump(ctx, ptr); return FALSE; } @@ -156,25 +161,27 @@ bool8 ScrCmd_return(struct ScriptContext *ctx) bool8 ScrCmd_call(struct ScriptContext *ctx) { - u8 *ptr = (u8 *)ScriptReadWord(ctx); + ScriptCall(ctx, ptr); return FALSE; } -bool8 ScrCmd_jumpif(struct ScriptContext *ctx) +bool8 ScrCmd_goto_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 *ptr = (u8 *)ScriptReadWord(ctx); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) ScriptJump(ctx, ptr); return FALSE; } -bool8 ScrCmd_callif(struct ScriptContext *ctx) +bool8 ScrCmd_call_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 *ptr = (u8 *)ScriptReadWord(ctx); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) ScriptCall(ctx, ptr); return FALSE; @@ -184,13 +191,15 @@ bool8 ScrCmd_setvaddress(struct ScriptContext *ctx) { u32 addr1 = (u32)ctx->scriptPtr - 1; u32 addr2 = ScriptReadWord(ctx); + gUnknown_0202E8B0 = addr2 - addr1; return FALSE; } -bool8 ScrCmd_vjump(struct ScriptContext *ctx) +bool8 ScrCmd_vgoto(struct ScriptContext *ctx) { u32 addr = ScriptReadWord(ctx); + ScriptJump(ctx, (u8 *)(addr - gUnknown_0202E8B0)); return FALSE; } @@ -198,32 +207,36 @@ bool8 ScrCmd_vjump(struct ScriptContext *ctx) bool8 ScrCmd_vcall(struct ScriptContext *ctx) { u32 addr = ScriptReadWord(ctx); + ScriptCall(ctx, (u8 *)(addr - gUnknown_0202E8B0)); return FALSE; } -bool8 ScrCmd_if5(struct ScriptContext *ctx) +bool8 ScrCmd_vgoto_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_0202E8B0); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) ScriptJump(ctx, ptr); return FALSE; } -bool8 ScrCmd_if6(struct ScriptContext *ctx) +bool8 ScrCmd_vcall_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_0202E8B0); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) ScriptCall(ctx, ptr); return FALSE; } -bool8 ScrCmd_jumpstd(struct ScriptContext *ctx) +bool8 ScrCmd_gotostd(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); u8 **ptr = &gStdScripts[index]; + if (ptr < gStdScripts_End) ScriptJump(ctx, *ptr); return FALSE; @@ -233,15 +246,17 @@ bool8 ScrCmd_callstd(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); u8 **ptr = &gStdScripts[index]; + if (ptr < gStdScripts_End) ScriptCall(ctx, *ptr); return FALSE; } -bool8 ScrCmd_jumpstdif(struct ScriptContext *ctx) +bool8 ScrCmd_gotostd_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 index = ScriptReadByte(ctx); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) { u8 **ptr = &gStdScripts[index]; @@ -251,10 +266,11 @@ bool8 ScrCmd_jumpstdif(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_callstdif(struct ScriptContext *ctx) +bool8 ScrCmd_callstd_if(struct ScriptContext *ctx) { u8 condition = ScriptReadByte(ctx); u8 index = ScriptReadByte(ctx); + if (sScriptConditionTable[condition][ctx->comparisonResult] == 1) { u8 **ptr = &gStdScripts[index]; @@ -264,50 +280,55 @@ bool8 ScrCmd_callstdif(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_jumpram(struct ScriptContext *ctx) +bool8 ScrCmd_gotoram(struct ScriptContext *ctx) { ScriptJump(ctx, (u8 *)gUnknown_0202E8AC); return FALSE; } -bool8 ScrCmd_die(struct ScriptContext *ctx) +bool8 ScrCmd_killscript(struct ScriptContext *ctx) { ClearRamScript(); StopScript(ctx); return TRUE; } -bool8 ScrCmd_setbyte(struct ScriptContext *ctx) +bool8 ScrCmd_setmysteryeventstatus(struct ScriptContext *ctx) { u8 value = ScriptReadByte(ctx); + SetMysteryEventScriptStatus(value); return FALSE; } -bool8 ScrCmd_loadptr(struct ScriptContext *ctx) +bool8 ScrCmd_loadword(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); + ctx->data[index] = ScriptReadWord(ctx); return FALSE; } -bool8 ScrCmd_loadbytefrompointer(struct ScriptContext *ctx) +bool8 ScrCmd_loadbytefromaddr(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); + ctx->data[index] = *(u8 *)ScriptReadWord(ctx); return FALSE; } -bool8 ScrCmd_writebytetooffset(struct ScriptContext *ctx) +bool8 ScrCmd_writebytetoaddr(struct ScriptContext *ctx) { u8 value = ScriptReadByte(ctx); + *(u8 *)ScriptReadWord(ctx) = value; return FALSE; } -bool8 ScrCmd_setbufferbyte(struct ScriptContext *ctx) +bool8 ScrCmd_loadbyte(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); + ctx->data[index] = ScriptReadByte(ctx); return FALSE; } @@ -315,14 +336,16 @@ bool8 ScrCmd_setbufferbyte(struct ScriptContext *ctx) bool8 ScrCmd_setptrbyte(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); + *(u8 *)ScriptReadWord(ctx) = ctx->data[index]; return FALSE; } -bool8 ScrCmd_copybuffers(struct ScriptContext *ctx) +bool8 ScrCmd_copylocal(struct ScriptContext *ctx) { u8 destIndex = ScriptReadByte(ctx); u8 srcIndex = ScriptReadByte(ctx); + ctx->data[destIndex] = ctx->data[srcIndex]; return FALSE; } @@ -359,73 +382,81 @@ u8 compare_012(u16 a1, u16 a2) { if (a1 < a2) return 0; - if (a1 == a2) return 1; - return 2; } -bool8 ScrCmd_comparebuffers(struct ScriptContext *ctx) +// comparelocaltolocal +bool8 ScrCmd_compare_local_to_local(struct ScriptContext *ctx) { u8 value1 = ctx->data[ScriptReadByte(ctx)]; u8 value2 = ctx->data[ScriptReadByte(ctx)]; + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_comparebuffertobyte(struct ScriptContext *ctx) +// comparelocaltoimm +bool8 ScrCmd_compare_local_to_value(struct ScriptContext *ctx) { u8 value1 = ctx->data[ScriptReadByte(ctx)]; u8 value2 = ScriptReadByte(ctx); + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_comparebuffertoptrbyte(struct ScriptContext *ctx) +bool8 ScrCmd_compare_local_to_addr(struct ScriptContext *ctx) { u8 value1 = ctx->data[ScriptReadByte(ctx)]; u8 value2 = *(u8 *)ScriptReadWord(ctx); + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_compareptrbytetobuffer(struct ScriptContext *ctx) +bool8 ScrCmd_compare_addr_to_local(struct ScriptContext *ctx) { u8 value1 = *(u8 *)ScriptReadWord(ctx); u8 value2 = ctx->data[ScriptReadByte(ctx)]; + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_compareptrbytetobyte(struct ScriptContext *ctx) +bool8 ScrCmd_compare_addr_to_value(struct ScriptContext *ctx) { u8 value1 = *(u8 *)ScriptReadWord(ctx); u8 value2 = ScriptReadByte(ctx); + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_compareptrbytes(struct ScriptContext *ctx) +bool8 ScrCmd_compare_addr_to_addr(struct ScriptContext *ctx) { u8 value1 = *(u8 *)ScriptReadWord(ctx); u8 value2 = *(u8 *)ScriptReadWord(ctx); + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_compare(struct ScriptContext *ctx) +bool8 ScrCmd_compare_var_to_value(struct ScriptContext *ctx) { u16 value1 = *GetVarPointer(ScriptReadHalfword(ctx)); u16 value2 = ScriptReadHalfword(ctx); + ctx->comparisonResult = compare_012(value1, value2); return FALSE; } -bool8 ScrCmd_comparevars(struct ScriptContext *ctx) +bool8 ScrCmd_compare_var_to_var(struct ScriptContext *ctx) { u16 *ptr1 = GetVarPointer(ScriptReadHalfword(ctx)); u16 *ptr2 = GetVarPointer(ScriptReadHalfword(ctx)); + ctx->comparisonResult = compare_012(*ptr1, *ptr2); return FALSE; } @@ -447,6 +478,7 @@ bool8 ScrCmd_subvar(struct ScriptContext *ctx) bool8 ScrCmd_random(struct ScriptContext *ctx) { u16 max = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = Random() % max; return FALSE; } @@ -455,6 +487,7 @@ bool8 ScrCmd_additem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = AddBagItem(itemId, (u8)quantity); return FALSE; } @@ -463,6 +496,7 @@ bool8 ScrCmd_removeitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = RemoveBagItem(itemId, (u8)quantity); return FALSE; } @@ -471,6 +505,7 @@ bool8 ScrCmd_checkitemspace(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = CheckBagHasSpace(itemId, (u8)quantity); return FALSE; } @@ -479,6 +514,7 @@ bool8 ScrCmd_checkitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = CheckBagHasItem(itemId, (u8)quantity); return FALSE; } @@ -486,6 +522,7 @@ bool8 ScrCmd_checkitem(struct ScriptContext *ctx) bool8 ScrCmd_checkitemtype(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = GetPocketByItemId(itemId); return FALSE; } @@ -494,6 +531,7 @@ bool8 ScrCmd_addpcitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = AddPCItem(itemId, quantity); return FALSE; } @@ -502,6 +540,7 @@ bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = CheckPCHasItem(itemId, quantity); return FALSE; } @@ -509,6 +548,7 @@ bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx) bool8 ScrCmd_adddecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = IsThereStorageSpaceForDecoration(decorId); return FALSE; } @@ -516,6 +556,7 @@ bool8 ScrCmd_adddecor(struct ScriptContext *ctx) bool8 ScrCmd_removedecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = sub_81340A8(decorId); return FALSE; } @@ -523,13 +564,15 @@ bool8 ScrCmd_removedecor(struct ScriptContext *ctx) bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = sub_8134074(decorId); return FALSE; } -bool8 ScrCmd_testdecor(struct ScriptContext *ctx) +bool8 ScrCmd_hasdecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = sub_8133FE4(decorId); return FALSE; } @@ -552,22 +595,23 @@ bool8 ScrCmd_checkflag(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_inccounter(struct ScriptContext *ctx) +bool8 ScrCmd_incrementgamestat(struct ScriptContext *ctx) { IncrementGameStat(ScriptReadByte(ctx)); return FALSE; } -bool8 ScrCmd_lighten(struct ScriptContext *ctx) +bool8 ScrCmd_animdarklevel(struct ScriptContext *ctx) { sub_8081594(ScriptReadByte(ctx)); ScriptContext1_Stop(); return TRUE; } -bool8 ScrCmd_darken(struct ScriptContext *ctx) +bool8 ScrCmd_setdarklevel(struct ScriptContext *ctx) { u16 flashLevel = VarGet(ScriptReadHalfword(ctx)); + Overworld_SetFlashLevel(flashLevel); return FALSE; } @@ -591,6 +635,7 @@ bool8 ScrCmd_fadescreendelay(struct ScriptContext *ctx) { u8 duration = ScriptReadByte(ctx); u8 delay = ScriptReadByte(ctx); + fade_screen(duration, delay); SetupNativeScript(ctx, IsPaletteNotActive); return TRUE; @@ -606,28 +651,29 @@ bool8 s28_pause_asm() return FALSE; } -bool8 ScrCmd_pause(struct ScriptContext *ctx) +bool8 ScrCmd_delay(struct ScriptContext *ctx) { sPauseCounter = ScriptReadHalfword(ctx); SetupNativeScript(ctx, s28_pause_asm); return TRUE; } -bool8 ScrCmd_compareflags(struct ScriptContext *ctx) +bool8 ScrCmd_initclock(struct ScriptContext *ctx) { u8 hour = VarGet(ScriptReadHalfword(ctx)); u8 minute = VarGet(ScriptReadHalfword(ctx)); + RtcInitLocalTimeOffset(hour, minute); return FALSE; } -bool8 ScrCmd_checkdailyflags(struct ScriptContext *ctx) +bool8 ScrCmd_dodailyevents(struct ScriptContext *ctx) { DoTimeBasedEvents(); return FALSE; } -bool8 ScrCmd_resetvars(struct ScriptContext *ctx) +bool8 ScrCmd_gettime(struct ScriptContext *ctx) { RtcCalcLocalTime(); gSpecialVar_0x8000 = gLocalTime.hours; @@ -638,8 +684,9 @@ bool8 ScrCmd_resetvars(struct ScriptContext *ctx) bool8 ScrCmd_setweather(struct ScriptContext *ctx) { - u16 value = VarGet(ScriptReadHalfword(ctx)); - SetSav1Weather(value); + u16 weather = VarGet(ScriptReadHalfword(ctx)); + + SetSav1Weather(weather); return FALSE; } @@ -661,47 +708,51 @@ bool8 ScrCmd_tileeffect(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_setmapfooter(struct ScriptContext *ctx) +bool8 ScrCmd_setmaplayoutindex(struct ScriptContext *ctx) { u16 value = VarGet(ScriptReadHalfword(ctx)); + sub_8053D14(value); return FALSE; } bool8 ScrCmd_warp(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - warp1_set(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_8080E88(); player_avatar_init_params_reset(); return TRUE; } -bool8 ScrCmd_warpmuted(struct ScriptContext *ctx) +bool8 ScrCmd_warpsilent(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - warp1_set(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sp13E_warp_to_last_warp(); player_avatar_init_params_reset(); return TRUE; } -bool8 ScrCmd_warpwalk(struct ScriptContext *ctx) +bool8 ScrCmd_warpdoor(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - warp1_set(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_8080EF0(); player_avatar_init_params_reset(); return TRUE; @@ -709,18 +760,16 @@ bool8 ScrCmd_warpwalk(struct ScriptContext *ctx) bool8 ScrCmd_warphole(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); u16 x; u16 y; PlayerGetDestCoords(&x, &y); - - if (v1 == 0xFF && v2 == 0xFF) + if (mapGroup == 0xFF && mapNum == 0xFF) sub_8053720(x - 7, y - 7); else - warp1_set(v1, v2, -1, x - 7, y - 7); - + Overworld_SetWarpDestination(mapGroup, mapNum, -1, x - 7, y - 7); sp13F_fall_to_last_warp(); player_avatar_init_params_reset(); return TRUE; @@ -728,78 +777,85 @@ bool8 ScrCmd_warphole(struct ScriptContext *ctx) bool8 ScrCmd_warpteleport(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - warp1_set(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); sub_8080F68(); player_avatar_init_params_reset(); return TRUE; } -bool8 ScrCmd_warp3(struct ScriptContext *ctx) +bool8 ScrCmd_setwarp(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - warp1_set(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y); return FALSE; } -bool8 ScrCmd_warpplace(struct ScriptContext *ctx) +bool8 ScrCmd_setdynamicwarp(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - saved_warp2_set_2(0, v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + saved_warp2_set_2(0, mapGroup, mapNum, warpId, x, y); return FALSE; } -bool8 ScrCmd_warp4(struct ScriptContext *ctx) +bool8 ScrCmd_setdivewarp(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - sub_8053690(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + sub_8053690(mapGroup, mapNum, warpId, x, y); return FALSE; } -bool8 ScrCmd_warp5(struct ScriptContext *ctx) +bool8 ScrCmd_setholewarp(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - sub_80536E4(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + sub_80536E4(mapGroup, mapNum, warpId, x, y); return FALSE; } -bool8 ScrCmd_warp6(struct ScriptContext *ctx) +bool8 ScrCmd_setescapewarp(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u16 v4 = VarGet(ScriptReadHalfword(ctx)); - s8 v5 = VarGet(ScriptReadHalfword(ctx)); - sub_805363C(v1, v2, v3, v4, v5); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 warpId = ScriptReadByte(ctx); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + sub_805363C(mapGroup, mapNum, warpId, x, y); return FALSE; } bool8 ScrCmd_getplayerxy(struct ScriptContext *ctx) { - u16 *ptr1 = GetVarPointer(ScriptReadHalfword(ctx)); - u16 *ptr2 = GetVarPointer(ScriptReadHalfword(ctx)); - *ptr1 = gSaveBlock1.pos.x; - *ptr2 = gSaveBlock1.pos.y; + u16 *pX = GetVarPointer(ScriptReadHalfword(ctx)); + u16 *pY = GetVarPointer(ScriptReadHalfword(ctx)); + + *pX = gSaveBlock1.pos.x; + *pY = gSaveBlock1.pos.y; return FALSE; } @@ -809,7 +865,7 @@ bool8 ScrCmd_countpokemon(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_playsfx(struct ScriptContext *ctx) +bool8 ScrCmd_playse(struct ScriptContext *ctx) { PlaySE(ScriptReadHalfword(ctx)); return FALSE; @@ -823,13 +879,13 @@ static bool8 WaitForSoundEffectFinish() return FALSE; } -bool8 ScrCmd_checksound(struct ScriptContext *ctx) +bool8 ScrCmd_waitse(struct ScriptContext *ctx) { SetupNativeScript(ctx, WaitForSoundEffectFinish); return TRUE; } -bool8 ScrCmd_fanfare(struct ScriptContext *ctx) +bool8 ScrCmd_playfanfare(struct ScriptContext *ctx) { PlayFanfare(ScriptReadHalfword(ctx)); return FALSE; @@ -846,37 +902,39 @@ bool8 ScrCmd_waitfanfare(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_playmusic(struct ScriptContext *ctx) +bool8 ScrCmd_playbgm(struct ScriptContext *ctx) { u16 songId = ScriptReadHalfword(ctx); bool8 val = ScriptReadByte(ctx); + if (val == TRUE) - sav1_set_battle_music_maybe(songId); + Overworld_SetSavedMusic(songId); PlayNewMapMusic(songId); return FALSE; } -bool8 ScrCmd_playmusicbattle(struct ScriptContext *ctx) +bool8 ScrCmd_savebgm(struct ScriptContext *ctx) { - sav1_set_battle_music_maybe(ScriptReadHalfword(ctx)); + Overworld_SetSavedMusic(ScriptReadHalfword(ctx)); return FALSE; } -bool8 ScrCmd_fadedefault(struct ScriptContext *ctx) +bool8 ScrCmd_fadedefaultbgm(struct ScriptContext *ctx) { - sub_8053F84(); + Overworld_ChangeMusicToDefault(); return FALSE; } -bool8 ScrCmd_fademusic(struct ScriptContext *ctx) +bool8 ScrCmd_fadenewbgm(struct ScriptContext *ctx) { Overworld_ChangeMusicTo(ScriptReadHalfword(ctx)); return FALSE; } -bool8 ScrCmd_fadeout(struct ScriptContext *ctx) +bool8 ScrCmd_fadeoutbgm(struct ScriptContext *ctx) { u8 speed = ScriptReadByte(ctx); + if (speed != 0) FadeOutBGMTemporarily(4 * speed); else @@ -885,9 +943,10 @@ bool8 ScrCmd_fadeout(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_fadein(struct ScriptContext *ctx) +bool8 ScrCmd_fadeinbgm(struct ScriptContext *ctx) { u8 speed = ScriptReadByte(ctx); + if (speed != 0) FadeInBGM(4 * speed); else @@ -895,7 +954,7 @@ bool8 ScrCmd_fadein(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_move(struct ScriptContext *ctx) +bool8 ScrCmd_applymovement(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); void *movementScript = (void *)ScriptReadWord(ctx); @@ -905,7 +964,7 @@ bool8 ScrCmd_move(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_movecoords(struct ScriptContext *ctx) +bool8 ScrCmd_applymovement_at(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); void *movementScript = (void *)ScriptReadWord(ctx); @@ -922,7 +981,7 @@ static bool8 WaitForMovementFinish(void) return ScriptMovement_IsObjectMovementFinished(sMovingNpcId, sMovingNpcMapId, sMovingNpcMapBank); } -bool8 ScrCmd_waitmove(struct ScriptContext *ctx) +bool8 ScrCmd_waitmovement(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); @@ -934,7 +993,7 @@ bool8 ScrCmd_waitmove(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_waitmovexy(struct ScriptContext *ctx) +bool8 ScrCmd_waitmovement_at(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u8 mapBank; @@ -950,97 +1009,108 @@ bool8 ScrCmd_waitmovexy(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_disappear(struct ScriptContext *ctx) +bool8 ScrCmd_removeobject(struct ScriptContext *ctx) { - u16 objectId = VarGet(ScriptReadHalfword(ctx)); - RemoveFieldObjectByLocalIdAndMap(objectId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + + RemoveFieldObjectByLocalIdAndMap(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); return FALSE; } -bool8 ScrCmd_disappearxy(struct ScriptContext *ctx) +bool8 ScrCmd_removeobject_at(struct ScriptContext *ctx) { u16 objectId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); + RemoveFieldObjectByLocalIdAndMap(objectId, mapNum, mapGroup); return FALSE; } -bool8 ScrCmd_reappear(struct ScriptContext *ctx) +bool8 ScrCmd_addobject(struct ScriptContext *ctx) { u16 objectId = VarGet(ScriptReadHalfword(ctx)); + show_sprite(objectId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); return FALSE; } -bool8 ScrCmd_reappearxy(struct ScriptContext *ctx) +bool8 ScrCmd_addobject_at(struct ScriptContext *ctx) { u16 objectId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); + show_sprite(objectId, mapNum, mapGroup); return FALSE; } -bool8 ScrCmd_movesprite(struct ScriptContext *ctx) +bool8 ScrCmd_setobjectxy(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u16 v2 = VarGet(ScriptReadHalfword(ctx)); - u32 v3 = VarGet(ScriptReadHalfword(ctx)); - sub_805C0F8(v1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, v2, v3); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + sub_805C0F8(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, x, y); return FALSE; } -bool8 ScrCmd_movespriteperm(struct ScriptContext *ctx) +bool8 ScrCmd_setobjectxyperm(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u16 v2 = VarGet(ScriptReadHalfword(ctx)); - u32 v3 = VarGet(ScriptReadHalfword(ctx)); - Overworld_SaveMapObjCoords(v1, v2, v3); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetMapObjTemplateCoords(localId, x, y); return FALSE; } -bool8 ScrCmd_moveoffscreen(struct ScriptContext *ctx) +bool8 ScrCmd_moveobjectoffscreen(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - sub_805C78C(v1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + + sub_805C78C(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); return FALSE; } -bool8 ScrCmd_spritevisible(struct ScriptContext *ctx) +bool8 ScrCmd_showobject(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - npc_by_local_id_and_map_set_field_1_bit_x20(v1, v3, v2, 0); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + npc_by_local_id_and_map_set_field_1_bit_x20(localId, mapNum, mapGroup, 0); return FALSE; } -bool8 ScrCmd_spriteinvisible(struct ScriptContext *ctx) +bool8 ScrCmd_hideobject(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - npc_by_local_id_and_map_set_field_1_bit_x20(v1, v3, v2, 1); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + npc_by_local_id_and_map_set_field_1_bit_x20(localId, mapNum, mapGroup, 1); return FALSE; } -bool8 ScrCmd_spritelevelup(struct ScriptContext *ctx) +bool8 ScrCmd_setobjectpriority(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - u8 v4 = ScriptReadByte(ctx); - sub_805BCF0(v1, v3, v2, v4 + 83); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 priority = ScriptReadByte(ctx); + + sub_805BCF0(localId, mapNum, mapGroup, priority + 83); return FALSE; } -bool8 ScrCmd_restorespritelevel(struct ScriptContext *ctx) +bool8 ScrCmd_resetobjectpriority(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - sub_805BD48(v1, v3, v2); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + + sub_805BD48(localId, mapNum, mapGroup); return FALSE; } @@ -1054,39 +1124,43 @@ bool8 ScrCmd_faceplayer(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_spriteface(struct ScriptContext *ctx) +bool8 ScrCmd_turnobject(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u8 direction = ScriptReadByte(ctx); + FieldObjectTurnByLocalIdAndMap(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, direction); return FALSE; } -bool8 ScrCmd_spritebehave(struct ScriptContext *ctx) +bool8 ScrCmd_setobjectmovementtype(struct ScriptContext *ctx) { - u16 v1 = VarGet(ScriptReadHalfword(ctx)); - u8 v2 = ScriptReadByte(ctx); - Overworld_SaveMapObjMovementType(v1, v2); + u16 localId = VarGet(ScriptReadHalfword(ctx)); + u8 movementType = ScriptReadByte(ctx); + + Overworld_SetMapObjTemplateMovementType(localId, movementType); return FALSE; } -bool8 ScrCmd_createvsprite(struct ScriptContext *ctx) +bool8 ScrCmd_createvobject(struct ScriptContext *ctx) { - u8 v1 = ScriptReadByte(ctx); + u8 graphicsId = ScriptReadByte(ctx); u8 v2 = ScriptReadByte(ctx); - u16 v3 = VarGet(ScriptReadHalfword(ctx)); - u32 v4 = VarGet(ScriptReadHalfword(ctx)); - u8 v5 = ScriptReadByte(ctx); - u8 v6 = ScriptReadByte(ctx); - sub_805B410(v1, v2, v3, v4, v5, v6); + u16 x = VarGet(ScriptReadHalfword(ctx)); + u32 y = VarGet(ScriptReadHalfword(ctx)); + u8 elevation = ScriptReadByte(ctx); + u8 direction = ScriptReadByte(ctx); + + sub_805B410(graphicsId, v2, x, y, elevation, direction); return FALSE; } -bool8 ScrCmd_vspriteface(struct ScriptContext *ctx) +bool8 ScrCmd_turnvobject(struct ScriptContext *ctx) { u8 v1 = ScriptReadByte(ctx); - u8 v2 = ScriptReadByte(ctx); - sub_8064990(v1, v2); + u8 direction = ScriptReadByte(ctx); + + sub_8064990(v1, direction); return FALSE; } @@ -1122,7 +1196,6 @@ bool8 ScrCmd_lock(struct ScriptContext *ctx) ScriptFreezeMapObjects(); SetupNativeScript(ctx, sub_8064CFC); } - return TRUE; } } @@ -1156,34 +1229,36 @@ bool8 ScrCmd_release(struct ScriptContext *ctx) bool8 ScrCmd_message(struct ScriptContext *ctx) { u8 *msg = (u8 *)ScriptReadWord(ctx); - if (!msg) + + if (msg == NULL) msg = (u8 *)ctx->data[0]; ShowFieldMessage(msg); return FALSE; } -bool8 ScrCmd_message2(struct ScriptContext *ctx) +bool8 ScrCmd_messageautoscroll(struct ScriptContext *ctx) { u8 *msg = (u8 *)ScriptReadWord(ctx); - if (!msg) + + if (msg == NULL) msg = (u8 *)ctx->data[0]; ShowFieldAutoScrollMessage(msg); return FALSE; } -bool8 ScrCmd_waittext(struct ScriptContext *ctx) +bool8 ScrCmd_waitmessage(struct ScriptContext *ctx) { SetupNativeScript(ctx, IsFieldMessageBoxHidden); return TRUE; } -bool8 ScrCmd_closebutton(struct ScriptContext *ctx) +bool8 ScrCmd_closemessage(struct ScriptContext *ctx) { HideFieldMessageBox(); return FALSE; } -bool8 WaitForAorBPress(void) +static bool8 WaitForAorBPress(void) { if (gMain.newKeys & A_BUTTON) return TRUE; @@ -1202,6 +1277,7 @@ bool8 ScrCmd_yesnobox(struct ScriptContext *ctx) { u8 left = ScriptReadByte(ctx); u8 top = ScriptReadByte(ctx); + if (ScriptMenu_YesNo(left, top) == TRUE) { ScriptContext1_Stop(); @@ -1219,6 +1295,7 @@ bool8 ScrCmd_multichoice(struct ScriptContext *ctx) u8 top = ScriptReadByte(ctx); u8 multichoiceId = ScriptReadByte(ctx); u8 ignoreBPress = ScriptReadByte(ctx); + if (ScriptMenu_Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE) { ScriptContext1_Stop(); @@ -1230,13 +1307,14 @@ bool8 ScrCmd_multichoice(struct ScriptContext *ctx) } } -bool8 ScrCmd_multichoicedef(struct ScriptContext *ctx) +bool8 ScrCmd_multichoicedefault(struct ScriptContext *ctx) { u8 left = ScriptReadByte(ctx); u8 top = ScriptReadByte(ctx); u8 multichoiceId = ScriptReadByte(ctx); u8 defaultChoice = ScriptReadByte(ctx); u8 ignoreBPress = ScriptReadByte(ctx); + if (ScriptMenu_MultichoiceWithDefault(left, top, multichoiceId, ignoreBPress, defaultChoice) == TRUE) { ScriptContext1_Stop(); @@ -1248,23 +1326,25 @@ bool8 ScrCmd_multichoicedef(struct ScriptContext *ctx) } } -bool8 ScrCmd_showbox(struct ScriptContext *ctx) +bool8 ScrCmd_drawbox(struct ScriptContext *ctx) { u8 left = ScriptReadByte(ctx); u8 top = ScriptReadByte(ctx); u8 right = ScriptReadByte(ctx); u8 bottom = ScriptReadByte(ctx); + MenuDrawTextWindow(left, top, right, bottom); return FALSE; } -bool8 ScrCmd_multichoicerow(struct ScriptContext *ctx) +bool8 ScrCmd_multichoicegrid(struct ScriptContext *ctx) { u8 left = ScriptReadByte(ctx); u8 top = ScriptReadByte(ctx); u8 multichoiceId = ScriptReadByte(ctx); u8 numColumns = ScriptReadByte(ctx); u8 ignoreBPress = ScriptReadByte(ctx); + if (ScriptMenu_MultichoiceGrid(left, top, multichoiceId, ignoreBPress, numColumns) == TRUE) { ScriptContext1_Stop(); @@ -1276,23 +1356,25 @@ bool8 ScrCmd_multichoicerow(struct ScriptContext *ctx) } } -bool8 ScrCmd_hidebox(struct ScriptContext *ctx) +bool8 ScrCmd_erasebox(struct ScriptContext *ctx) { u8 left = ScriptReadByte(ctx); u8 top = ScriptReadByte(ctx); u8 right = ScriptReadByte(ctx); u8 bottom = ScriptReadByte(ctx); + MenuZeroFillWindowRect(left, top, right, bottom); return FALSE; } // unused -bool8 ScrCmd_clearbox(struct ScriptContext *ctx) +bool8 ScrCmd_drawboxtext(struct ScriptContext *ctx) { u8 left = ScriptReadByte(ctx); u8 top = ScriptReadByte(ctx); u8 multichoiceId = ScriptReadByte(ctx); u8 ignoreBPress = ScriptReadByte(ctx); + if (Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE) { ScriptContext1_Stop(); @@ -1304,16 +1386,17 @@ bool8 ScrCmd_clearbox(struct ScriptContext *ctx) } } -bool8 ScrCmd_showpokepic(struct ScriptContext *ctx) +bool8 ScrCmd_drawpokepic(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); u8 x = ScriptReadByte(ctx); u8 y = ScriptReadByte(ctx); + ScriptMenu_ShowPokemonPic(species, x, y); return FALSE; } -bool8 ScrCmd_hidepokepic(struct ScriptContext *ctx) +bool8 ScrCmd_erasepokepic(struct ScriptContext *ctx) { bool8 (*func)(void) = ScriptMenu_GetPicboxWaitFunc(); @@ -1323,9 +1406,10 @@ bool8 ScrCmd_hidepokepic(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_showcontestwinner(struct ScriptContext *ctx) +bool8 ScrCmd_drawcontestwinner(struct ScriptContext *ctx) { u8 v1 = ScriptReadByte(ctx); + if (v1) sub_8106630(v1); ShowContestWinner(); @@ -1333,9 +1417,10 @@ bool8 ScrCmd_showcontestwinner(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_braillemsg(struct ScriptContext *ctx) +bool8 ScrCmd_braillemessage(struct ScriptContext *ctx) { u8 *ptr = (u8 *)ScriptReadWord(ctx); + u8 v2 = ptr[0]; u8 v3 = ptr[1]; u8 v4 = ptr[2]; @@ -1348,24 +1433,27 @@ bool8 ScrCmd_braillemsg(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_vtext(struct ScriptContext *ctx) +bool8 ScrCmd_vmessage(struct ScriptContext *ctx) { u32 v1 = ScriptReadWord(ctx); + ShowFieldMessage((u8 *)(v1 - gUnknown_0202E8B0)); return FALSE; } -bool8 ScrCmd_bufferpoke(struct ScriptContext *ctx) +bool8 ScrCmd_getspeciesname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 species = VarGet(ScriptReadHalfword(ctx)); + StringCopy(sScriptStringVars[stringVarIndex], gSpeciesNames[species]); return FALSE; } -bool8 ScrCmd_bufferfirstpoke(struct ScriptContext *ctx) +bool8 ScrCmd_getfirstpartypokename(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); + u8 *dest = sScriptStringVars[stringVarIndex]; u8 partyIndex = GetLeadMonIndex(); u32 species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES, NULL); @@ -1373,82 +1461,91 @@ bool8 ScrCmd_bufferfirstpoke(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_bufferpartypoke(struct ScriptContext *ctx) +bool8 ScrCmd_getpartypokename(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); + GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, sScriptStringVars[stringVarIndex]); StringGetEnd10(sScriptStringVars[stringVarIndex]); return FALSE; } -bool8 ScrCmd_bufferitem(struct ScriptContext *ctx) +bool8 ScrCmd_getitemname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 itemId = VarGet(ScriptReadHalfword(ctx)); + CopyItemName(itemId, sScriptStringVars[stringVarIndex]); return FALSE; } -bool8 ScrCmd_bufferdecor(struct ScriptContext *ctx) +bool8 ScrCmd_getdecorname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 decorId = VarGet(ScriptReadHalfword(ctx)); + StringCopy(sScriptStringVars[stringVarIndex], gDecorations[decorId].name); return FALSE; } -bool8 ScrCmd_bufferattack(struct ScriptContext *ctx) +bool8 ScrCmd_getmovename(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 moveId = VarGet(ScriptReadHalfword(ctx)); + StringCopy(sScriptStringVars[stringVarIndex], gMoveNames[moveId]); return FALSE; } -bool8 ScrCmd_buffernum(struct ScriptContext *ctx) +bool8 ScrCmd_getnumberstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 v1 = VarGet(ScriptReadHalfword(ctx)); u8 v2 = sub_80BF0B8(v1); + ConvertIntToDecimalStringN(sScriptStringVars[stringVarIndex], v1, 0, v2); return FALSE; } -bool8 ScrCmd_bufferstd(struct ScriptContext *ctx) +bool8 ScrCmd_getstdstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 index = VarGet(ScriptReadHalfword(ctx)); + StringCopy(sScriptStringVars[stringVarIndex], gUnknown_083CE048[index]); return FALSE; } -bool8 ScrCmd_buffertext(struct ScriptContext *ctx) +bool8 ScrCmd_getstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u8 *text = (u8 *)ScriptReadWord(ctx); + StringCopy(sScriptStringVars[stringVarIndex], text); return FALSE; } -bool8 ScrCmd_vloadptr(struct ScriptContext *ctx) +bool8 ScrCmd_vloadword(struct ScriptContext *ctx) { u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_0202E8B0); + StringExpandPlaceholders(gStringVar4, ptr); return FALSE; } -bool8 ScrCmd_vbuffer(struct ScriptContext *ctx) +bool8 ScrCmd_vgetstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u32 addr = ScriptReadWord(ctx); + u8 *src = (u8 *)(addr - gUnknown_0202E8B0); u8 *dest = sScriptStringVars[stringVarIndex]; StringCopy(dest, src); return FALSE; } -bool8 ScrCmd_givepokemon(struct ScriptContext *ctx) +bool8 ScrCmd_givepoke(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); u8 level = ScriptReadByte(ctx); @@ -1456,6 +1553,7 @@ bool8 ScrCmd_givepokemon(struct ScriptContext *ctx) u32 unkParam1 = ScriptReadWord(ctx); u32 unkParam2 = ScriptReadWord(ctx); u8 unkParam3 = ScriptReadByte(ctx); + gScriptResult = ScriptGiveMon(species, level, item, unkParam1, unkParam2, unkParam3); return FALSE; } @@ -1463,6 +1561,7 @@ bool8 ScrCmd_givepokemon(struct ScriptContext *ctx) bool8 ScrCmd_giveegg(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = ScriptGiveEgg(species); return FALSE; } @@ -1472,14 +1571,16 @@ bool8 ScrCmd_setpokemove(struct ScriptContext *ctx) u8 partyIndex = ScriptReadByte(ctx); u8 slot = ScriptReadByte(ctx); u16 move = ScriptReadHalfword(ctx); + ScriptSetMonMoveSlot(partyIndex, move, slot); return FALSE; } -bool8 ScrCmd_checkattack(struct ScriptContext *ctx) +bool8 ScrCmd_checkpokemove(struct ScriptContext *ctx) { u8 i; u16 moveId = ScriptReadHalfword(ctx); + gScriptResult = 6; for (i = 0; i < 6; i++) { @@ -1501,15 +1602,17 @@ bool8 ScrCmd_givemoney(struct ScriptContext *ctx) { u32 amount = ScriptReadWord(ctx); u8 ignore = ScriptReadByte(ctx); + if (!ignore) AddMoney(&gSaveBlock1.money, amount); return FALSE; } -bool8 ScrCmd_paymoney(struct ScriptContext *ctx) +bool8 ScrCmd_takemoney(struct ScriptContext *ctx) { u32 amount = ScriptReadWord(ctx); u8 ignore = ScriptReadByte(ctx); + if (!ignore) RemoveMoney(&gSaveBlock1.money, amount); return FALSE; @@ -1519,60 +1622,67 @@ bool8 ScrCmd_checkmoney(struct ScriptContext *ctx) { u32 amount = ScriptReadWord(ctx); u8 ignore = ScriptReadByte(ctx); + if (!ignore) gScriptResult = IsEnoughMoney(gSaveBlock1.money, amount); return FALSE; } -bool8 ScrCmd_showmoney(struct ScriptContext *ctx) +bool8 ScrCmd_showmoneybox(struct ScriptContext *ctx) { u8 x = ScriptReadByte(ctx); u8 y = ScriptReadByte(ctx); u8 ignore = ScriptReadByte(ctx); + if (!ignore) OpenMoneyWindow(gSaveBlock1.money, x, y); return FALSE; } -bool8 ScrCmd_hidemoney(struct ScriptContext *ctx) +bool8 ScrCmd_hidemoneybox(struct ScriptContext *ctx) { u8 x = ScriptReadByte(ctx); u8 y = ScriptReadByte(ctx); + CloseMoneyWindow(x, y); return FALSE; } -bool8 ScrCmd_updatemoney(struct ScriptContext *ctx) +bool8 ScrCmd_updatemoneybox(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); u8 ignore = ScriptReadByte(ctx); + if (!ignore) - UpdateMoneyWindow(gSaveBlock1.money, v2, v3); + UpdateMoneyWindow(gSaveBlock1.money, x, y); return FALSE; } -bool8 ScrCmd_showcoins(struct ScriptContext *ctx) +bool8 ScrCmd_showcoinsbox(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - ShowCoinsWindow(gSaveBlock1.coins, v2, v3); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + ShowCoinsWindow(gSaveBlock1.coins, x, y); return FALSE; } -bool8 ScrCmd_hidecoins(struct ScriptContext *ctx) +bool8 ScrCmd_hidecoinsbox(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - HideCoinsWindow(v2, v3); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + HideCoinsWindow(x, y); return FALSE; } -bool8 ScrCmd_updatecoins(struct ScriptContext *ctx) +bool8 ScrCmd_updatecoinsbox(struct ScriptContext *ctx) { - u8 v2 = ScriptReadByte(ctx); - u8 v3 = ScriptReadByte(ctx); - UpdateCoinsWindow(gSaveBlock1.coins, v2, v3); + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + UpdateCoinsWindow(gSaveBlock1.coins, x, y); return FALSE; } @@ -1582,19 +1692,19 @@ bool8 ScrCmd_trainerbattle(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_reptrainerbattle(struct ScriptContext *ctx) +bool8 ScrCmd_battlebegin(struct ScriptContext *ctx) { BattleSetup_StartTrainerBattle(); return TRUE; } -bool8 ScrCmd_endtrainerbattle(struct ScriptContext *ctx) +bool8 ScrCmd_ontrainerbattleend(struct ScriptContext *ctx) { ctx->scriptPtr = BattleSetup_GetScriptAddrAfterBattle(); return FALSE; } -bool8 ScrCmd_endtrainerbattle2(struct ScriptContext *ctx) +bool8 ScrCmd_ontrainerbattleendgoto(struct ScriptContext *ctx) { ctx->scriptPtr = BattleSetup_GetTrainerPostBattleScript(); return FALSE; @@ -1603,20 +1713,23 @@ bool8 ScrCmd_endtrainerbattle2(struct ScriptContext *ctx) bool8 ScrCmd_checktrainerflag(struct ScriptContext *ctx) { u16 index = VarGet(ScriptReadHalfword(ctx)); + ctx->comparisonResult = HasTrainerAlreadyBeenFought(index); return FALSE; } -bool8 ScrCmd_cleartrainerflag(struct ScriptContext *ctx) +bool8 ScrCmd_settrainerflag(struct ScriptContext *ctx) { u16 index = VarGet(ScriptReadHalfword(ctx)); + trainer_flag_set(index); return FALSE; } -bool8 ScrCmd_settrainerflag(struct ScriptContext *ctx) +bool8 ScrCmd_cleartrainerflag(struct ScriptContext *ctx) { u16 index = VarGet(ScriptReadHalfword(ctx)); + trainer_flag_clear(index); return FALSE; } @@ -1626,6 +1739,7 @@ bool8 ScrCmd_setwildbattle(struct ScriptContext *ctx) u16 species = ScriptReadHalfword(ctx); u8 level = ScriptReadByte(ctx); u16 item = ScriptReadHalfword(ctx); + CreateScriptedWildMon(species, level, item); return FALSE; } @@ -1640,6 +1754,7 @@ bool8 ScrCmd_dowildbattle(struct ScriptContext *ctx) bool8 ScrCmd_pokemart(struct ScriptContext *ctx) { void *ptr = (void *)ScriptReadWord(ctx); + CreatePokemartMenu(ptr); ScriptContext1_Stop(); return TRUE; @@ -1648,6 +1763,7 @@ bool8 ScrCmd_pokemart(struct ScriptContext *ctx) bool8 ScrCmd_pokemartdecor(struct ScriptContext *ctx) { void *ptr = (void *)ScriptReadWord(ctx); + CreateDecorationShop1Menu(ptr); ScriptContext1_Stop(); return TRUE; @@ -1656,24 +1772,27 @@ bool8 ScrCmd_pokemartdecor(struct ScriptContext *ctx) bool8 ScrCmd_pokemartbp(struct ScriptContext *ctx) { void *ptr = (void *)ScriptReadWord(ctx); + CreateDecorationShop2Menu(ptr); ScriptContext1_Stop(); return TRUE; } -bool8 ScrCmd_pokecasino(struct ScriptContext *ctx) +bool8 ScrCmd_playslotmachine(struct ScriptContext *ctx) { u8 v2 = VarGet(ScriptReadHalfword(ctx)); + PlaySlotMachine(v2, c2_exit_to_overworld_1_continue_scripts_restart_music); ScriptContext1_Stop(); return TRUE; } -bool8 ScrCmd_event_8a(struct ScriptContext *ctx) +bool8 ScrCmd_plantberrytree(struct ScriptContext *ctx) { u8 treeId = ScriptReadByte(ctx); u8 berry = ScriptReadByte(ctx); u8 growthStage = ScriptReadByte(ctx); + if (berry == 0) PlantBerryTree(treeId, 0, growthStage, FALSE); else @@ -1681,9 +1800,10 @@ bool8 ScrCmd_event_8a(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_event_96(struct ScriptContext *ctx) +bool8 ScrCmd_getpricereduction(struct ScriptContext *ctx) { u16 value = VarGet(ScriptReadHalfword(ctx)); + gScriptResult = GetPriceReduction(value); return FALSE; } @@ -1716,17 +1836,19 @@ bool8 ScrCmd_contestlinktransfer(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_doanimation(struct ScriptContext *ctx) +bool8 ScrCmd_dofieldeffect(struct ScriptContext *ctx) { u16 effectId = VarGet(ScriptReadHalfword(ctx)); + sFieldEffectScriptId = effectId; FieldEffectStart(sFieldEffectScriptId); return FALSE; } -bool8 ScrCmd_setanimation(struct ScriptContext *ctx) +bool8 ScrCmd_setfieldeffect(struct ScriptContext *ctx) { u8 argNum = ScriptReadByte(ctx); + gFieldEffectArguments[argNum] = (s16)VarGet(ScriptReadHalfword(ctx)); return FALSE; } @@ -1739,7 +1861,7 @@ static bool8 sub_8067B48() return FALSE; } -bool8 ScrCmd_checkanimation(struct ScriptContext *ctx) +bool8 ScrCmd_waitfieldeffect(struct ScriptContext *ctx) { sFieldEffectScriptId = VarGet(ScriptReadHalfword(ctx)); SetupNativeScript(ctx, sub_8067B48); @@ -1748,21 +1870,23 @@ bool8 ScrCmd_checkanimation(struct ScriptContext *ctx) bool8 ScrCmd_sethealplace(struct ScriptContext *ctx) { - u16 v2 = VarGet(ScriptReadHalfword(ctx)); - sub_8053588(v2); + u16 healLocationId = VarGet(ScriptReadHalfword(ctx)); + + Overworld_SetHealLocationWarp(healLocationId); return FALSE; } -bool8 ScrCmd_checkgender(struct ScriptContext *ctx) +bool8 ScrCmd_checkplayergender(struct ScriptContext *ctx) { gScriptResult = gSaveBlock2.playerGender; return FALSE; } -bool8 ScrCmd_pokecry(struct ScriptContext *ctx) +bool8 ScrCmd_playpokecry(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); u16 mode = VarGet(ScriptReadHalfword(ctx)); + PlayCry5(species, mode); return FALSE; } @@ -1779,6 +1903,7 @@ bool8 ScrCmd_setmaptile(struct ScriptContext *ctx) u16 y = VarGet(ScriptReadHalfword(ctx)); u16 tileId = VarGet(ScriptReadHalfword(ctx)); u16 v8 = VarGet(ScriptReadHalfword(ctx)); + x += 7; y += 7; if (!v8) @@ -1788,10 +1913,11 @@ bool8 ScrCmd_setmaptile(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_setdooropened(struct ScriptContext *ctx) +bool8 ScrCmd_opendoor(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); + x += 7; y += 7; PlaySE(GetDoorSoundEffect(x, y)); @@ -1799,10 +1925,11 @@ bool8 ScrCmd_setdooropened(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_setdoorclosed(struct ScriptContext *ctx) +bool8 ScrCmd_closedoor(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); + x += 7; y += 7; FieldAnimateDoorClose(x, y); @@ -1817,43 +1944,46 @@ static bool8 IsDoorAnimationStopped() return FALSE; } -bool8 ScrCmd_doorchange(struct ScriptContext *ctx) +bool8 ScrCmd_waitdooranim(struct ScriptContext *ctx) { SetupNativeScript(ctx, IsDoorAnimationStopped); return TRUE; } -bool8 ScrCmd_setdooropened2(struct ScriptContext *ctx) +bool8 ScrCmd_setdooropen(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); + x += 7; y += 7; FieldSetDoorOpened(x, y); return FALSE; } -bool8 ScrCmd_setdoorclosed2(struct ScriptContext *ctx) +bool8 ScrCmd_setdoorclosed(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); + x += 7; y += 7; FieldSetDoorClosed(x, y); return FALSE; } -bool8 ScrCmd_event_b1(struct ScriptContext *ctx) +bool8 ScrCmd_addelevmenuitem(struct ScriptContext *ctx) { u8 v3 = ScriptReadByte(ctx); u16 v5 = VarGet(ScriptReadHalfword(ctx)); u16 v7 = VarGet(ScriptReadHalfword(ctx)); u16 v9 = VarGet(ScriptReadHalfword(ctx)); + ScriptAddElevatorMenuItem(v3, v5, v7, v9); return FALSE; } -bool8 ScrCmd_event_b2(struct ScriptContext *ctx) +bool8 ScrCmd_showelevmenu(struct ScriptContext *ctx) { ScriptShowElevatorMenu(); ScriptContext1_Stop(); @@ -1870,21 +2000,21 @@ bool8 ScrCmd_checkcoins(struct ScriptContext *ctx) bool8 ScrCmd_givecoins(struct ScriptContext *ctx) { u16 coins = VarGet(ScriptReadHalfword(ctx)); + if (GiveCoins(coins) == TRUE) gScriptResult = 0; else gScriptResult = 1; - return FALSE; } -bool8 ScrCmd_removecoins(struct ScriptContext *ctx) +bool8 ScrCmd_takecoins(struct ScriptContext *ctx) { u16 coins = VarGet(ScriptReadHalfword(ctx)); + if (TakeCoins(coins) == TRUE) gScriptResult = 0; else gScriptResult = 1; - return FALSE; } diff --git a/src/script_menu.c b/src/field/script_menu.c index e25e74d8c..e25e74d8c 100644 --- a/src/script_menu.c +++ b/src/field/script_menu.c diff --git a/src/script_movement.c b/src/field/script_movement.c index 30e10b451..30e10b451 100644 --- a/src/script_movement.c +++ b/src/field/script_movement.c diff --git a/src/secret_base.c b/src/field/secret_base.c index b2cd1f094..f221d7f16 100644 --- a/src/secret_base.c +++ b/src/field/secret_base.c @@ -301,7 +301,7 @@ void sub_80BBBEC(u8 taskid) s8 idx; if (!gPaletteFade.active) { idx = 4 * (gUnknown_020387DC / 10); - warp1_set(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gUnknown_083D1374[idx + 2], gUnknown_083D1374[idx + 3]); + Overworld_SetWarpDestination(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gUnknown_083D1374[idx + 2], gUnknown_083D1374[idx + 3]); warp_in(); gFieldCallback = sub_80BBB90; SetMainCallback2(CB2_LoadMap); diff --git a/src/shop.c b/src/field/shop.c index 22250b1c4..375205935 100644 --- a/src/shop.c +++ b/src/field/shop.c @@ -282,7 +282,7 @@ void BuyMenuDrawGraphics(void) register const u32 zero asm("r6") = 0; DmaFill32(3, zero, addr, OAM_SIZE); LZDecompressVram(gBuyMenuFrame_Gfx, (void*)(VRAM + 0x7C00)); - sub_800D238(gBuyMenuFrame_Tilemap, (void *)0x02018000); + LZDecompressWram(gBuyMenuFrame_Tilemap, (void *)0x02018000); LoadCompressedPalette(gMenuMoneyPal, 0xC0, sizeof(gMenuMoneyPal)); FreeAllSpritePalettes(); ResetPaletteFade(); diff --git a/src/slot_machine.c b/src/field/slot_machine.c index c9a06a758..e8e4f271b 100644 --- a/src/slot_machine.c +++ b/src/field/slot_machine.c @@ -71,7 +71,7 @@ void sub_8106448(void) { u32 offsetRead, offsetWrite; u32 size; - sub_800D238(gSlotMachine_Gfx, (void *) 0x02010000); + LZDecompressWram(gSlotMachine_Gfx, (void *) 0x02010000); offsetRead = 0x02010000; offsetWrite = BG_VRAM; diff --git a/src/start_menu.c b/src/field/start_menu.c index 6e44090df..6e44090df 100644 --- a/src/start_menu.c +++ b/src/field/start_menu.c diff --git a/src/starter_choose.c b/src/field/starter_choose.c index 2b28df4f0..2b28df4f0 100644 --- a/src/starter_choose.c +++ b/src/field/starter_choose.c diff --git a/src/trader.c b/src/field/trader.c index 61f48fad8..61f48fad8 100644 --- a/src/trader.c +++ b/src/field/trader.c diff --git a/src/trainer_see.c b/src/field/trainer_see.c index 5a8ebbafc..5a8ebbafc 100644 --- a/src/trainer_see.c +++ b/src/field/trainer_see.c diff --git a/src/tv.c b/src/field/tv.c index 734cbad6f..e9b5e850d 100644 --- a/src/tv.c +++ b/src/field/tv.c @@ -1555,7 +1555,7 @@ u16 sub_80BF674(u16 species) rspecies = (Random() % (NUM_SPECIES - 1)) + 1; cspecies = rspecies; - while (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(cspecies), 0) != 1 || cspecies == species) + while (GetSetPokedexFlag(SpeciesToNationalPokedexNum(cspecies), 0) != 1 || cspecies == species) { if (cspecies == SPECIES_BULBASAUR) cspecies = NUM_SPECIES - 1; @@ -2319,7 +2319,7 @@ void sub_80C03A8(u8 showidx) void sub_80C03C8(u16 species, u8 showidx) { - if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0) + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0) gSaveBlock1.tvShows[showidx].common.var01 = 0; } diff --git a/src/use_pokeblock.c b/src/field/use_pokeblock.c index e946a9cfc..e946a9cfc 100644 --- a/src/use_pokeblock.c +++ b/src/field/use_pokeblock.c diff --git a/src/wallclock.c b/src/field/wallclock.c index 8db13dc2d..8db13dc2d 100644 --- a/src/wallclock.c +++ b/src/field/wallclock.c diff --git a/src/wild_encounter.c b/src/field/wild_encounter.c index 390898917..390898917 100644 --- a/src/wild_encounter.c +++ b/src/field/wild_encounter.c diff --git a/src/agb_flash.c b/src/libs/agb_flash.c index 340d469a7..340d469a7 100644 --- a/src/agb_flash.c +++ b/src/libs/agb_flash.c diff --git a/src/agb_flash_1m.c b/src/libs/agb_flash_1m.c index e249fab9a..e249fab9a 100644 --- a/src/agb_flash_1m.c +++ b/src/libs/agb_flash_1m.c diff --git a/src/agb_flash_le.c b/src/libs/agb_flash_le.c index 39d956e27..39d956e27 100644 --- a/src/agb_flash_le.c +++ b/src/libs/agb_flash_le.c diff --git a/src/agb_flash_mx.c b/src/libs/agb_flash_mx.c index 67348901f..67348901f 100644 --- a/src/agb_flash_mx.c +++ b/src/libs/agb_flash_mx.c diff --git a/src/libc.c b/src/libs/libc.c index 920673e3e..920673e3e 100644 --- a/src/libc.c +++ b/src/libs/libc.c diff --git a/src/m4a_2.c b/src/libs/m4a_2.c index 2d3c65848..2d3c65848 100644 --- a/src/m4a_2.c +++ b/src/libs/m4a_2.c diff --git a/src/m4a_4.c b/src/libs/m4a_4.c index 2e1d140b4..2e1d140b4 100644 --- a/src/m4a_4.c +++ b/src/libs/m4a_4.c diff --git a/src/m4a_tables.c b/src/libs/m4a_tables.c index 91f00a31d..91f00a31d 100644 --- a/src/m4a_tables.c +++ b/src/libs/m4a_tables.c diff --git a/src/siirtc.c b/src/libs/siirtc.c index 965a068f1..965a068f1 100644 --- a/src/siirtc.c +++ b/src/libs/siirtc.c diff --git a/src/learn_move.c b/src/pokemon/learn_move.c index 33252c66b..33252c66b 100644 --- a/src/learn_move.c +++ b/src/pokemon/learn_move.c diff --git a/src/mail.c b/src/pokemon/mail.c index c5dd119e3..c5dd119e3 100644 --- a/src/mail.c +++ b/src/pokemon/mail.c diff --git a/src/mail_data.c b/src/pokemon/mail_data.c index ae3f4b3e8..ae3f4b3e8 100644 --- a/src/mail_data.c +++ b/src/pokemon/mail_data.c diff --git a/src/mon_markings.c b/src/pokemon/mon_markings.c index 0cad8db59..0cad8db59 100644 --- a/src/mon_markings.c +++ b/src/pokemon/mon_markings.c diff --git a/src/pokeblock_feed.c b/src/pokemon/pokeblock_feed.c index ccbb391af..5d6b215cd 100644 --- a/src/pokeblock_feed.c +++ b/src/pokemon/pokeblock_feed.c @@ -46,7 +46,7 @@ extern const u8 gBattleTerrainPalette_BattleTower[]; extern const struct CompressedSpriteSheet gUnknown_083F7F74; extern const struct CompressedSpritePalette gUnknown_083F7F7C; -bool8 sub_8040A3C(u16 species); +bool8 IsPokeSpriteNotFlipped(u16 species); // this file's functions static void sub_8147B04(void); @@ -626,7 +626,7 @@ static bool8 sub_8147B20(struct Pokemon* mon) species = GetMonData(mon, MON_DATA_SPECIES2); PiD = GetMonData(mon, MON_DATA_PERSONALITY); TiD = GetMonData(mon, MON_DATA_OT_ID); - palette = sub_80409C8(species, TiD, PiD); + palette = GetMonSpritePalStructFromOtIdPersonality(species, TiD, PiD); LoadCompressedObjectPalette(palette); GetMonSpriteTemplate_803C56C(palette->tag, 1); ewram[0x1FFFF]++; @@ -766,7 +766,7 @@ static u8 PokeblockFeed_CreatePokeSprite(struct Pokemon* mon) gSprites[spriteID].data2 = species; gSprites[spriteID].callback = SpriteCallbackDummy; gPokeblockMonNotFlipped = 1; - if (!sub_8040A3C(species)) + if (!IsPokeSpriteNotFlipped(species)) { gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84120EC; gSprites[spriteID].oam.affineMode = 3; diff --git a/src/pokedex.c b/src/pokemon/pokedex.c index 274869d4d..947dfd218 100644 --- a/src/pokedex.c +++ b/src/pokemon/pokedex.c @@ -1,4 +1,3 @@ - #include "global.h" #include "gba/m4a_internal.h" #include "pokedex.h" @@ -185,7 +184,7 @@ static const u8 gUnknown_0839FA7C[] = INCBIN_U8("graphics/pokedex/noball.4bpp.lz extern const u8 gUnknown_0839FA7C[]; #endif -#include "data/pokedex_orders.h" +#include "../data/pokedex_orders.h" static const struct OamData gOamData_83A0404 = { .y = 160, @@ -514,9 +513,9 @@ static const u8 gUnknown_083A05F1[] = {16, 8, 4, 2, 1}; const u8 gEmptySpacce_83A05F6[] = {0, 0}; // Padding, maybe? static const u8 gUnknown_083A05F8[] = _(""); #if ENGLISH -#include "data/pokedex_entries_en.h" +#include "../data/pokedex_entries_en.h" #elif GERMAN -#include "data/pokedex_entries_de.h" +#include "../data/pokedex_entries_de.h" #endif static const u16 gUnknown_083B4EC4[16] = {0}; static const u8 *const sMonFootprintTable[] = @@ -1319,8 +1318,8 @@ void ResetPokedex(void) { gSaveBlock2.pokedex.owned[i] = 0; gSaveBlock2.pokedex.seen[i] = 0; - gSaveBlock1.unk938[i] = 0; - gSaveBlock1.unk3A8C[i] = 0; + gSaveBlock1.dexSeen2[i] = 0; + gSaveBlock1.dexSeen3[i] = 0; } } @@ -2029,8 +2028,8 @@ static void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = HoennToNationalOrder(i + 1); gPokedexView->unk0[i].dexNum = vars[2]; - gPokedexView->unk0[i].seen = GetNationalPokedexFlag(vars[2], 0); - gPokedexView->unk0[i].owned = GetNationalPokedexFlag(vars[2], 1); + gPokedexView->unk0[i].seen = GetSetPokedexFlag(vars[2], 0); + gPokedexView->unk0[i].owned = GetSetPokedexFlag(vars[2], 1); if (gPokedexView->unk0[i].seen) gPokedexView->pokemonListCount = i + 1; } @@ -2044,14 +2043,14 @@ static void SortPokedex(u8 dexMode, u8 sortMode) for (i = 0; i < vars[0]; i++) { vars[2] = i + 1; - if (GetNationalPokedexFlag(vars[2], 0)) + if (GetSetPokedexFlag(vars[2], 0)) r10 = 1; if (r10) { asm(""); //Needed to match for some reason gPokedexView->unk0[r5].dexNum = vars[2]; - gPokedexView->unk0[r5].seen = GetNationalPokedexFlag(vars[2], 0); - gPokedexView->unk0[r5].owned = GetNationalPokedexFlag(vars[2], 1); + gPokedexView->unk0[r5].seen = GetSetPokedexFlag(vars[2], 0); + gPokedexView->unk0[r5].owned = GetSetPokedexFlag(vars[2], 1); if (gPokedexView->unk0[r5].seen) gPokedexView->pokemonListCount = r5 + 1; r5++; @@ -2064,11 +2063,11 @@ static void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Alphabetical[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 0)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 0)) { gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; - gPokedexView->unk0[gPokedexView->pokemonListCount].owned = GetNationalPokedexFlag(vars[2], 1); + gPokedexView->unk0[gPokedexView->pokemonListCount].owned = GetSetPokedexFlag(vars[2], 1); gPokedexView->pokemonListCount++; } } @@ -2078,7 +2077,7 @@ static void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Weight[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; @@ -2092,7 +2091,7 @@ static void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Weight[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; @@ -2106,7 +2105,7 @@ static void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Height[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; @@ -2120,7 +2119,7 @@ static void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Height[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; @@ -3945,7 +3944,7 @@ static void sub_8090B8C(u8 taskId) otId = ((u16)gTasks[taskId].data[13] << 16) | (u16)gTasks[taskId].data[12]; personality = ((u16)gTasks[taskId].data[15] << 16) | (u16)gTasks[taskId].data[14]; paletteNum = gSprites[gTasks[taskId].data[3]].oam.paletteNum; - lzPaletteData = species_and_otid_get_pal(species, otId, personality); + lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personality); LoadCompressedPalette(lzPaletteData, 0x100 | paletteNum * 16, 32); DestroyTask(taskId); } @@ -4007,79 +4006,79 @@ u16 GetPokedexHeightWeight(u16 dexNum, u8 data) } } -s8 GetNationalPokedexFlag(u16 a, u8 b) +s8 GetSetPokedexFlag(u16 nationalDexNo, u8 caseID) { u8 index; u8 bit; u8 mask; s8 retVal; - a--; - index = a / 8; - bit = a % 8; + nationalDexNo--; + index = nationalDexNo / 8; + bit = nationalDexNo % 8; mask = 1 << bit; retVal = 0; - switch (b) + switch (caseID) { - case 0: + case FLAG_GET_SEEN: if (gSaveBlock2.pokedex.seen[index] & mask) { - if ((gSaveBlock2.pokedex.seen[index] & mask) == (gSaveBlock1.unk938[index] & mask) - && (gSaveBlock2.pokedex.seen[index] & mask) == (gSaveBlock1.unk3A8C[index] & mask)) + if ((gSaveBlock2.pokedex.seen[index] & mask) == (gSaveBlock1.dexSeen2[index] & mask) + && (gSaveBlock2.pokedex.seen[index] & mask) == (gSaveBlock1.dexSeen3[index] & mask)) retVal = 1; else { gSaveBlock2.pokedex.seen[index] &= ~mask; - gSaveBlock1.unk938[index] &= ~mask; - gSaveBlock1.unk3A8C[index] &= ~mask; + gSaveBlock1.dexSeen2[index] &= ~mask; + gSaveBlock1.dexSeen3[index] &= ~mask; retVal = 0; } } break; - case 1: + case FLAG_GET_CAUGHT: if (gSaveBlock2.pokedex.owned[index] & mask) { if ((gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock2.pokedex.seen[index] & mask) - && (gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock1.unk938[index] & mask) - && (gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock1.unk3A8C[index] & mask)) + && (gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock1.dexSeen2[index] & mask) + && (gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock1.dexSeen3[index] & mask)) retVal = 1; else { gSaveBlock2.pokedex.owned[index] &= ~mask; gSaveBlock2.pokedex.seen[index] &= ~mask; - gSaveBlock1.unk938[index] &= ~mask; - gSaveBlock1.unk3A8C[index] &= ~mask; + gSaveBlock1.dexSeen2[index] &= ~mask; + gSaveBlock1.dexSeen3[index] &= ~mask; retVal = 0; } } break; - case 2: + case FLAG_SET_SEEN: gSaveBlock2.pokedex.seen[index] |= mask; - gSaveBlock1.unk938[index] |= mask; - gSaveBlock1.unk3A8C[index] |= mask; + gSaveBlock1.dexSeen2[index] |= mask; + gSaveBlock1.dexSeen3[index] |= mask; break; - case 3: + case FLAG_SET_CAUGHT: gSaveBlock2.pokedex.owned[index] |= mask; break; } return retVal; } -u16 GetNationalPokedexCount(u8 a) +u16 GetNationalPokedexCount(u8 caseID) { u16 count = 0; u16 i; for (i = 0; i < NATIONAL_DEX_COUNT; i++) { - switch (a) + switch (caseID) { - case 0: - if (GetNationalPokedexFlag(i + 1, 0) != 0) + case FLAG_GET_SEEN: + if (GetSetPokedexFlag(i + 1, FLAG_GET_SEEN)) count++; break; - case 1: - if (GetNationalPokedexFlag(i + 1, 1) != 0) + case FLAG_GET_CAUGHT: + if (GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT)) count++; break; } @@ -4087,21 +4086,21 @@ u16 GetNationalPokedexCount(u8 a) return count; } -u16 GetHoennPokedexCount(u8 a) +u16 GetHoennPokedexCount(u8 caseID) { u16 count = 0; u16 i; for (i = 0; i < 202; i++) { - switch (a) + switch (caseID) { - case 0: - if (GetNationalPokedexFlag(HoennToNationalOrder(i + 1), 0) != 0) + case FLAG_GET_SEEN: + if (GetSetPokedexFlag(HoennToNationalOrder(i + 1), FLAG_GET_SEEN)) count++; break; - case 1: - if (GetNationalPokedexFlag(HoennToNationalOrder(i + 1), 1) != 0) + case FLAG_GET_CAUGHT: + if (GetSetPokedexFlag(HoennToNationalOrder(i + 1), FLAG_GET_CAUGHT)) count++; break; } @@ -4115,7 +4114,7 @@ bool8 sub_8090FC0(void) for (i = 0; i < 200; i++) { - if (GetNationalPokedexFlag(HoennToNationalOrder(i + 1), 1) == 0) + if (!GetSetPokedexFlag(HoennToNationalOrder(i + 1), FLAG_GET_CAUGHT)) return FALSE; } return TRUE; @@ -4127,17 +4126,17 @@ u16 sub_8090FF4(void) for (i = 0; i < 150; i++) { - if (GetNationalPokedexFlag(i + 1, 1) == 0) + if (GetSetPokedexFlag(i + 1, 1) == 0) return 0; } for (i = 152; i < 250; i++) { - if (GetNationalPokedexFlag(i + 1, 1) == 0) + if (GetSetPokedexFlag(i + 1, 1) == 0) return 0; } for (i = 252; i < 384; i++) { - if (GetNationalPokedexFlag(i + 1, 1) == 0) + if (GetSetPokedexFlag(i + 1, 1) == 0) return 0; } return 1; diff --git a/src/pokedex_cry_screen.c b/src/pokemon/pokedex_cry_screen.c index 92fd832fc..92fd832fc 100644 --- a/src/pokedex_cry_screen.c +++ b/src/pokemon/pokedex_cry_screen.c diff --git a/src/pokemon_1.c b/src/pokemon/pokemon_1.c index 1d597cb17..1d597cb17 100644 --- a/src/pokemon_1.c +++ b/src/pokemon/pokemon_1.c diff --git a/src/pokemon_2.c b/src/pokemon/pokemon_2.c index f02ce6170..f02ce6170 100644 --- a/src/pokemon_2.c +++ b/src/pokemon/pokemon_2.c diff --git a/src/pokemon_3.c b/src/pokemon/pokemon_3.c index e51d3187b..1eff9b83c 100644 --- a/src/pokemon_3.c +++ b/src/pokemon/pokemon_3.c @@ -278,7 +278,7 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem) else holdEffect = ItemId_GetHoldEffect(heldItem); - if (holdEffect == 38 && type != 3) + if (holdEffect == HOLD_EFFECT_PREVENT_EVOLVE && type != 3) return 0; switch (type) @@ -1096,7 +1096,7 @@ void ClearBattleMonForms(void) gBattleMonForms[i] = 0; } -u16 sub_8040728(void) +u16 GetBGM_ForBattle(void) { if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) return BGM_BATTLE34; @@ -1137,7 +1137,7 @@ void sub_80408BC(void) { ResetMapMusic(); m4aMPlayAllStop(); - PlayBGM(sub_8040728()); + PlayBGM(GetBGM_ForBattle()); } void current_map_music_set__default_for_battle(u16 song) @@ -1147,15 +1147,15 @@ void current_map_music_set__default_for_battle(u16 song) if (song) PlayNewMapMusic(song); else - PlayNewMapMusic(sub_8040728()); + PlayNewMapMusic(GetBGM_ForBattle()); } -const u8 *pokemon_get_pal(struct Pokemon *mon) +const u8 *GetMonSpritePal(struct Pokemon *mon) { u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0); u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0); - return species_and_otid_get_pal(species, otId, personality); + return GetMonSpritePalFromOtIdPersonality(species, otId, personality); } //Extracts the upper 16 bits of a 32-bit number @@ -1164,7 +1164,7 @@ const u8 *pokemon_get_pal(struct Pokemon *mon) //Extracts the lower 16 bits of a 32-bit number #define LOHALF(n) ((n) & 0xFFFF) -const u8 *species_and_otid_get_pal(u16 species, u32 otId, u32 personality) +const u8 *GetMonSpritePalFromOtIdPersonality(u16 species, u32 otId, u32 personality) { u32 shinyValue; @@ -1178,15 +1178,15 @@ const u8 *species_and_otid_get_pal(u16 species, u32 otId, u32 personality) return gMonPaletteTable[species].data; } -const struct CompressedSpritePalette *sub_8040990(struct Pokemon *mon) +const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon) { u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0); u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0); - return sub_80409C8(species, otId, personality); + return GetMonSpritePalStructFromOtIdPersonality(species, otId, personality); } -const struct CompressedSpritePalette *sub_80409C8(u16 species, u32 otId , u32 personality) +const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality) { u32 shinyValue; @@ -1208,9 +1208,9 @@ bool32 IsHMMove2(u16 move) return FALSE; } -bool8 sub_8040A3C(u16 species) +bool8 IsPokeSpriteNotFlipped(u16 species) { - return gBaseStats[species].unk19_7; + return gBaseStats[species].noFlip; } s8 sub_8040A54(struct Pokemon *mon, u8 a2) diff --git a/src/pokemon_data.c b/src/pokemon/pokemon_data.c index 6414134fb..6414134fb 100644 --- a/src/pokemon_data.c +++ b/src/pokemon/pokemon_data.c diff --git a/src/pokemon_icon.c b/src/pokemon/pokemon_icon.c index 9bb3386e1..9bb3386e1 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon/pokemon_icon.c diff --git a/src/pokemon_menu.c b/src/pokemon/pokemon_menu.c index bc5150a16..bc5150a16 100644 --- a/src/pokemon_menu.c +++ b/src/pokemon/pokemon_menu.c diff --git a/src/pokemon_size_record.c b/src/pokemon/pokemon_size_record.c index f2222bd3b..f2222bd3b 100644 --- a/src/pokemon_size_record.c +++ b/src/pokemon/pokemon_size_record.c diff --git a/src/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 5e97523e2..5e97523e2 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c diff --git a/src/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index 00a0bea29..00a0bea29 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c diff --git a/src/rom6.c b/src/rom6.c index 3a5071034..b91a9b2c0 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -169,7 +169,7 @@ int SetUpFieldMove_Dig(void) static void sub_810B5D8(void) { - sub_8053014(); + Overworld_ResetStateAfterDigEscRope(); FieldEffectStart(FLDEFF_USE_DIG); gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; } diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 249146b37..172233e6d 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -102,8 +102,8 @@ extern u32 gTransformPersonalities[NUM_BATTLE_SLOTS]; extern u8 gBattleMonForms[NUM_BATTLE_SLOTS]; extern u16 gUnknown_0202F7CA[]; extern u8 gBattleMonSprites[NUM_BATTLE_SLOTS]; -extern u8 gBattleAnimPlayerMonIndex; -extern u8 gBattleAnimEnemyMonIndex; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; extern s16 gBattleAnimArgs[8]; extern u8 gBanksBySide[NUM_BATTLE_SLOTS]; extern u8 gNoOfAllBanks; // gNumBattleMons? @@ -402,43 +402,43 @@ u8 sub_8077FC0(u8 slot) { return r6; } -u8 obj_id_for_side_relative_to_move(u8 a1) { +u8 GetAnimBankSpriteId(u8 whichBank) { u8 *sprites; - if (a1 == 0) { - if (sub_8078874(gBattleAnimPlayerMonIndex)) { + if (whichBank == ANIM_BANK_ATK) { + if (AnimBankSpriteExists(gBattleAnimBankAttacker)) { sprites = gBattleMonSprites; - return sprites[gBattleAnimPlayerMonIndex]; + return sprites[gBattleAnimBankAttacker]; } else { return 0xff; } - } else if (a1 == 1) { - if (sub_8078874(gBattleAnimEnemyMonIndex)) { + } else if (whichBank == ANIM_BANK_DEF) { + if (AnimBankSpriteExists(gBattleAnimBankTarget)) { sprites = gBattleMonSprites; - return sprites[gBattleAnimEnemyMonIndex]; + return sprites[gBattleAnimBankTarget]; } else { return 0xff; } - } else if (a1 == 2) { - if (!b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex ^ 2)) { + } else if (whichBank == ANIM_BANK_ATK_PARTNER) { + if (!IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2)) { return 0xff; } else { - return gBattleMonSprites[gBattleAnimPlayerMonIndex ^ 2]; + return gBattleMonSprites[gBattleAnimBankAttacker ^ 2]; } } else { - if (b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2)) { - return gBattleMonSprites[gBattleAnimEnemyMonIndex ^ 2]; + if (IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2)) { + return gBattleMonSprites[gBattleAnimBankTarget ^ 2]; } else { return 0xff; } } } -void oamt_set_x3A_32(struct Sprite *sprite, void (*callback)(struct Sprite*)) { +void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*callback)(struct Sprite*)) { sprite->data6 = (u32)(callback) & 0xffff; sprite->data7 = (u32)(callback) >> 16; } -void sub_8078104(struct Sprite *sprite) { +void SetCallbackToStoredInData6(struct Sprite *sprite) { u32 callback = (u16)sprite->data6 | (sprite->data7 << 16); sprite->callback = (void (*)(struct Sprite *))callback; } @@ -455,7 +455,7 @@ void sub_8078114(struct Sprite *sprite) { } sprite->data3--; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -472,7 +472,7 @@ void sub_8078174(struct Sprite *sprite) { } sprite->data3--; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -494,7 +494,7 @@ void unref_sub_80781F0(struct Sprite *sprite) { } sprite->data3--; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -510,7 +510,7 @@ void sub_8078278(struct Sprite *sprite) { } sprite->data3--; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -518,7 +518,7 @@ void sub_80782D8(struct Sprite *sprite) { if (sprite->data0 > 0) { sprite->data0--; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -547,7 +547,7 @@ void sub_8078364(struct Sprite *sprite) { sprite->pos2.x += sprite->data1; sprite->pos2.y += sprite->data2; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -559,7 +559,7 @@ void sub_8078394(struct Sprite *sprite) { sprite->pos2.x = sprite->data3 >> 8; sprite->pos2.y = sprite->data4 >> 8; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -571,7 +571,7 @@ void sub_80783D0(struct Sprite *sprite) { sprite->pos2.x = sprite->data3 >> 8; sprite->pos2.y = sprite->data4 >> 8; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } UpdateMonIconFrame(sprite); } @@ -579,8 +579,8 @@ void sub_80783D0(struct Sprite *sprite) { void unref_sub_8078414(struct Sprite *sprite) { sprite->data1 = sprite->pos1.x + sprite->pos2.x; sprite->data3 = sprite->pos1.y + sprite->pos2.y; - sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2); - sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3); + sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, 3); sprite->callback = sub_80782F8; } @@ -590,7 +590,7 @@ void sub_8078458(struct Sprite *sprite) { gSprites[sprite->data3].pos2.x += sprite->data1; gSprites[sprite->data3].pos2.y += sprite->data2; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -602,7 +602,7 @@ void sub_80784A8(struct Sprite *sprite) { gSprites[sprite->data5].pos2.x = sprite->data3 >> 8; gSprites[sprite->data5].pos2.y = sprite->data4 >> 8; } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -619,7 +619,7 @@ void sub_8078504(struct Sprite *sprite) { } } } else { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -631,8 +631,8 @@ void move_anim_8074EE0(struct Sprite *sprite) { void unref_sub_8078588(struct Sprite *sprite) { sprite->data1 = sprite->pos1.x + sprite->pos2.x; sprite->data3 = sprite->pos1.y + sprite->pos2.y; - sprite->data2 = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); - sprite->data4 = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); + sprite->data2 = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->data4 = sub_8077ABC(gBattleAnimBankAttacker, 3); sprite->callback = sub_80782F8; } @@ -643,13 +643,13 @@ void unref_sub_80785CC(struct Sprite *sprite) { void sub_80785E4(struct Sprite *sprite) { if (sprite->affineAnimEnded) { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } void sub_8078600(struct Sprite *sprite) { if (sprite->animEnded) { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -666,19 +666,19 @@ void sub_8078634(u8 task) { } void sub_8078650(struct Sprite *sprite) { - sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); - sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); } void sub_807867C(struct Sprite *sprite, s16 a2) { - u16 v1 = sub_8077ABC(gBattleAnimPlayerMonIndex, 0); - u16 v2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 0); + u16 v1 = sub_8077ABC(gBattleAnimBankAttacker, 0); + u16 v2 = sub_8077ABC(gBattleAnimBankTarget, 0); if (v1 > v2) { sprite->pos1.x -= a2; } else if (v1 < v2) { sprite->pos1.x += a2; } else { - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { sprite->pos1.x -= a2; } else { sprite->pos1.x += a2; @@ -712,8 +712,8 @@ void oamt_add_pos2_onto_pos1(struct Sprite *sprite) { void sub_8078764(struct Sprite *sprite, u8 a2) { if (!a2) { - sprite->pos1.x = sub_8077EE4(gBattleAnimEnemyMonIndex, 0); - sprite->pos1.y = sub_8077EE4(gBattleAnimEnemyMonIndex, 1); + sprite->pos1.x = sub_8077EE4(gBattleAnimBankTarget, 0); + sprite->pos1.y = sub_8077EE4(gBattleAnimBankTarget, 1); } sub_807867C(sprite, gBattleAnimArgs[0]); sprite->pos1.y += gBattleAnimArgs[1]; @@ -721,11 +721,11 @@ void sub_8078764(struct Sprite *sprite, u8 a2) { void sub_80787B0(struct Sprite *sprite, u8 a2) { if (!a2) { - sprite->pos1.x = sub_8077EE4(gBattleAnimPlayerMonIndex, 0); - sprite->pos1.y = sub_8077EE4(gBattleAnimPlayerMonIndex, 1); + sprite->pos1.x = sub_8077EE4(gBattleAnimBankAttacker, 0); + sprite->pos1.y = sub_8077EE4(gBattleAnimBankAttacker, 1); } else { - sprite->pos1.x = sub_8077EE4(gBattleAnimPlayerMonIndex, 2); - sprite->pos1.y = sub_8077EE4(gBattleAnimPlayerMonIndex, 3); + sprite->pos1.x = sub_8077EE4(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077EE4(gBattleAnimBankAttacker, 3); } sub_807867C(sprite, gBattleAnimArgs[0]); sprite->pos1.y += gBattleAnimArgs[1]; @@ -749,12 +749,12 @@ u8 GetBankByPlayerAI(u8 slot) { return i; } -bool8 sub_8078874(u8 slot) { +bool8 AnimBankSpriteExists(u8 slot) { if (IsContest()) { - if (gBattleAnimPlayerMonIndex == slot) { + if (gBattleAnimBankAttacker == slot) { return TRUE; } - if (gBattleAnimEnemyMonIndex == slot) { + if (gBattleAnimBankTarget == slot) { return TRUE; } return FALSE; @@ -796,7 +796,7 @@ void sub_8078954(struct Struct_sub_8078914 *unk) { unk->field_0 = (u8 *)0x6008000; unk->field_4 = (u8 *)0x600f000; unk->field_8 = 0xe; - } else if (GetBankIdentity_permutated(gBattleAnimPlayerMonIndex) == 1) { + } else if (GetBankIdentity_permutated(gBattleAnimBankAttacker) == 1) { unk->field_0 = (u8 *)0x6004000; unk->field_4 = (u8 *)0x600e000; unk->field_8 = 0x8; @@ -906,7 +906,7 @@ bool8 sub_8078B5C(struct Sprite *sprite) { void sub_8078BB8(struct Sprite *sprite) { if (sub_8078B5C(sprite)) { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -986,7 +986,7 @@ bool8 sub_8078CE8(struct Sprite *sprite) { void sub_8078D44(struct Sprite *sprite) { if (sub_8078CE8(sprite)) { - sub_8078104(sprite); + SetCallbackToStoredInData6(sprite); } } @@ -1024,7 +1024,7 @@ void obj_id_set_rotscale(u8 sprite, s16 xScale, s16 yScale, u16 rotation) { bool8 sub_8078E38() { if (IsContest()) { - if (gSprites[obj_id_for_side_relative_to_move(0)].data2 == 0xc9 /* XXX SPECIES_UNOWN? */) { + if (gSprites[GetAnimBankSpriteId(0)].data2 == 0xc9 /* XXX SPECIES_UNOWN? */) { return FALSE; } return TRUE; @@ -1035,7 +1035,7 @@ bool8 sub_8078E38() { void sub_8078E70(u8 sprite, u8 a2) { struct Struct_2017810 *unk; u8 r7 = gSprites[sprite].data0; - if (IsContest() || b_side_obj__get_some_boolean(r7)) { + if (IsContest() || IsAnimBankSpriteVisible(r7)) { gSprites[sprite].invisible = FALSE; } gSprites[sprite].oam.objMode = a2; @@ -1096,12 +1096,12 @@ void sub_8079098(struct Sprite *sprite) { CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); } -u16 sub_80790D8(s16 a, s16 b) { +static u16 ArcTan2_(s16 a, s16 b) { return ArcTan2(a, b); } u16 sub_80790F0(s16 a, s16 b) { - u16 var = sub_80790D8(a, b); + u16 var = ArcTan2_(a, b); return -var; } @@ -1140,22 +1140,22 @@ u32 sub_80791A8(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) { } } if (a2) { - shift = gBattleAnimPlayerMonIndex + 16; + shift = gBattleAnimBankAttacker + 16; var |= 1 << shift; } if (a3) { - shift = gBattleAnimEnemyMonIndex + 16; + shift = gBattleAnimBankTarget + 16; var |= 1 << shift; } if (a4) { - if (b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex ^ 2)) { - shift = (gBattleAnimPlayerMonIndex ^ 2) + 16; + if (IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2)) { + shift = (gBattleAnimBankAttacker ^ 2) + 16; var |= 1 << shift; } } if (a5) { - if (b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2)) { - shift = (gBattleAnimEnemyMonIndex ^ 2) + 16; + if (IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2)) { + shift = (gBattleAnimBankTarget ^ 2) + 16; var |= 1 << shift; } } @@ -1184,24 +1184,24 @@ u32 sub_80792C0(u8 a1, u8 a2, u8 a3, u8 a4) { } } else { if (a1) { - if (b_side_obj__get_some_boolean(GetBankByPlayerAI(0))) { + if (IsAnimBankSpriteVisible(GetBankByPlayerAI(0))) { var |= 1 << (GetBankByPlayerAI(0) + 16); } } if (a2) { - if (b_side_obj__get_some_boolean(GetBankByPlayerAI(2))) { + if (IsAnimBankSpriteVisible(GetBankByPlayerAI(2))) { shift = GetBankByPlayerAI(2) + 16; var |= 1 << shift; } } if (a3) { - if (b_side_obj__get_some_boolean(GetBankByPlayerAI(1))) { + if (IsAnimBankSpriteVisible(GetBankByPlayerAI(1))) { shift = GetBankByPlayerAI(1) + 16; var |= 1 << shift; } } if (a4) { - if (b_side_obj__get_some_boolean(GetBankByPlayerAI(3))) { + if (IsAnimBankSpriteVisible(GetBankByPlayerAI(3))) { shift = GetBankByPlayerAI(3) + 16; var |= 1 << shift; } @@ -1252,24 +1252,24 @@ void sub_807941C(struct Sprite *sprite) { v2 = 1; } sub_80787B0(sprite, v1); - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; } sprite->data0 = gBattleAnimArgs[4]; - sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2) + gBattleAnimArgs[2]; - sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, v2) + gBattleAnimArgs[3]; + sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[2]; + sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, v2) + gBattleAnimArgs[3]; sprite->callback = sub_8078B34; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } void sub_80794A8(struct Sprite *sprite) { sub_80787B0(sprite, 1); - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; } sprite->data0 = gBattleAnimArgs[4]; - sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2) + gBattleAnimArgs[2]; - sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3) + gBattleAnimArgs[3]; + sprite->data2 = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[2]; + sprite->data4 = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[3]; sprite->data5 = gBattleAnimArgs[5]; sub_80786EC(sprite); sprite->callback = sub_8079518; @@ -1292,12 +1292,12 @@ void sub_8079534(struct Sprite *sprite) { } if (!gBattleAnimArgs[5]) { sub_80787B0(sprite, r4); - slot = gBattleAnimPlayerMonIndex; + slot = gBattleAnimBankAttacker; } else { sub_8078764(sprite, r4); - slot = gBattleAnimEnemyMonIndex; + slot = gBattleAnimBankTarget; } - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; } sub_8078764(sprite, r4); @@ -1305,12 +1305,12 @@ void sub_8079534(struct Sprite *sprite) { sprite->data2 = sub_8077ABC(slot, 2) + gBattleAnimArgs[2]; sprite->data4 = sub_8077ABC(slot, r7) + gBattleAnimArgs[3]; sprite->callback = sub_8078B34; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } s16 duplicate_obj_of_side_rel2move_in_transparent_mode(u8 a1) { u16 i; - u8 sprite = obj_id_for_side_relative_to_move(a1); + u8 sprite = GetAnimBankSpriteId(a1); if (sprite != 0xff) { for (i = 0; i < 0x40; i++) { if (gSprites[i].inUse) { @@ -1380,7 +1380,7 @@ void sub_80796F8(u8 taskId) { } void sub_8079790(u8 task) { - u8 sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); + u8 sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); if (sprite == 0xff) { DestroyAnimVisualTask(task); return; @@ -1624,24 +1624,24 @@ void sub_8079CEC(u8 task) { } void unref_sub_8079D20(u8 priority) { - if (b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex)) { - gSprites[gBattleMonSprites[gBattleAnimEnemyMonIndex]].oam.priority = priority; + if (IsAnimBankSpriteVisible(gBattleAnimBankTarget)) { + gSprites[gBattleMonSprites[gBattleAnimBankTarget]].oam.priority = priority; } - if (b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex)) { - gSprites[gBattleMonSprites[gBattleAnimPlayerMonIndex]].oam.priority = priority; + if (IsAnimBankSpriteVisible(gBattleAnimBankAttacker)) { + gSprites[gBattleMonSprites[gBattleAnimBankAttacker]].oam.priority = priority; } - if (b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2)) { - gSprites[gBattleMonSprites[gBattleAnimEnemyMonIndex ^ 2]].oam.priority = priority; + if (IsAnimBankSpriteVisible(gBattleAnimBankTarget ^ 2)) { + gSprites[gBattleMonSprites[gBattleAnimBankTarget ^ 2]].oam.priority = priority; } - if (b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex ^ 2)) { - gSprites[gBattleMonSprites[gBattleAnimPlayerMonIndex ^ 2]].oam.priority = priority; + if (IsAnimBankSpriteVisible(gBattleAnimBankAttacker ^ 2)) { + gSprites[gBattleMonSprites[gBattleAnimBankAttacker ^ 2]].oam.priority = priority; } } void sub_8079E24() { int i; for (i = 0; i < gNoOfAllBanks; i++) { - if (b_side_obj__get_some_boolean(i)) { + if (IsAnimBankSpriteVisible(i)) { gSprites[gBattleMonSprites[i]].subpriority = sub_8079E90(i); gSprites[gBattleMonSprites[i]].oam.priority = 2; } @@ -1706,7 +1706,7 @@ u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, u16 sheet = LoadSpriteSheet(&gUnknown_0837F5E0[a3]); u16 palette = AllocSpritePalette(gSpriteTemplate_837F5B0[a3].paletteTag); if (!isBackpic) { - LoadCompressedPalette(species_and_otid_get_pal(species, a8, a7), (palette * 0x10) + 0x100, 0x20); + LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(species, a8, a7), (palette * 0x10) + 0x100, 0x20); LoadSpecialPokePic( &gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, @@ -1719,7 +1719,7 @@ u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, ); } else { LoadCompressedPalette( - species_and_otid_get_pal(species, a8, a7), (palette * 0x10) + 0x100, 0x20); + GetMonSpritePalFromOtIdPersonality(species, a8, a7), (palette * 0x10) + 0x100, 0x20); LoadSpecialPokePic( &gMonBackPicTable[species], gMonBackPicCoords[species].coords, @@ -1892,7 +1892,7 @@ u8 sub_807A4A0(int a1, u8 sprite, int a3) { void sub_807A544(struct Sprite *sprite) { sub_8078650(sprite); - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { sprite->pos1.x -= gBattleAnimArgs[0]; gBattleAnimArgs[3] = -gBattleAnimArgs[3]; sprite->hFlip = TRUE; @@ -1904,12 +1904,12 @@ void sub_807A544(struct Sprite *sprite) { sprite->data1 = gBattleAnimArgs[3]; sprite->data3 = gBattleAnimArgs[4]; sprite->data5 = gBattleAnimArgs[5]; - oamt_set_x3A_32(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); sprite->callback = sub_8078504; } void sub_807A5C4(struct Sprite *sprite) { - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { sprite->pos1.x -= gBattleAnimArgs[0]; gBattleAnimArgs[3] *= -1; } else { @@ -1921,28 +1921,28 @@ void sub_807A5C4(struct Sprite *sprite) { sprite->data3 = gBattleAnimArgs[4]; sprite->data5 = gBattleAnimArgs[5]; StartSpriteAnim(sprite, gBattleAnimArgs[6]); - oamt_set_x3A_32(sprite, move_anim_8074EE0); + StoreSpriteCallbackInData6(sprite, move_anim_8074EE0); sprite->callback = sub_8078504; } void sub_807A63C(struct Sprite *sprite) { sub_8078650(sprite); - if (GetBankSide(gBattleAnimPlayerMonIndex)) { + if (GetBankSide(gBattleAnimBankAttacker)) { sprite->pos1.x -= gBattleAnimArgs[0]; } else { sprite->pos1.x += gBattleAnimArgs[0]; } sprite->pos1.y += gBattleAnimArgs[1]; sprite->callback = sub_8078600; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } void sub_807A69C(u8 taskId) { u16 src; u16 dest; struct Task *task = &gTasks[taskId]; - task->data[0] = obj_id_for_side_relative_to_move(0); - task->data[1] = (GetBankSide(gBattleAnimPlayerMonIndex)) ? -8 : 8; + task->data[0] = GetAnimBankSpriteId(0); + task->data[1] = (GetBankSide(gBattleAnimBankAttacker)) ? -8 : 8; task->data[2] = 0; task->data[3] = 0; gSprites[task->data[0]].pos2.x -= task->data[0]; @@ -1951,7 +1951,7 @@ void sub_807A69C(u8 taskId) { dest = (task->data[4] + 0x10) * 0x10; src = (gSprites[task->data[0]].oam.paletteNum + 0x10) * 0x10; - task->data[6] = sub_8079E90(gBattleAnimPlayerMonIndex); + task->data[6] = sub_8079E90(gBattleAnimBankAttacker); if (task->data[6] == 20 || task->data[6] == 40) { task->data[6] = 2; } else { @@ -2012,9 +2012,9 @@ void sub_807A8D4(struct Sprite *sprite) { } void sub_807A908(struct Sprite *sprite) { - sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); - sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); - if (!GetBankSide(gBattleAnimPlayerMonIndex)) { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); + if (!GetBankSide(gBattleAnimBankAttacker)) { sprite->data0 = 5; } else { sprite->data0 = -10; @@ -2041,7 +2041,7 @@ void sub_807A9BC(struct Sprite *sprite) { sprite->data0 = gBattleAnimArgs[2]; sprite->data2 = sprite->pos1.x + gBattleAnimArgs[4]; sprite->data4 = sprite->pos1.y + gBattleAnimArgs[5]; - if (!GetBankSide(gBattleAnimEnemyMonIndex)) { + if (!GetBankSide(gBattleAnimBankTarget)) { x = (u16)gBattleAnimArgs[4] + 30; sprite->pos1.x += x; sprite->pos1.y = gBattleAnimArgs[5] - 20; @@ -2051,5 +2051,5 @@ void sub_807A9BC(struct Sprite *sprite) { sprite->pos1.y = gBattleAnimArgs[5] - 80; } sprite->callback = sub_8078B34; - oamt_set_x3A_32(sprite, move_anim_8072740); + StoreSpriteCallbackInData6(sprite, move_anim_8072740); } diff --git a/src/berry_blender.c b/src/scene/berry_blender.c index 455aabc45..7ffcc5185 100644 --- a/src/berry_blender.c +++ b/src/scene/berry_blender.c @@ -828,7 +828,7 @@ static bool8 sub_804E2EC(void) switch (gBerryBlenderData->field_1) { case 0: - sub_800D238(gUnknown_08E6C100, &ewram[0x10000]); + LZDecompressWram(gUnknown_08E6C100, &ewram[0x10000]); gBerryBlenderData->field_1++; break; case 1: @@ -862,11 +862,11 @@ static bool8 sub_804E2EC(void) } break; case 3: - sub_800D238(gUnknown_08E6C920, &ewram[0x10000]); + LZDecompressWram(gUnknown_08E6C920, &ewram[0x10000]); gBerryBlenderData->field_1++; break; case 4: - sub_800D238(gUnknown_08E6D354, &ewram[0x13000]); + LZDecompressWram(gUnknown_08E6D354, &ewram[0x13000]); gBerryBlenderData->field_1++; break; case 5: diff --git a/src/contest_painting.c b/src/scene/contest_painting.c index 391cbdfaa..3662efdec 100644 --- a/src/contest_painting.c +++ b/src/scene/contest_painting.c @@ -353,7 +353,7 @@ static void sub_8106AC4(u16 species, u8 arg1) void *pal; // Unsure what gUnknown_03005E8C->var0 is supposed to be. - pal = species_and_otid_get_pal(species, gUnknown_03005E8C->var4, gUnknown_03005E8C->var0); + pal = GetMonSpritePalFromOtIdPersonality(species, gUnknown_03005E8C->var4, gUnknown_03005E8C->var0); LZDecompressVram(pal, gUnknown_03005E90); if (arg1 == 1) @@ -402,7 +402,7 @@ static void sub_8106AC4(u16 arg0, u8 arg2) ldr r1, [r0, 0x4]\n\ ldr r2, [r0]\n\ adds r0, r6, 0\n\ - bl species_and_otid_get_pal\n\ + bl GetMonSpritePalFromOtIdPersonality\n\ ldr r1, _08106B2C @ =gUnknown_03005E90\n\ mov r8, r1\n\ ldr r1, [r1]\n\ diff --git a/src/credits.c b/src/scene/credits.c index df70674b6..cf10137c1 100644 --- a/src/credits.c +++ b/src/scene/credits.c @@ -1387,7 +1387,7 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position) 1 ); - lzPaletteData = species_and_otid_get_pal(species, 0, 0xFFFF); + lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, 0, 0xFFFF); LoadCompressedPalette(lzPaletteData, 0x100 + (position * 16), 0x20); sub_8143648(position, position); @@ -1433,7 +1433,7 @@ static void sub_81458DC(void) for (dexNum = 1, seenTypesCount = 0; dexNum < 386; dexNum++) { - if (GetNationalPokedexFlag(dexNum, 1)) + if (GetSetPokedexFlag(dexNum, 1)) { unk201C000->unk90[seenTypesCount] = dexNum; seenTypesCount++; diff --git a/src/cute_sketch.c b/src/scene/cute_sketch.c index 5317bc334..5317bc334 100644 --- a/src/cute_sketch.c +++ b/src/scene/cute_sketch.c diff --git a/src/egg_hatch.c b/src/scene/egg_hatch.c index e85ca01af..032dcd284 100644 --- a/src/egg_hatch.c +++ b/src/scene/egg_hatch.c @@ -46,10 +46,10 @@ extern const struct SpriteSheet sUnknown_0820A3B0; extern const struct SpriteSheet sUnknown_0820A3B8; extern const struct SpritePalette sUnknown_0820A3C0; -bool8 GetNationalPokedexFlag(u16 nationalNum, u8 caseID); +bool8 GetSetPokedexFlag(u16 nationalNum, u8 caseID); u8* GetMonNick(struct Pokemon* mon, u8* dst); u8 sav1_map_get_name(void); -const struct CompressedSpritePalette* sub_8040990(struct Pokemon* mon); //gets pokemon palette address +const struct CompressedSpritePalette* GetMonSpritePalStruct(struct Pokemon* mon); //gets pokemon palette address void sub_8080990(void); static void Task_EggHatch(u8 taskID); @@ -287,8 +287,8 @@ static void AddHatchedMonToParty(u8 id) SetMonData(mon, MON_DATA_NICKNAME, name); pokeNum = SpeciesToNationalPokedexNum(pokeNum); - GetNationalPokedexFlag(pokeNum, 2); - GetNationalPokedexFlag(pokeNum, 3); + GetSetPokedexFlag(pokeNum, 2); + GetSetPokedexFlag(pokeNum, 3); GetMonNick(mon, gStringVar1); @@ -417,11 +417,11 @@ static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID) u16 species = GetMonData(mon, MON_DATA_SPECIES); u32 pid = GetMonData(mon, MON_DATA_PERSONALITY); HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset,(u32)(&ewram[0]), gUnknown_081FAF4C[2 * a0 + 1], species, pid); - LoadCompressedObjectPalette(sub_8040990(mon)); + LoadCompressedObjectPalette(GetMonSpritePalStruct(mon)); } break; case 1: - GetMonSpriteTemplate_803C56C(sub_8040990(mon)->tag, r5); + GetMonSpriteTemplate_803C56C(GetMonSpritePalStruct(mon)->tag, r5); spriteID = CreateSprite(&gUnknown_02024E8C, 120, 70, 6); gSprites[spriteID].invisible = 1; gSprites[spriteID].callback = SpriteCallbackDummy; diff --git a/src/evolution_graphics.c b/src/scene/evolution_graphics.c index 1fd5bf8fa..1fd5bf8fa 100644 --- a/src/evolution_graphics.c +++ b/src/scene/evolution_graphics.c diff --git a/src/evolution_scene.c b/src/scene/evolution_scene.c index 57d3152f3..24168dc56 100644 --- a/src/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -236,7 +236,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, gMonFrontPicCoords[currSpecies].y_offset, (void*)(0x2000000), gUnknown_081FAF4C[1], currSpecies); - pokePal = (void*) sub_80409C8(currSpecies, TiD, PiD); + pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(currSpecies, TiD, PiD); LoadCompressedPalette(*pokePal, 0x110, 0x20); GetMonSpriteTemplate_803C56C(currSpecies, 1); @@ -253,7 +253,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, gMonFrontPicCoords[speciesToEvolve].y_offset, (void*)(0x2000000), gUnknown_081FAF4C[3], speciesToEvolve); - pokePal = (void*) sub_80409C8(speciesToEvolve, TiD, PiD); + pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, TiD, PiD); LoadCompressedPalette(*pokePal, 0x120, 0x20); GetMonSpriteTemplate_803C56C(speciesToEvolve, 3); @@ -333,7 +333,7 @@ static void CB2_EvolutionSceneLoadGraphics(void) gMonFrontPicCoords[postEvoSpecies].y_offset, (void*)(0x2000000), gUnknown_081FAF4C[3], postEvoSpecies); - pokePal = (void*) sub_80409C8(postEvoSpecies, TiD, PiD); + pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, TiD, PiD); LoadCompressedPalette(*pokePal, 0x120, 0x20); GetMonSpriteTemplate_803C56C(postEvoSpecies, 3); @@ -403,7 +403,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) gMonFrontPicCoords[postEvoSpecies].y_offset, (void*)(0x2000000), gUnknown_081FAF4C[3], postEvoSpecies); - pokePal = (void*) sub_80409C8(postEvoSpecies, TiD, PiD); + pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, TiD, PiD); LoadCompressedPalette(*pokePal, 0x120, 0x20); gMain.state++; } @@ -453,7 +453,7 @@ void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpri gMonFrontPicCoords[speciesToEvolve].y_offset, (void*)(0x2000000), gUnknown_081FAF4C[1], speciesToEvolve); - pokePal = (void*) sub_80409C8(speciesToEvolve, TiD, PiD); + pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, TiD, PiD); LoadCompressedPalette(*pokePal, 0x120, 0x20); GetMonSpriteTemplate_803C56C(speciesToEvolve, 1); @@ -527,8 +527,8 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon) // can't match it otherwise, ehh EvoTable = gEvolutionTable; Evos = EvoTable + preEvoSpecies; - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(Evos->evolutions[1].targetSpecies), 2); - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(Evos->evolutions[1].targetSpecies), 3); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(Evos->evolutions[1].targetSpecies), 2); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(Evos->evolutions[1].targetSpecies), 3); if (GetMonData(Shedinja, MON_DATA_SPECIES) == SPECIES_SHEDINJA && GetMonData(Shedinja, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE @@ -654,8 +654,8 @@ static void Task_EvolutionScene(u8 taskID) SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies)); CalculateMonStats(mon); EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies); - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2); - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3); IncrementGameStat(14); } break; @@ -667,7 +667,7 @@ static void Task_EvolutionScene(u8 taskID) { u8 text[20]; - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); gTasks[taskID].tBits |= TASK_BIT_LEARN_MOVE; gTasks[taskID].tLearnsFirstMove = FALSE; gTasks[taskID].tLearnMoveState = 0; @@ -691,7 +691,7 @@ static void Task_EvolutionScene(u8 taskID) if (!gPaletteFade.active) { if (!(gTasks[taskID].tBits & TASK_BIT_LEARN_MOVE)) - sub_8053E90(); + Overworld_PlaySpecialMapMusic(); if (!gTasks[taskID].tEvoWasStopped) CreateShedinja(gTasks[taskID].tPreEvoSpecies, mon); DestroyTask(taskID); @@ -996,8 +996,8 @@ static void Task_TradeEvolutionScene(u8 taskID) SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies)); CalculateMonStats(mon); EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies); - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2); - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3); IncrementGameStat(14); } break; diff --git a/src/hall_of_fame.c b/src/scene/hall_of_fame.c index 10c999ef3..6f7df576b 100644 --- a/src/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -1347,7 +1347,7 @@ static u32 HallOfFame_LoadPokemonPic(u16 species, s16 posX, s16 posY, u16 pokeID LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[pokeID], species, pid, 1); - pokePal = species_and_otid_get_pal(species, tid, pid); + pokePal = GetMonSpritePalFromOtIdPersonality(species, tid, pid); LoadCompressedPalette(pokePal, 16 * pokeID + 256, 0x20); sub_8143648(pokeID, pokeID); diff --git a/src/intro.c b/src/scene/intro.c index a43e0356c..dd7cc858c 100644 --- a/src/intro.c +++ b/src/scene/intro.c @@ -1785,7 +1785,7 @@ static u16 sub_813CE88(u16 species, s16 x, s16 y, u16 d, u8 front) LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[d], species, 0, 1); else LoadSpecialPokePic(&gMonBackPicTable[species], gMonBackPicCoords[species].coords, gMonBackPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[d], species, 0, 0); - lzPaletteData = species_and_otid_get_pal(species, 0, 0xFFFF); + lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, 0, 0xFFFF); LoadCompressedPalette(lzPaletteData, 0x100 + d * 0x10, 0x20); sub_8143648(d, d); spriteId = CreateSprite(&gUnknown_02024E8C, x, y, (d + 1) * 4); diff --git a/src/intro_credits_graphics.c b/src/scene/intro_credits_graphics.c index cd0589af8..cd0589af8 100755 --- a/src/intro_credits_graphics.c +++ b/src/scene/intro_credits_graphics.c diff --git a/src/new_game.c b/src/scene/new_game.c index 3f9e9f5a1..6ab21c544 100644 --- a/src/new_game.c +++ b/src/scene/new_game.c @@ -99,7 +99,7 @@ void sub_8052DE4(void) void WarpToTruck(void) { - warp1_set(25, 40, -1, -1, -1); // inside of truck + Overworld_SetWarpDestination(25, 40, -1, -1, -1); // inside of truck warp_in(); } diff --git a/src/title_screen.c b/src/scene/title_screen.c index 2503b0654..2503b0654 100644 --- a/src/title_screen.c +++ b/src/scene/title_screen.c diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index 323df991a..f98293a90 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -433,7 +433,7 @@ void ShowContestEntryMonPic(void) gUnknown_081FAF4C[1], species, var1); - palette = sub_80409C8(species, var2, var1); + palette = GetMonSpritePalStructFromOtIdPersonality(species, var2, var1); LoadCompressedObjectPalette(palette); GetMonSpriteTemplate_803C56C(species, 1); gUnknown_02024E8C.paletteTag = palette->tag; @@ -560,8 +560,8 @@ u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 u { case 0: case 1: - GetNationalPokedexFlag(nationalDexNum, 2); - GetNationalPokedexFlag(nationalDexNum, 3); + GetSetPokedexFlag(nationalDexNum, 2); + GetSetPokedexFlag(nationalDexNum, 3); break; } return sentToPc; diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c deleted file mode 100644 index d97ae6d86..000000000 --- a/src/sound_check_menu.c +++ /dev/null @@ -1,2199 +0,0 @@ -#include "global.h" -#include "sprite.h" -#include "palette.h" -#include "task.h" -#include "m4a.h" -#include "main.h" -#include "text.h" -#include "menu.h" -#include "songs.h" -#include "title_screen.h" -#include "sound.h" -#include "pokedex_cry_screen.h" - -// local task defines -#define WINDOW_SELECTED data[0] -#define BGM_INDEX data[1] -#define SE_INDEX data[2] -#define UNK_DATA3 data[3] -#define UNK_DATA4 data[4] -// data 5-7 are not used -// i dont have a define for data 8 yet because its used in a nonmatching and I can't be sure yet its actually used. - -// window selections -enum -{ - BGM_WINDOW, - SE_WINDOW -}; - -// driver test cry enums -enum -{ - CRY_TEST_UNK0, - CRY_TEST_VOLUME, - CRY_TEST_PANPOT, - CRY_TEST_PITCH, - CRY_TEST_LENGTH, - CRY_TEST_RELEASE, - CRY_TEST_PROGRESS, - CRY_TEST_CHORUS, - CRY_TEST_PRIORITY -}; - -// minmax range enums -enum -{ - MIN, - MAX -}; - -extern struct ToneData voicegroup_84537C0[]; -extern struct ToneData voicegroup_8452590[]; -extern struct ToneData voicegroup_8453DC0[]; -extern struct ToneData voicegroup_8452B90[]; -extern struct ToneData voicegroup_84543C0[]; -extern struct ToneData voicegroup_8453190[]; -extern struct ToneData voicegroup_84549C0[]; -extern struct ToneData voicegroup_8453790[]; - -static EWRAM_DATA u8 gUnknown_020387B0 = 0; -static EWRAM_DATA u8 gUnknown_020387B1 = 0; -static EWRAM_DATA u8 gUnknown_020387B2 = 0; -static EWRAM_DATA s8 gUnknown_020387B3 = 0; -static EWRAM_DATA int gUnknown_020387B4[9] = {0}; -static EWRAM_DATA u8 gUnknown_020387D8 = 0; -static EWRAM_DATA u8 gUnknown_020387D9 = 0; - -extern u16 gUnknown_03005D34; -extern u8 gUnknown_03005E98; - -struct MusicPlayerInfo *gUnknown_03005D30; - -extern struct MusicPlayerInfo gMPlay_BGM; - -void sub_80BA258(u8); -void sub_80BA384(u8); -void sub_80BA65C(u8); -void sub_80BA68C(u8); -void sub_80BA6B8(u8); -void sub_80BA700(u16, u16, u16); -void sub_80BA79C(const u8 *const, u16, u16); -void sub_80BA800(u8); -void sub_80BAA48(u8); -void sub_80BACDC(s8); -void sub_80BAD5C(void); -void sub_80BAE10(u8, u8); -void sub_80BAE78(int, u16, u16, u8); -void sub_80BAF84(u8); -void sub_80BB038(u8); -void sub_80BB1D4(void); -void sub_80BB25C(u8); -void sub_80BB3B4(u8); -void sub_80BB494(void); - -static const u8 gDebugText_SoundCheckJap[] = _("サウンドチェック"); -static const u8 gDebugText_BGM[] = _("BGM"); -static const u8 gDebugText_SE[] = _("SE "); -static const u8 gDebugText_ABDesc[] = _("A‥さいせい B‥おわり"); -static const u8 gDebugText_UpDown[] = _("L‥UP R‥DOWN"); -static const u8 gDebugText_DriverTest[] = _("R‥DRIVER-TEST"); - -// ideally this should be a multi Coords8 struct, but it wont match when its treated like a struct. -static const u8 gUnknown_083D0300[] = { 1, 1, 1, 3, 1, 5, 1, 7, 1, 9, 1, 11, 1, 13, 1, 15, 1, 17 }; - -static const u8 gDebugText_BBack[] = _("Bぼたんで もどる"); -static const u8 gDebugText_APlay[] = _("Aぼたんで さいせい"); -static const u8 gDebugText_Voice[] = _("VOICE‥‥‥‥"); -static const u8 gDebugText_Volume[] = _("VOLUME‥‥‥"); -static const u8 gDebugText_Panpot[] = _("PANPOT‥‥‥"); -static const u8 gDebugText_Pitch[] = _("PITCH‥‥‥‥"); -static const u8 gDebugText_Length[] = _("LENGTH‥‥‥"); -static const u8 gDebugText_Release[] = _("RELEASE‥‥"); -static const u8 gDebugText_Progress[] = _("PROGRESS‥"); -static const u8 gDebugText_Chorus[] = _("CHORUS‥‥‥"); -static const u8 gDebugText_Priority[] = _("PRIORITY‥"); -static const u8 gDebugText_Playing[] = _("さいせいちゆう‥"); // 再生中 (playing) -static const u8 gDebugText_Reverse[] = _("はんてん‥‥‥‥"); // 反転 (reverse) -static const u8 gDebugText_Stereo[] = _("すてれお‥‥‥‥"); // stereo - -// also ideally should be a MinMax struct, but any attempt to make this into a struct causes it to not match due to the weird multi dim access. -static const int gUnknown_083D039C[16] = -{ - 0, 387, - 0, 127, - -127, 127, - -128, 32639, - 0, 65535, - 0, 255, - 0, 65535, - -64, 63 -}; - -static const u8 gUnknown_083D03DC[] = _("▶"); -static const u8 gUnknown_083D03DE[] = _(" "); - -// why not just use Powers of ten from string_util? -static const int gUnknown_083D03E0[6] = -{ - 1, - 10, - 100, - 1000, - 10000, - 100000 -}; - -static const s8 gUnknown_083D03F8[5] = { 0x3F, 0x00, 0xC0, 0x7F, 0x80 }; - -static const u8 gOtherText_SE[] = _("SE"); -static const u8 gOtherText_Pan[] = _("PAN"); -static const u8 gOtherText_LR[] = _(" LR"); -static const u8 gOtherText_RL[] = _(" RL"); - -// bgm names -static const u8 BGMName_STOP[] = _("STOP"); -static const u8 BGMName_TETSUJI[] = _("TETSUJI"); -static const u8 BGMName_FIELD13[] = _("FIELD13"); -static const u8 BGMName_KACHI22[] = _("KACHI22"); -static const u8 BGMName_KACHI2[] = _("KACHI2"); -static const u8 BGMName_KACHI3[] = _("KACHI3"); -static const u8 BGMName_KACHI5[] = _("KACHI5"); -static const u8 BGMName_PCC[] = _("PCC"); -static const u8 BGMName_NIBI[] = _("NIBI"); -static const u8 BGMName_SUIKUN[] = _("SUIKUN"); -static const u8 BGMName_DOORO1[] = _("DOORO1"); -static const u8 BGMName_DOORO_X1[] = _("DOORO-X1"); -static const u8 BGMName_DOORO_X3[] = _("DOORO-X3"); -static const u8 BGMName_MACHI_S2[] = _("MACHI-S2"); -static const u8 BGMName_MACHI_S4[] = _("MACHI-S4"); -static const u8 BGMName_GIM[] = _("GIM"); -static const u8 BGMName_NAMINORI[] = _("NAMINORI"); -static const u8 BGMName_DAN01[] = _("DAN01"); -static const u8 BGMName_FANFA1[] = _("FANFA1"); -static const u8 BGMName_ME_ASA[] = _("ME-ASA"); -static const u8 BGMName_ME_BACHI[] = _("ME-BACHI"); -static const u8 BGMName_FANFA4[] = _("FANFA4"); -static const u8 BGMName_FANFA5[] = _("FANFA5"); -static const u8 BGMName_ME_WAZA[] = _("ME-WAZA"); -static const u8 BGMName_BIJYUTU[] = _("BIJYUTU"); -static const u8 BGMName_DOORO_X4[] = _("DOORO-X4"); -static const u8 BGMName_FUNE_KAN[] = _("FUNE-KAN"); -static const u8 BGMName_ME_SHINKA[] = _("ME-SHINKA"); -static const u8 BGMName_SHINKA[] = _("SHINKA"); -static const u8 BGMName_ME_WASURE[] = _("ME-WASURE"); -static const u8 BGMName_SYOUJOEYE[] = _("SYOUJOEYE"); -static const u8 BGMName_BOYEYE[] = _("BOYEYE"); -static const u8 BGMName_DAN02[] = _("DAN02"); -static const u8 BGMName_MACHI_S3[] = _("MACHI-S3"); -static const u8 BGMName_ODAMAKI[] = _("ODAMAKI"); -static const u8 BGMName_B_TOWER[] = _("B-TOWER"); -static const u8 BGMName_SWIMEYE[] = _("SWIMEYE"); -static const u8 BGMName_DAN03[] = _("DAN03"); -static const u8 BGMName_ME_KINOMI[] = _("ME-KINOMI"); -static const u8 BGMName_ME_TAMA[] = _("ME-TAMA"); -static const u8 BGMName_ME_B_BIG[] = _("ME-B-BIG"); -static const u8 BGMName_ME_B_SMALL[] = _("ME-B-SMALL"); -static const u8 BGMName_ME_ZANNEN[] = _("ME-ZANNEN"); -static const u8 BGMName_BD_TIME[] = _("BD-TIME"); -static const u8 BGMName_TEST1[] = _("TEST1"); -static const u8 BGMName_TEST2[] = _("TEST2"); -static const u8 BGMName_TEST3[] = _("TEST3"); -static const u8 BGMName_TEST4[] = _("TEST4"); -static const u8 BGMName_TEST[] = _("TEST"); -static const u8 BGMName_GOMACHI0[] = _("GOMACHI0"); -static const u8 BGMName_GOTOWN[] = _("GOTOWN"); -static const u8 BGMName_POKECEN[] = _("POKECEN"); -static const u8 BGMName_NEXTROAD[] = _("NEXTROAD"); -static const u8 BGMName_GRANROAD[] = _("GRANROAD"); -static const u8 BGMName_CYCLING[] = _("CYCLING"); -static const u8 BGMName_FRIENDLY[] = _("FRIENDLY"); -static const u8 BGMName_MISHIRO[] = _("MISHIRO"); -static const u8 BGMName_TOZAN[] = _("TOZAN"); -static const u8 BGMName_GIRLEYE[] = _("GIRLEYE"); -static const u8 BGMName_MINAMO[] = _("MINAMO"); -static const u8 BGMName_ASHROAD[] = _("ASHROAD"); -static const u8 BGMName_EVENT0[] = _("EVENT0"); -static const u8 BGMName_DEEPDEEP[] = _("DEEPDEEP"); -static const u8 BGMName_KACHI1[] = _("KACHI1"); -static const u8 BGMName_TITLE3[] = _("TITLE3"); -static const u8 BGMName_DEMO1[] = _("DEMO1"); -static const u8 BGMName_GIRL_SUP[] = _("GIRL-SUP"); -static const u8 BGMName_HAGESHII[] = _("HAGESHII"); -static const u8 BGMName_KAKKOII[] = _("KAKKOII"); -static const u8 BGMName_KAZANBAI[] = _("KAZANBAI"); -static const u8 BGMName_AQA_0[] = _("AQA-0"); -static const u8 BGMName_TSURETEK[] = _("TSURETEK"); -static const u8 BGMName_BOY_SUP[] = _("BOY-SUP"); -static const u8 BGMName_RAINBOW[] = _("RAINBOW"); -static const u8 BGMName_AYASII[] = _("AYASII"); -static const u8 BGMName_KACHI4[] = _("KACHI4"); -static const u8 BGMName_ROPEWAY[] = _("ROPEWAY"); -static const u8 BGMName_CASINO[] = _("CASINO"); -static const u8 BGMName_HIGHTOWN[] = _("HIGHTOWN"); -static const u8 BGMName_SAFARI[] = _("SAFARI"); -static const u8 BGMName_C_ROAD[] = _("C-ROAD"); -static const u8 BGMName_AJITO[] = _("AJITO"); -static const u8 BGMName_M_BOAT[] = _("M-BOAT"); -static const u8 BGMName_M_DUNGON[] = _("M-DUNGON"); -static const u8 BGMName_FINECITY[] = _("FINECITY"); -static const u8 BGMName_MACHUPI[] = _("MACHUPI"); -static const u8 BGMName_P_SCHOOL[] = _("P-SCHOOL"); -static const u8 BGMName_DENDOU[] = _("DENDOU"); -static const u8 BGMName_TONEKUSA[] = _("TONEKUSA"); -static const u8 BGMName_MABOROSI[] = _("MABOROSI"); -static const u8 BGMName_CON_FAN[] = _("CON-FAN"); -static const u8 BGMName_CONTEST0[] = _("CONTEST0"); -static const u8 BGMName_MGM0[] = _("MGM0"); -static const u8 BGMName_T_BATTLE[] = _("T-BATTLE"); -static const u8 BGMName_OOAME[] = _("OOAME"); -static const u8 BGMName_HIDERI[] = _("HIDERI"); -static const u8 BGMName_RUNECITY[] = _("RUNECITY"); -static const u8 BGMName_CON_K[] = _("CON-K"); -static const u8 BGMName_EIKOU_R[] = _("EIKOU-R"); -static const u8 BGMName_KARAKURI[] = _("KARAKURI"); -static const u8 BGMName_HUTAGO[] = _("HUTAGO"); -static const u8 BGMName_SITENNOU[] = _("SITENNOU"); -static const u8 BGMName_YAMA_EYE[] = _("YAMA-EYE"); -static const u8 BGMName_CONLOBBY[] = _("CONLOBBY"); -static const u8 BGMName_INTER_V[] = _("INTER-V"); -static const u8 BGMName_DAIGO[] = _("DAIGO"); -static const u8 BGMName_THANKFOR[] = _("THANKFOR"); -static const u8 BGMName_END[] = _("END"); -static const u8 BGMName_BATTLE27[] = _("BATTLE27"); -static const u8 BGMName_BATTLE31[] = _("BATTLE31"); -static const u8 BGMName_BATTLE20[] = _("BATTLE20"); -static const u8 BGMName_BATTLE32[] = _("BATTLE32"); -static const u8 BGMName_BATTLE33[] = _("BATTLE33"); -static const u8 BGMName_BATTLE36[] = _("BATTLE36"); -static const u8 BGMName_BATTLE34[] = _("BATTLE34"); -static const u8 BGMName_BATTLE35[] = _("BATTLE35"); -static const u8 BGMName_BATTLE38[] = _("BATTLE38"); -static const u8 BGMName_BATTLE30[] = _("BATTLE30"); - -static const u8 *const gBGMNames[] = -{ - BGMName_STOP, - BGMName_TETSUJI, - BGMName_FIELD13, - BGMName_KACHI22, - BGMName_KACHI2, - BGMName_KACHI3, - BGMName_KACHI5, - BGMName_PCC, - BGMName_NIBI, - BGMName_SUIKUN, - BGMName_DOORO1, - BGMName_DOORO_X1, - BGMName_DOORO_X3, - BGMName_MACHI_S2, - BGMName_MACHI_S4, - BGMName_GIM, - BGMName_NAMINORI, - BGMName_DAN01, - BGMName_FANFA1, - BGMName_ME_ASA, - BGMName_ME_BACHI, - BGMName_FANFA4, - BGMName_FANFA5, - BGMName_ME_WAZA, - BGMName_BIJYUTU, - BGMName_DOORO_X4, - BGMName_FUNE_KAN, - BGMName_ME_SHINKA, - BGMName_SHINKA, - BGMName_ME_WASURE, - BGMName_SYOUJOEYE, - BGMName_BOYEYE, - BGMName_DAN02, - BGMName_MACHI_S3, - BGMName_ODAMAKI, - BGMName_B_TOWER, - BGMName_SWIMEYE, - BGMName_DAN03, - BGMName_ME_KINOMI, - BGMName_ME_TAMA, - BGMName_ME_B_BIG, - BGMName_ME_B_SMALL, - BGMName_ME_ZANNEN, - BGMName_BD_TIME, - BGMName_TEST1, - BGMName_TEST2, - BGMName_TEST3, - BGMName_TEST4, - BGMName_TEST, - BGMName_GOMACHI0, - BGMName_GOTOWN, - BGMName_POKECEN, - BGMName_NEXTROAD, - BGMName_GRANROAD, - BGMName_CYCLING, - BGMName_FRIENDLY, - BGMName_MISHIRO, - BGMName_TOZAN, - BGMName_GIRLEYE, - BGMName_MINAMO, - BGMName_ASHROAD, - BGMName_EVENT0, - BGMName_DEEPDEEP, - BGMName_KACHI1, - BGMName_TITLE3, - BGMName_DEMO1, - BGMName_GIRL_SUP, - BGMName_HAGESHII, - BGMName_KAKKOII, - BGMName_KAZANBAI, - BGMName_AQA_0, - BGMName_TSURETEK, - BGMName_BOY_SUP, - BGMName_RAINBOW, - BGMName_AYASII, - BGMName_KACHI4, - BGMName_ROPEWAY, - BGMName_CASINO, - BGMName_HIGHTOWN, - BGMName_SAFARI, - BGMName_C_ROAD, - BGMName_AJITO, - BGMName_M_BOAT, - BGMName_M_DUNGON, - BGMName_FINECITY, - BGMName_MACHUPI, - BGMName_P_SCHOOL, - BGMName_DENDOU, - BGMName_TONEKUSA, - BGMName_MABOROSI, - BGMName_CON_FAN, - BGMName_CONTEST0, - BGMName_MGM0, - BGMName_T_BATTLE, - BGMName_OOAME, - BGMName_HIDERI, - BGMName_RUNECITY, - BGMName_CON_K, - BGMName_EIKOU_R, - BGMName_KARAKURI, - BGMName_HUTAGO, - BGMName_SITENNOU, - BGMName_YAMA_EYE, - BGMName_CONLOBBY, - BGMName_INTER_V, - BGMName_DAIGO, - BGMName_THANKFOR, - BGMName_END, - BGMName_BATTLE27, - BGMName_BATTLE31, - BGMName_BATTLE20, - BGMName_BATTLE32, - BGMName_BATTLE33, - BGMName_BATTLE36, - BGMName_BATTLE34, - BGMName_BATTLE35, - BGMName_BATTLE38, - BGMName_BATTLE30 -}; - -// SE names -static const u8 SEName_STOP[] = _("STOP"); -static const u8 SEName_KAIFUKU[] = _("KAIFUKU"); -static const u8 SEName_PC_LOGON[] = _("PC-LOGON"); -static const u8 SEName_PC_OFF[] = _("PC-OFF"); -static const u8 SEName_PC_ON[] = _("PC-ON"); -static const u8 SEName_SELECT[] = _("SELECT"); -static const u8 SEName_WIN_OPEN[] = _("WIN-OPEN"); -static const u8 SEName_WALL_HIT[] = _("WALL-HIT"); -static const u8 SEName_DOOR[] = _("DOOR"); -static const u8 SEName_KAIDAN[] = _("KAIDAN"); -static const u8 SEName_DANSA[] = _("DANSA"); -static const u8 SEName_JITENSYA[] = _("JITENSYA"); -static const u8 SEName_KOUKA_L[] = _("KOUKA-L"); -static const u8 SEName_KOUKA_M[] = _("KOUKA-M"); -static const u8 SEName_KOUKA_H[] = _("KOUKA-H"); -static const u8 SEName_BOWA2[] = _("BOWA2"); -static const u8 SEName_POKE_DEAD[] = _("POKE-DEAD"); -static const u8 SEName_NIGERU[] = _("NIGERU"); -static const u8 SEName_JIDO_DOA[] = _("JIDO-DOA"); -static const u8 SEName_NAMINORI[] = _("NAMINORI"); -static const u8 SEName_BAN[] = _("BAN"); -static const u8 SEName_PIN[] = _("PIN"); -static const u8 SEName_BOO[] = _("BOO"); -static const u8 SEName_BOWA[] = _("BOWA"); -static const u8 SEName_JYUNI[] = _("JYUNI"); -static const u8 SEName_A[] = _("A"); -static const u8 SEName_I[] = _("I"); -static const u8 SEName_U[] = _("U"); -static const u8 SEName_E[] = _("E"); -static const u8 SEName_O[] = _("O"); -static const u8 SEName_N[] = _("N"); -static const u8 SEName_SEIKAI[] = _("SEIKAI"); -static const u8 SEName_HAZURE[] = _("HAZURE"); -static const u8 SEName_EXP[] = _("EXP"); -static const u8 SEName_JITE_PYOKO[] = _("JITE-PYOKO"); -static const u8 SEName_MU_PACHI[] = _("MU-PACHI"); -static const u8 SEName_TK_KASYA[] = _("TK-KASYA"); -static const u8 SEName_FU_ZAKU[] = _("FU-ZAKU"); -static const u8 SEName_FU_ZAKU2[] = _("FU-ZAKU2"); -static const u8 SEName_FU_ZUZUZU[] = _("FU-ZUZUZU"); -static const u8 SEName_RU_GASHIN[] = _("RU-GASHIN"); -static const u8 SEName_RU_GASYAN[] = _("RU-GASYAN"); -static const u8 SEName_RU_BARI[] = _("RU-BARI"); -static const u8 SEName_RU_HYUU[] = _("RU-HYUU"); -static const u8 SEName_KI_GASYAN[] = _("KI-GASYAN"); -static const u8 SEName_TK_WARPIN[] = _("TK-WARPIN"); -static const u8 SEName_TK_WARPOUT[] = _("TK-WARPOUT"); -static const u8 SEName_TU_SAA[] = _("TU-SAA"); -static const u8 SEName_HI_TURUN[] = _("HI-TURUN"); -static const u8 SEName_TRACK_MOVE[] = _("TRACK-MOVE"); -static const u8 SEName_TRACK_STOP[] = _("TRACK-STOP"); -static const u8 SEName_TRACK_HAIK[] = _("TRACK-HAIK"); -static const u8 SEName_TRACK_DOOR[] = _("TRACK-DOOR"); -static const u8 SEName_MOTER[] = _("MOTER"); -static const u8 SEName_CARD[] = _("CARD"); -static const u8 SEName_SAVE[] = _("SAVE"); -static const u8 SEName_KON[] = _("KON"); -static const u8 SEName_KON2[] = _("KON2"); -static const u8 SEName_KON3[] = _("KON3"); -static const u8 SEName_KON4[] = _("KON4"); -static const u8 SEName_SUIKOMU[] = _("SUIKOMU"); -static const u8 SEName_NAGERU[] = _("NAGERU"); -static const u8 SEName_TOY_C[] = _("TOY-C"); -static const u8 SEName_TOY_D[] = _("TOY-D"); -static const u8 SEName_TOY_E[] = _("TOY-E"); -static const u8 SEName_TOY_F[] = _("TOY-F"); -static const u8 SEName_TOY_G[] = _("TOY-G"); -static const u8 SEName_TOY_A[] = _("TOY-A"); -static const u8 SEName_TOY_B[] = _("TOY-B"); -static const u8 SEName_TOY_C1[] = _("TOY-C1"); -static const u8 SEName_MIZU[] = _("MIZU"); -static const u8 SEName_HASHI[] = _("HASHI"); -static const u8 SEName_DAUGI[] = _("DAUGI"); -static const u8 SEName_PINPON[] = _("PINPON"); -static const u8 SEName_FUUSEN1[] = _("FUUSEN1"); -static const u8 SEName_FUUSEN2[] = _("FUUSEN2"); -static const u8 SEName_FUUSEN3[] = _("FUUSEN3"); -static const u8 SEName_TOY_KABE[] = _("TOY-KABE"); -static const u8 SEName_TOY_DANGO[] = _("TOY-DANGO"); -static const u8 SEName_DOKU[] = _("DOKU"); -static const u8 SEName_ESUKA[] = _("ESUKA"); -static const u8 SEName_T_AME[] = _("T-AME"); -static const u8 SEName_T_AME_E[] = _("T-AME-E"); -static const u8 SEName_T_OOAME[] = _("T-OOAME"); -static const u8 SEName_T_OOAME_E[] = _("T-OOAME-E"); -static const u8 SEName_T_KOAME[] = _("T-KOAME"); -static const u8 SEName_T_KOAME_E[] = _("T-KOAME-E"); -static const u8 SEName_T_KAMI[] = _("T-KAMI"); -static const u8 SEName_T_KAMI2[] = _("T-KAMI2"); -static const u8 SEName_ELEBETA[] = _("ELEBETA"); -static const u8 SEName_HINSI[] = _("HINSI"); -static const u8 SEName_EXPMAX[] = _("EXPMAX"); -static const u8 SEName_TAMAKORO[] = _("TAMAKORO"); -static const u8 SEName_TAMAKORO_E[] = _("TAMAKORO-E"); -static const u8 SEName_BASABASA[] = _("BASABASA"); -static const u8 SEName_REGI[] = _("REGI"); -static const u8 SEName_C_GAJI[] = _("C-GAJI"); -static const u8 SEName_C_MAKU_U[] = _("C-MAKU-U"); -static const u8 SEName_C_MAKU_D[] = _("C-MAKU-D"); -static const u8 SEName_C_PASI[] = _("C-PASI"); -static const u8 SEName_C_SYU[] = _("C-SYU"); -static const u8 SEName_C_PIKON[] = _("C-PIKON"); -static const u8 SEName_REAPOKE[] = _("REAPOKE"); -static const u8 SEName_OP_BASYU[] = _("OP-BASYU"); -static const u8 SEName_BT_START[] = _("BT-START"); -static const u8 SEName_DENDOU[] = _("DENDOU"); -static const u8 SEName_JIHANKI[] = _("JIHANKI"); -static const u8 SEName_TAMA[] = _("TAMA"); -static const u8 SEName_Z_SCROLL[] = _("Z-SCROLL"); -static const u8 SEName_Z_PAGE[] = _("Z-PAGE"); -static const u8 SEName_PN_ON[] = _("PN-ON"); -static const u8 SEName_PN_OFF[] = _("PN-OFF"); -static const u8 SEName_Z_SEARCH[] = _("Z-SEARCH"); -static const u8 SEName_TAMAGO[] = _("TAMAGO"); -static const u8 SEName_TB_START[] = _("TB-START"); -static const u8 SEName_TB_KON[] = _("TB-KON"); -static const u8 SEName_TB_KARA[] = _("TB-KARA"); -static const u8 SEName_BIDORO[] = _("BIDORO"); -static const u8 SEName_W085[] = _("W085"); -static const u8 SEName_W085B[] = _("W085B"); -static const u8 SEName_W231[] = _("W231"); -static const u8 SEName_W171[] = _("W171"); -static const u8 SEName_W233[] = _("W233"); -static const u8 SEName_W233B[] = _("W233B"); -static const u8 SEName_W145[] = _("W145"); -static const u8 SEName_W145B[] = _("W145B"); -static const u8 SEName_W145C[] = _("W145C"); -static const u8 SEName_W240[] = _("W240"); -static const u8 SEName_W015[] = _("W015"); -static const u8 SEName_W081[] = _("W081"); -static const u8 SEName_W081B[] = _("W081B"); -static const u8 SEName_W088[] = _("W088"); -static const u8 SEName_W016[] = _("W016"); -static const u8 SEName_W016B[] = _("W016B"); -static const u8 SEName_W003[] = _("W003"); -static const u8 SEName_W104[] = _("W104"); -static const u8 SEName_W013[] = _("W013"); -static const u8 SEName_W196[] = _("W196"); -static const u8 SEName_W086[] = _("W086"); -static const u8 SEName_W004[] = _("W004"); -static const u8 SEName_W025[] = _("W025"); -static const u8 SEName_W025B[] = _("W025B"); -static const u8 SEName_W152[] = _("W152"); -static const u8 SEName_W026[] = _("W026"); -static const u8 SEName_W172[] = _("W172"); -static const u8 SEName_W172B[] = _("W172B"); -static const u8 SEName_W053[] = _("W053"); -static const u8 SEName_W007[] = _("W007"); -static const u8 SEName_W092[] = _("W092"); -static const u8 SEName_W221[] = _("W221"); -static const u8 SEName_W221B[] = _("W221B"); -static const u8 SEName_W052[] = _("W052"); -static const u8 SEName_W036[] = _("W036"); -static const u8 SEName_W059[] = _("W059"); -static const u8 SEName_W059B[] = _("W059B"); -static const u8 SEName_W010[] = _("W010"); -static const u8 SEName_W011[] = _("W011"); -static const u8 SEName_W017[] = _("W017"); -static const u8 SEName_W019[] = _("W019"); -static const u8 SEName_W028[] = _("W028"); -static const u8 SEName_W013B[] = _("W013B"); -static const u8 SEName_W044[] = _("W044"); -static const u8 SEName_W029[] = _("W029"); -static const u8 SEName_W057[] = _("W057"); -static const u8 SEName_W056[] = _("W056"); -static const u8 SEName_W250[] = _("W250"); -static const u8 SEName_W030[] = _("W030"); -static const u8 SEName_W039[] = _("W039"); -static const u8 SEName_W054[] = _("W054"); -static const u8 SEName_W077[] = _("W077"); -static const u8 SEName_W020[] = _("W020"); -static const u8 SEName_W082[] = _("W082"); -static const u8 SEName_W047[] = _("W047"); -static const u8 SEName_W195[] = _("W195"); -static const u8 SEName_W006[] = _("W006"); -static const u8 SEName_W091[] = _("W091"); -static const u8 SEName_W146[] = _("W146"); -static const u8 SEName_W120[] = _("W120"); -static const u8 SEName_W153[] = _("W153"); -static const u8 SEName_W071B[] = _("W071B"); -static const u8 SEName_W071[] = _("W071"); -static const u8 SEName_W103[] = _("W103"); -static const u8 SEName_W062[] = _("W062"); -static const u8 SEName_W062B[] = _("W062B"); -static const u8 SEName_W048[] = _("W048"); -static const u8 SEName_W187[] = _("W187"); -static const u8 SEName_W118[] = _("W118"); -static const u8 SEName_W155[] = _("W155"); -static const u8 SEName_W122[] = _("W122"); -static const u8 SEName_W060[] = _("W060"); -static const u8 SEName_W185[] = _("W185"); -static const u8 SEName_W014[] = _("W014"); -static const u8 SEName_W043[] = _("W043"); -static const u8 SEName_W207[] = _("W207"); -static const u8 SEName_W207B[] = _("W207B"); -static const u8 SEName_W215[] = _("W215"); -static const u8 SEName_W109[] = _("W109"); -static const u8 SEName_W173[] = _("W173"); -static const u8 SEName_W280[] = _("W280"); -static const u8 SEName_W202[] = _("W202"); -static const u8 SEName_W060B[] = _("W060B"); -static const u8 SEName_W076[] = _("W076"); -static const u8 SEName_W080[] = _("W080"); -static const u8 SEName_W100[] = _("W100"); -static const u8 SEName_W107[] = _("W107"); -static const u8 SEName_W166[] = _("W166"); -static const u8 SEName_W129[] = _("W129"); -static const u8 SEName_W115[] = _("W115"); -static const u8 SEName_W112[] = _("W112"); -static const u8 SEName_W197[] = _("W197"); -static const u8 SEName_W199[] = _("W199"); -static const u8 SEName_W236[] = _("W236"); -static const u8 SEName_W204[] = _("W204"); -static const u8 SEName_W268[] = _("W268"); -static const u8 SEName_W070[] = _("W070"); -static const u8 SEName_W063[] = _("W063"); -static const u8 SEName_W127[] = _("W127"); -static const u8 SEName_W179[] = _("W179"); -static const u8 SEName_W151[] = _("W151"); -static const u8 SEName_W201[] = _("W201"); -static const u8 SEName_W161[] = _("W161"); -static const u8 SEName_W161B[] = _("W161B"); -static const u8 SEName_W227[] = _("W227"); -static const u8 SEName_W227B[] = _("W227B"); -static const u8 SEName_W226[] = _("W226"); -static const u8 SEName_W208[] = _("W208"); -static const u8 SEName_W213[] = _("W213"); -static const u8 SEName_W213B[] = _("W213B"); -static const u8 SEName_W234[] = _("W234"); -static const u8 SEName_W260[] = _("W260"); -static const u8 SEName_W328[] = _("W328"); -static const u8 SEName_W320[] = _("W320"); -static const u8 SEName_W255[] = _("W255"); -static const u8 SEName_W291[] = _("W291"); -static const u8 SEName_W089[] = _("W089"); -static const u8 SEName_W239[] = _("W239"); -static const u8 SEName_W230[] = _("W230"); -static const u8 SEName_W281[] = _("W281"); -static const u8 SEName_W327[] = _("W327"); -static const u8 SEName_W287[] = _("W287"); -static const u8 SEName_W257[] = _("W257"); -static const u8 SEName_W253[] = _("W253"); -static const u8 SEName_W258[] = _("W258"); -static const u8 SEName_W322[] = _("W322"); -static const u8 SEName_W298[] = _("W298"); -static const u8 SEName_W287B[] = _("W287B"); -static const u8 SEName_W114[] = _("W114"); -static const u8 SEName_W063B[] = _("W063B"); - -static const u8 *const gSENames[] = -{ - SEName_STOP, - SEName_KAIFUKU, - SEName_PC_LOGON, - SEName_PC_OFF, - SEName_PC_ON, - SEName_SELECT, - SEName_WIN_OPEN, - SEName_WALL_HIT, - SEName_DOOR, - SEName_KAIDAN, - SEName_DANSA, - SEName_JITENSYA, - SEName_KOUKA_L, - SEName_KOUKA_M, - SEName_KOUKA_H, - SEName_BOWA2, - SEName_POKE_DEAD, - SEName_NIGERU, - SEName_JIDO_DOA, - SEName_NAMINORI, - SEName_BAN, - SEName_PIN, - SEName_BOO, - SEName_BOWA, - SEName_JYUNI, - SEName_A, - SEName_I, - SEName_U, - SEName_E, - SEName_O, - SEName_N, - SEName_SEIKAI, - SEName_HAZURE, - SEName_EXP, - SEName_JITE_PYOKO, - SEName_MU_PACHI, - SEName_TK_KASYA, - SEName_FU_ZAKU, - SEName_FU_ZAKU2, - SEName_FU_ZUZUZU, - SEName_RU_GASHIN, - SEName_RU_GASYAN, - SEName_RU_BARI, - SEName_RU_HYUU, - SEName_KI_GASYAN, - SEName_TK_WARPIN, - SEName_TK_WARPOUT, - SEName_TU_SAA, - SEName_HI_TURUN, - SEName_TRACK_MOVE, - SEName_TRACK_STOP, - SEName_TRACK_HAIK, - SEName_TRACK_DOOR, - SEName_MOTER, - SEName_CARD, - SEName_SAVE, - SEName_KON, - SEName_KON2, - SEName_KON3, - SEName_KON4, - SEName_SUIKOMU, - SEName_NAGERU, - SEName_TOY_C, - SEName_TOY_D, - SEName_TOY_E, - SEName_TOY_F, - SEName_TOY_G, - SEName_TOY_A, - SEName_TOY_B, - SEName_TOY_C1, - SEName_MIZU, - SEName_HASHI, - SEName_DAUGI, - SEName_PINPON, - SEName_FUUSEN1, - SEName_FUUSEN2, - SEName_FUUSEN3, - SEName_TOY_KABE, - SEName_TOY_DANGO, - SEName_DOKU, - SEName_ESUKA, - SEName_T_AME, - SEName_T_AME_E, - SEName_T_OOAME, - SEName_T_OOAME_E, - SEName_T_KOAME, - SEName_T_KOAME_E, - SEName_T_KAMI, - SEName_T_KAMI2, - SEName_ELEBETA, - SEName_HINSI, - SEName_EXPMAX, - SEName_TAMAKORO, - SEName_TAMAKORO_E, - SEName_BASABASA, - SEName_REGI, - SEName_C_GAJI, - SEName_C_MAKU_U, - SEName_C_MAKU_D, - SEName_C_PASI, - SEName_C_SYU, - SEName_C_PIKON, - SEName_REAPOKE, - SEName_OP_BASYU, - SEName_BT_START, - SEName_DENDOU, - SEName_JIHANKI, - SEName_TAMA, - SEName_Z_SCROLL, - SEName_Z_PAGE, - SEName_PN_ON, - SEName_PN_OFF, - SEName_Z_SEARCH, - SEName_TAMAGO, - SEName_TB_START, - SEName_TB_KON, - SEName_TB_KARA, - SEName_BIDORO, - SEName_W085, - SEName_W085B, - SEName_W231, - SEName_W171, - SEName_W233, - SEName_W233B, - SEName_W145, - SEName_W145B, - SEName_W145C, - SEName_W240, - SEName_W015, - SEName_W081, - SEName_W081B, - SEName_W088, - SEName_W016, - SEName_W016B, - SEName_W003, - SEName_W104, - SEName_W013, - SEName_W196, - SEName_W086, - SEName_W004, - SEName_W025, - SEName_W025B, - SEName_W152, - SEName_W026, - SEName_W172, - SEName_W172B, - SEName_W053, - SEName_W007, - SEName_W092, - SEName_W221, - SEName_W221B, - SEName_W052, - SEName_W036, - SEName_W059, - SEName_W059B, - SEName_W010, - SEName_W011, - SEName_W017, - SEName_W019, - SEName_W028, - SEName_W013B, - SEName_W044, - SEName_W029, - SEName_W057, - SEName_W056, - SEName_W250, - SEName_W030, - SEName_W039, - SEName_W054, - SEName_W077, - SEName_W020, - SEName_W082, - SEName_W047, - SEName_W195, - SEName_W006, - SEName_W091, - SEName_W146, - SEName_W120, - SEName_W153, - SEName_W071B, - SEName_W071, - SEName_W103, - SEName_W062, - SEName_W062B, - SEName_W048, - SEName_W187, - SEName_W118, - SEName_W155, - SEName_W122, - SEName_W060, - SEName_W185, - SEName_W014, - SEName_W043, - SEName_W207, - SEName_W207B, - SEName_W215, - SEName_W109, - SEName_W173, - SEName_W280, - SEName_W202, - SEName_W060B, - SEName_W076, - SEName_W080, - SEName_W100, - SEName_W107, - SEName_W166, - SEName_W129, - SEName_W115, - SEName_W112, - SEName_W197, - SEName_W199, - SEName_W236, - SEName_W204, - SEName_W268, - SEName_W070, - SEName_W063, - SEName_W127, - SEName_W179, - SEName_W151, - SEName_W201, - SEName_W161, - SEName_W161B, - SEName_W227, - SEName_W227B, - SEName_W226, - SEName_W208, - SEName_W213, - SEName_W213B, - SEName_W234, - SEName_W260, - SEName_W328, - SEName_W320, - SEName_W255, - SEName_W291, - SEName_W089, - SEName_W239, - SEName_W230, - SEName_W281, - SEName_W327, - SEName_W287, - SEName_W257, - SEName_W253, - SEName_W258, - SEName_W322, - SEName_W298, - SEName_W287B, - SEName_W114, - SEName_W063B -}; - -void sub_80BA0A8(void) -{ - RunTasks(); - AnimateSprites(); - BuildOamBuffer(); - UpdatePaletteFade(); -} - -void sub_80BA0C0(void) -{ - LoadOam(); - ProcessSpriteCopyRequests(); - TransferPlttBuffer(); - - if(gUnknown_020387B0 != 0) - { - m4aSoundMain(); - m4aSoundMain(); - m4aSoundMain(); - } -} - -// unused -void CB2_StartSoundCheckMenu(void) -{ - u8 taskId; - - SetVBlankCallback(NULL); - REG_DISPCNT = 0; - REG_BG2CNT = 0; - REG_BG1CNT = 0; - REG_BG0CNT = 0; - REG_BG2HOFS = 0; - REG_BG2VOFS = 0; - REG_BG1HOFS = 0; - REG_BG1VOFS = 0; - REG_BG0HOFS = 0; - REG_BG0VOFS = 0; - DmaFill16(3, 0, VRAM, VRAM_SIZE); - DmaFill32(3, 0, OAM, OAM_SIZE); - DmaFill16(3, 0, PLTT, PLTT_SIZE); - ResetPaletteFade(); - ResetTasks(); - ResetSpriteData(); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); - REG_WIN0H = WIN_RANGE(0, 0); - REG_WIN0V = WIN_RANGE(0, 0); - REG_WIN1H = WIN_RANGE(0, 0); - REG_WIN1V = WIN_RANGE(0, 0); - REG_WININ = 0x1111; - REG_WINOUT = 0x31; - REG_BLDCNT = 0xE1; - REG_BLDALPHA = 0; - REG_BLDY = 7; - REG_IE = 1; // could be a typo of REG_IME - REG_IE |= 1; - REG_DISPSTAT |= 8; - SetVBlankCallback(sub_80BA0C0); - SetMainCallback2(sub_80BA0A8); - REG_DISPCNT = 0x7140; - taskId = CreateTask(sub_80BA258, 0); - TASK.WINDOW_SELECTED = BGM_WINDOW; - TASK.BGM_INDEX = 0; - TASK.SE_INDEX = 0; - TASK.UNK_DATA3 = 0; - gUnknown_020387B0 = 0; - TASK.UNK_DATA3 = 0; // why? - m4aSoundInit(); -} - -// Task_InitSoundCheckMenu -void sub_80BA258(u8 taskId) -{ - u8 soundcheckStr[sizeof(gDebugText_SoundCheckJap)]; - u8 bgmStr[sizeof(gDebugText_BGM)]; - u8 seStr[sizeof(gDebugText_SE)]; - u8 abDescStr[sizeof(gDebugText_ABDesc)]; - u8 upDownStr[sizeof(gDebugText_UpDown)]; - u8 driverStr[sizeof(gDebugText_DriverTest)]; - - memcpy(soundcheckStr, gDebugText_SoundCheckJap, sizeof(gDebugText_SoundCheckJap)); - memcpy(bgmStr, gDebugText_BGM, sizeof(gDebugText_BGM)); - memcpy(seStr, gDebugText_SE, sizeof(gDebugText_SE)); - memcpy(abDescStr, gDebugText_ABDesc, sizeof(gDebugText_ABDesc)); - memcpy(upDownStr, gDebugText_UpDown, sizeof(gDebugText_UpDown)); - memcpy(driverStr, gDebugText_DriverTest, sizeof(gDebugText_DriverTest)); - - if(!gPaletteFade.active) - { - MenuDrawTextWindow(0x2, 0, 0x1B, 0x3); - MenuDrawTextWindow(0x2, 0x5, 0x1B, 0xA); - MenuDrawTextWindow(0x2, 0xC, 0x1B, 0x11); - MenuPrint(soundcheckStr, 4, 1); - MenuPrint(abDescStr, 14, 1); - MenuPrint(bgmStr, 4, 6); - MenuPrint(upDownStr, 14, 6); - MenuPrint(seStr, 4, 13); - MenuPrint(upDownStr, 14, 13); - MenuPrint(driverStr, 14, 18); - TASK.FUNC = sub_80BA384; - REG_WIN0H = WIN_RANGE(17, 223); - REG_WIN0V = WIN_RANGE(1, 31); - } -} - -void sub_80BA384(u8 taskId) // Task_HandleDrawingSoundCheckMenuText -{ - sub_80BA6B8(TASK.WINDOW_SELECTED); - sub_80BA700(TASK.BGM_INDEX + BGM_STOP, 7, 8); // print by BGM index - sub_80BA79C(gBGMNames[TASK.BGM_INDEX], 11, 8); - sub_80BA700(TASK.SE_INDEX, 7, 15); - sub_80BA79C(gSENames[TASK.SE_INDEX], 11, 15); - TASK.FUNC = sub_80BA65C; -} - -#ifdef NONMATCHING -bool8 sub_80BA400(u8 taskId) // Task_ProcessSoundCheckMenuInput -{ - if(gMain.newKeys & R_BUTTON) // driver test - { - TASK.FUNC = sub_80BA800; - return FALSE; - } - if(gMain.newKeys & L_BUTTON) - { - TASK.FUNC = sub_80BAF84; - return FALSE; - } - if(gMain.newKeys & START_BUTTON) - { - TASK.FUNC = sub_80BB25C; - return FALSE; - } - if(gMain.newKeys & A_BUTTON) // both these cases insist on non reuses of certain data variables and cause the function to not match. - { - if(TASK.WINDOW_SELECTED != 0) // is playing? - { - if(TASK.UNK_DATA4 != 0) - { - if(TASK.SE_INDEX != 0) // why are you insiting on a non signed halfword? - { - m4aSongNumStop(TASK.UNK_DATA4); - } - else - { - m4aSongNumStop(TASK.SE_INDEX); - TASK.UNK_DATA4 = TASK.SE_INDEX; - return FALSE; - } - } - else if(TASK.SE_INDEX == 0) // _080BA4BA - { - return FALSE; - } - // _080BA4C4 - m4aSongNumStart(TASK.SE_INDEX); - TASK.UNK_DATA4 = TASK.SE_INDEX; - return FALSE; - } - else // _080BA4D0 - { - if(TASK.UNK_DATA3 != 0) - { - if(TASK.BGM_INDEX != 0) - { - m4aSongNumStop(TASK.UNK_DATA3 + BGM_STOP); - } - else // _080BA500 - { - m4aSongNumStop(TASK.UNK_DATA3 + BGM_STOP); - TASK.UNK_DATA3 = TASK.BGM_INDEX; - return FALSE; - } - } - else if(TASK.BGM_INDEX == 0) // _080BA514 - return FALSE; - - m4aSongNumStart(TASK.BGM_INDEX + BGM_STOP); - TASK.UNK_DATA3 = TASK.BGM_INDEX; - } - return FALSE; - } - if(gMain.newKeys & B_BUTTON) - { - m4aSongNumStart(5); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - TASK.FUNC = sub_80BA68C; - return FALSE; - } - if(gMain.newAndRepeatedKeys & DPAD_UP) - { - TASK.data[8] ^= A_BUTTON; // huh? - return TRUE; - } - if(gMain.newAndRepeatedKeys & DPAD_DOWN) - { - TASK.data[8] ^= A_BUTTON; // huh? - return TRUE; - } - else - { - u16 keys = gMain.newAndRepeatedKeys & DPAD_RIGHT; - if(keys) - { - if(TASK.WINDOW_SELECTED != 0) - { - if(TASK.SE_INDEX > 0) - { - TASK.SE_INDEX--; - } - else - { - TASK.SE_INDEX = 0xF7; - } - } - else if(TASK.BGM_INDEX > 0) - { - TASK.BGM_INDEX--; - } - else - { - TASK.BGM_INDEX = 0x75; - } - return TRUE; - } - if(gMain.newAndRepeatedKeys & DPAD_LEFT) - { - if(TASK.WINDOW_SELECTED != 0) - { - if(TASK.SE_INDEX < 0xF7) - { - TASK.SE_INDEX++; - } - else - { - TASK.SE_INDEX = keys; // ?? - } - } - else if(TASK.BGM_INDEX < 0x75) - { - TASK.BGM_INDEX++; - return TRUE; - } - else - { - TASK.BGM_INDEX = TASK.SE_INDEX; - return TRUE; - } - return TRUE; - } - if(gMain.heldKeys & SELECT_BUTTON) - { - gUnknown_020387B0 = A_BUTTON; - return FALSE; - } - else - { - gUnknown_020387B0 = (gMain.heldKeys & SELECT_BUTTON); - return FALSE; - } - } -} -#else -__attribute__((naked)) -bool8 sub_80BA400(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - sub sp, 0x4\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - ldr r2, _080BA428 @ =gMain\n\ - ldrh r1, [r2, 0x2E]\n\ - movs r0, 0x80\n\ - lsls r0, 1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BA434\n\ - ldr r0, _080BA42C @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldr r0, _080BA430 @ =sub_80BA800\n\ - str r0, [r1]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA428: .4byte gMain\n\ -_080BA42C: .4byte gTasks\n\ -_080BA430: .4byte sub_80BA800\n\ -_080BA434:\n\ - movs r0, 0x80\n\ - lsls r0, 2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BA458\n\ - ldr r0, _080BA450 @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldr r0, _080BA454 @ =sub_80BAF84\n\ - str r0, [r1]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA450: .4byte gTasks\n\ -_080BA454: .4byte sub_80BAF84\n\ -_080BA458:\n\ - movs r0, 0x8\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BA478\n\ - ldr r0, _080BA470 @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldr r0, _080BA474 @ =sub_80BB25C\n\ - str r0, [r1]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA470: .4byte gTasks\n\ -_080BA474: .4byte sub_80BB25C\n\ -_080BA478:\n\ - movs r6, 0x1\n\ - movs r5, 0x1\n\ - ands r5, r1\n\ - cmp r5, 0\n\ - beq _080BA538\n\ - ldr r0, _080BA4AC @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r5, r1, r0\n\ - movs r1, 0x8\n\ - ldrsh r0, [r5, r1]\n\ - cmp r0, 0\n\ - beq _080BA4D0\n\ - movs r2, 0x10\n\ - ldrsh r0, [r5, r2]\n\ - cmp r0, 0\n\ - beq _080BA4BA\n\ - movs r3, 0xC\n\ - ldrsh r4, [r5, r3]\n\ - cmp r4, 0\n\ - beq _080BA4B0\n\ - ldrh r0, [r5, 0x10]\n\ - bl m4aSongNumStop\n\ - b _080BA4C4\n\ - .align 2, 0\n\ -_080BA4AC: .4byte gTasks\n\ -_080BA4B0:\n\ - ldrh r0, [r5, 0x10]\n\ - bl m4aSongNumStop\n\ - strh r4, [r5, 0x10]\n\ - b _080BA64C\n\ -_080BA4BA:\n\ - movs r4, 0xC\n\ - ldrsh r0, [r5, r4]\n\ - cmp r0, 0\n\ - bne _080BA4C4\n\ - b _080BA64C\n\ -_080BA4C4:\n\ - ldrh r0, [r5, 0xC]\n\ - bl m4aSongNumStart\n\ - ldrh r0, [r5, 0xC]\n\ - strh r0, [r5, 0x10]\n\ - b _080BA64C\n\ -_080BA4D0:\n\ - ldrh r1, [r5, 0xE]\n\ - movs r2, 0xE\n\ - ldrsh r0, [r5, r2]\n\ - cmp r0, 0\n\ - beq _080BA514\n\ - movs r3, 0xA\n\ - ldrsh r4, [r5, r3]\n\ - cmp r4, 0\n\ - beq _080BA500\n\ - ldr r0, _080BA4FC @ =0x0000015d\n\ - adds r4, r0, 0\n\ - adds r0, r1, r4\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - bl m4aSongNumStop\n\ - ldrh r1, [r5, 0xA]\n\ - adds r4, r1\n\ - lsls r4, 16\n\ - lsrs r4, 16\n\ - adds r0, r4, 0\n\ - b _080BA528\n\ - .align 2, 0\n\ -_080BA4FC: .4byte 0x0000015d\n\ -_080BA500:\n\ - ldr r2, _080BA510 @ =0x0000015d\n\ - adds r0, r1, r2\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - bl m4aSongNumStop\n\ - strh r4, [r5, 0xE]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA510: .4byte 0x0000015d\n\ -_080BA514:\n\ - ldrh r1, [r5, 0xA]\n\ - movs r3, 0xA\n\ - ldrsh r0, [r5, r3]\n\ - cmp r0, 0\n\ - bne _080BA520\n\ - b _080BA64C\n\ -_080BA520:\n\ - ldr r4, _080BA534 @ =0x0000015d\n\ - adds r0, r1, r4\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ -_080BA528:\n\ - bl m4aSongNumStart\n\ - ldrh r0, [r5, 0xA]\n\ - strh r0, [r5, 0xE]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA534: .4byte 0x0000015d\n\ -_080BA538:\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BA570\n\ - movs r0, 0x5\n\ - bl m4aSongNumStart\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - str r5, [sp]\n\ - movs r1, 0\n\ - movs r2, 0\n\ - movs r3, 0x10\n\ - bl BeginNormalPaletteFade\n\ - ldr r1, _080BA568 @ =gTasks\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - ldr r1, _080BA56C @ =sub_80BA68C\n\ - str r1, [r0]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA568: .4byte gTasks\n\ -_080BA56C: .4byte sub_80BA68C\n\ -_080BA570:\n\ - ldrh r1, [r2, 0x30]\n\ - movs r0, 0x40\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080BA582\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BA59C\n\ -_080BA582:\n\ - ldr r0, _080BA598 @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldrh r0, [r1, 0x8]\n\ - eors r0, r6\n\ - strh r0, [r1, 0x8]\n\ -_080BA592:\n\ - movs r0, 0x1\n\ - b _080BA64E\n\ - .align 2, 0\n\ -_080BA598: .4byte gTasks\n\ -_080BA59C:\n\ - movs r0, 0x10\n\ - ands r0, r1\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - cmp r3, 0\n\ - beq _080BA5EA\n\ - ldr r0, _080BA5CC @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r2, 0x8\n\ - ldrsh r0, [r1, r2]\n\ - cmp r0, 0\n\ - beq _080BA5D6\n\ - ldrh r2, [r1, 0xC]\n\ - movs r3, 0xC\n\ - ldrsh r0, [r1, r3]\n\ - cmp r0, 0\n\ - ble _080BA5D0\n\ - subs r0, r2, 0x1\n\ - strh r0, [r1, 0xC]\n\ - b _080BA592\n\ - .align 2, 0\n\ -_080BA5CC: .4byte gTasks\n\ -_080BA5D0:\n\ - movs r0, 0xF7\n\ - strh r0, [r1, 0xC]\n\ - b _080BA592\n\ -_080BA5D6:\n\ - ldrh r2, [r1, 0xA]\n\ - movs r4, 0xA\n\ - ldrsh r0, [r1, r4]\n\ - cmp r0, 0\n\ - ble _080BA5E4\n\ - subs r0, r2, 0x1\n\ - b _080BA5E6\n\ -_080BA5E4:\n\ - movs r0, 0x75\n\ -_080BA5E6:\n\ - strh r0, [r1, 0xA]\n\ - b _080BA592\n\ -_080BA5EA:\n\ - movs r0, 0x20\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BA630\n\ - ldr r1, _080BA614 @ =gTasks\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 3\n\ - adds r1, r0, r1\n\ - movs r0, 0x8\n\ - ldrsh r2, [r1, r0]\n\ - cmp r2, 0\n\ - beq _080BA61C\n\ - ldrh r2, [r1, 0xC]\n\ - movs r4, 0xC\n\ - ldrsh r0, [r1, r4]\n\ - cmp r0, 0xF6\n\ - bgt _080BA618\n\ - adds r0, r2, 0x1\n\ - strh r0, [r1, 0xC]\n\ - b _080BA592\n\ - .align 2, 0\n\ -_080BA614: .4byte gTasks\n\ -_080BA618:\n\ - strh r3, [r1, 0xC]\n\ - b _080BA592\n\ -_080BA61C:\n\ - ldrh r3, [r1, 0xA]\n\ - movs r4, 0xA\n\ - ldrsh r0, [r1, r4]\n\ - cmp r0, 0x74\n\ - bgt _080BA62C\n\ - adds r0, r3, 0x1\n\ - strh r0, [r1, 0xA]\n\ - b _080BA592\n\ -_080BA62C:\n\ - strh r2, [r1, 0xA]\n\ - b _080BA592\n\ -_080BA630:\n\ - ldrh r1, [r2, 0x2C]\n\ - movs r0, 0x4\n\ - ands r0, r1\n\ - lsls r0, 16\n\ - lsrs r1, r0, 16\n\ - cmp r1, 0\n\ - beq _080BA648\n\ - ldr r0, _080BA644 @ =gUnknown_020387B0\n\ - strb r6, [r0]\n\ - b _080BA64C\n\ - .align 2, 0\n\ -_080BA644: .4byte gUnknown_020387B0\n\ -_080BA648:\n\ - ldr r0, _080BA658 @ =gUnknown_020387B0\n\ - strb r1, [r0]\n\ -_080BA64C:\n\ - movs r0, 0\n\ -_080BA64E:\n\ - add sp, 0x4\n\ - pop {r4-r6}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_080BA658: .4byte gUnknown_020387B0\n\ - .syntax divided"); -} -#endif - -void sub_80BA65C(u8 taskId) -{ - if(sub_80BA400(taskId) != FALSE) - TASK.FUNC = sub_80BA384; -} - -void sub_80BA68C(u8 taskId) -{ - if(!gPaletteFade.active) - { - DestroyTask(taskId); - SetMainCallback2(CB2_InitTitleScreen); - } -} - -void sub_80BA6B8(u8 windowType) -{ - switch(windowType) - { - case BGM_WINDOW: - default: - REG_WIN1H = WIN_RANGE(17, 223); - REG_WIN1V = WIN_RANGE(41, 87); - break; - case SE_WINDOW: - REG_WIN1H = WIN_RANGE(17, 223); - REG_WIN1V = WIN_RANGE(97, 143); - break; - } -} - -void sub_80BA700(u16 soundIndex, u16 x, u16 y) // PrintSoundNumber ? -{ - u8 i; - u8 str[5]; - bool8 someBool; - u8 divisorValue; - - for(i = 0; i < 3; i++) - str[i] = 0; // initialize array - - str[3] = CHAR_ELLIPSIS; - str[4] = EOS; - someBool = FALSE; - - divisorValue = soundIndex / 100; - if(divisorValue) - { - str[0] = divisorValue + CHAR_0; - someBool = TRUE; - } - - divisorValue = (soundIndex % 100) / 10; - if(divisorValue || someBool != FALSE) - str[1] = divisorValue + CHAR_0; - - str[2] = ((soundIndex % 100) % 10) + CHAR_0; - MenuPrint(str, x, y); -} - -void sub_80BA79C(const u8 *const string, u16 x, u16 y) -{ - u8 i; - u8 str[11]; - - for(i = 0; i < 11; i++) - str[i] = 0; // format string. - - str[10] = EOS; // the above for loop formats the last element of the array unnecessarily. - - for(i = 0; string[i] != EOS && i < 10; i++) - str[i] = string[i]; - - MenuPrint(str, x, y); -} - -void sub_80BA800(u8 taskId) // Task_DrawDriverTestMenu -{ - u8 bbackStr[sizeof(gDebugText_BBack)]; - u8 aplayStr[sizeof(gDebugText_APlay)]; - u8 voiceStr[sizeof(gDebugText_Voice)]; - u8 volumeStr[sizeof(gDebugText_Volume)]; - u8 panpotStr[sizeof(gDebugText_Panpot)]; - u8 pitchStr[sizeof(gDebugText_Pitch)]; - u8 lengthStr[sizeof(gDebugText_Length)]; - u8 releaseStr[sizeof(gDebugText_Release)]; - u8 progressStr[sizeof(gDebugText_Progress)]; - u8 chorusStr[sizeof(gDebugText_Chorus)]; - u8 priorityStr[sizeof(gDebugText_Priority)]; - u8 playingStr[sizeof(gDebugText_Playing)]; - u8 reverseStr[sizeof(gDebugText_Reverse)]; - u8 stereoStr[sizeof(gDebugText_Stereo)]; - - memcpy(bbackStr, gDebugText_BBack, sizeof(gDebugText_BBack)); - memcpy(aplayStr, gDebugText_APlay, sizeof(gDebugText_APlay)); - memcpy(voiceStr, gDebugText_Voice, sizeof(gDebugText_Voice)); - memcpy(volumeStr, gDebugText_Volume, sizeof(gDebugText_Volume)); - memcpy(panpotStr, gDebugText_Panpot, sizeof(gDebugText_Panpot)); - memcpy(pitchStr, gDebugText_Pitch, sizeof(gDebugText_Pitch)); - memcpy(lengthStr, gDebugText_Length, sizeof(gDebugText_Length)); - memcpy(releaseStr, gDebugText_Release, sizeof(gDebugText_Release)); - memcpy(progressStr, gDebugText_Progress, sizeof(gDebugText_Progress)); - memcpy(chorusStr, gDebugText_Chorus, sizeof(gDebugText_Chorus)); - memcpy(priorityStr, gDebugText_Priority, sizeof(gDebugText_Priority)); - memcpy(playingStr, gDebugText_Playing, sizeof(gDebugText_Playing)); - memcpy(reverseStr, gDebugText_Reverse, sizeof(gDebugText_Reverse)); - memcpy(stereoStr, gDebugText_Stereo, sizeof(gDebugText_Stereo)); - - REG_DISPCNT = 0x3140; - MenuDrawTextWindow(0, 0, 0x1D, 0x13); - MenuPrint(bbackStr, 0x13, 0x4); - MenuPrint(aplayStr, 0x13, 0x2); - MenuPrint(voiceStr, 0x2, 0x1); - MenuPrint(volumeStr, 0x2, 0x3); - MenuPrint(panpotStr, 0x2, 0x5); - MenuPrint(pitchStr, 0x2, 0x7); - MenuPrint(lengthStr, 0x2, 0x9); - MenuPrint(releaseStr, 0x2, 0xB); - MenuPrint(progressStr, 0x2, 0xD); - MenuPrint(chorusStr, 0x2, 0xF); - MenuPrint(priorityStr, 0x2, 0x11); - MenuPrint(playingStr, 0x13, 0x10); - MenuPrint(reverseStr, 0x13, 0xE); - MenuPrint(stereoStr, 0x13, 0xC); - REG_WIN0H = WIN_RANGE(0, 240); - REG_WIN0V = WIN_RANGE(0, 160); - gUnknown_020387B3 = 0; - gUnknown_020387B1 = 0; - gUnknown_020387B2 = 0; - gUnknown_03005D30 = NULL; - gUnknown_020387D8 = 0; - gUnknown_020387D9 = 1; - gUnknown_020387B4[CRY_TEST_UNK0] = 0; - gUnknown_020387B4[CRY_TEST_VOLUME] = 0x78; - gUnknown_020387B4[CRY_TEST_PANPOT] = 0; - gUnknown_020387B4[CRY_TEST_PITCH] = 0x3C00; - gUnknown_020387B4[CRY_TEST_LENGTH] = 0xB4; - gUnknown_020387B4[CRY_TEST_PROGRESS] = 0; - gUnknown_020387B4[CRY_TEST_RELEASE] = 0; - gUnknown_020387B4[CRY_TEST_CHORUS] = 0; - gUnknown_020387B4[CRY_TEST_PRIORITY] = 2; - sub_80BAD5C(); - sub_80BAE10(0, 0); - TASK.FUNC = sub_80BAA48; -} - -void sub_80BAA48(u8 taskId) // Task_ProcessDriverTestInput -{ - if(gMain.newKeys & B_BUTTON) - { - REG_DISPCNT = 0x7140; - REG_WIN0H = WIN_RANGE(17, 223); - REG_WIN0V = WIN_RANGE(1, 31); - MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); - TASK.FUNC = sub_80BA258; - return; - } - if(gMain.newAndRepeatedKeys & DPAD_UP) // _080BAAA8 - { - u8 backupVar = gUnknown_020387B3; - if(--gUnknown_020387B3 < 0) - gUnknown_020387B3 = 8; - - sub_80BAE10(backupVar, gUnknown_020387B3); - return; - } - if(gMain.newAndRepeatedKeys & DPAD_DOWN) // _080BAAD0 - { - u8 backupVar = gUnknown_020387B3; - if(++gUnknown_020387B3 > 8) - gUnknown_020387B3 = 0; - - sub_80BAE10(backupVar, gUnknown_020387B3); - return; - } - if(gMain.newKeys & START_BUTTON) // _080BAAF8 - { - gUnknown_020387D8 ^= 1; - sub_80BAD5C(); - return; - } - if(gMain.newKeys & SELECT_BUTTON) // _080BAB14 - { - gUnknown_020387D9 ^= 1; - sub_80BAD5C(); - SetPokemonCryStereo(gUnknown_020387D9); - return; - } - if(gMain.newAndRepeatedKeys & R_BUTTON) // _080BAB38 - { - sub_80BACDC(10); - sub_80BAD5C(); - return; - } - if(gMain.newAndRepeatedKeys & L_BUTTON) // _080BAB46 - { - sub_80BACDC(-10); - sub_80BAD5C(); - return; - } - if(gMain.newAndRepeatedKeys & DPAD_LEFT) // _080BAB56 - { - sub_80BACDC(-1); - sub_80BAD5C(); - return; - } - if(gMain.newAndRepeatedKeys & DPAD_RIGHT) // _080BAB64 - { - sub_80BACDC(1); - sub_80BAD5C(); - return; - } - if(gMain.newKeys & A_BUTTON) // _080BAB78 - { - u8 divide, remaining; - - SetPokemonCryVolume(gUnknown_020387B4[CRY_TEST_VOLUME]); - SetPokemonCryPanpot(gUnknown_020387B4[CRY_TEST_PANPOT]); - SetPokemonCryPitch(gUnknown_020387B4[CRY_TEST_PITCH]); - SetPokemonCryLength(gUnknown_020387B4[CRY_TEST_LENGTH]); - SetPokemonCryProgress(gUnknown_020387B4[CRY_TEST_PROGRESS]); - SetPokemonCryRelease(gUnknown_020387B4[CRY_TEST_RELEASE]); - SetPokemonCryChorus(gUnknown_020387B4[CRY_TEST_CHORUS]); - SetPokemonCryPriority(gUnknown_020387B4[CRY_TEST_PRIORITY]); - - remaining = gUnknown_020387B4[CRY_TEST_UNK0] % 128; - divide = gUnknown_020387B4[CRY_TEST_UNK0] / 128; - - switch(divide) - { - case 0: - if(gUnknown_020387D8) - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84537C0[remaining]); - else - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8452590[remaining]); - break; - case 1: - if(gUnknown_020387D8) - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453DC0[remaining]); - else - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8452B90[remaining]); - break; - case 2: - if(gUnknown_020387D8) - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84543C0[remaining]); - else - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453190[remaining]); - break; - case 3: - if(gUnknown_020387D8) - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84549C0[remaining]); - else - gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453790[remaining]); - break; - } - } - - // _080BACA2 - if(gUnknown_03005D30 != NULL) - { - gUnknown_020387B1 = IsPokemonCryPlaying(gUnknown_03005D30); - - if(gUnknown_020387B1 != gUnknown_020387B2) - sub_80BAD5C(); - - gUnknown_020387B2 = gUnknown_020387B1; - } -} - -void sub_80BACDC(s8 var) -{ - int minMaxArray[ARRAY_COUNT(gUnknown_083D039C)]; - - memcpy(minMaxArray, gUnknown_083D039C, sizeof(gUnknown_083D039C)); - gUnknown_020387B4[gUnknown_020387B3] += var; - - if(gUnknown_020387B4[gUnknown_020387B3] > minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MAX)]) - gUnknown_020387B4[gUnknown_020387B3] = minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MIN)]; - - if(gUnknown_020387B4[gUnknown_020387B3] < minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MIN)]) - gUnknown_020387B4[gUnknown_020387B3] = minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MAX)]; -} - -void sub_80BAD5C(void) -{ - sub_80BAE78(gUnknown_020387B4[CRY_TEST_UNK0] + 1, 0xB, 0x1, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_VOLUME], 0xB, 0x3, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_PANPOT], 0xB, 0x5, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_PITCH], 0xB, 0x7, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_LENGTH], 0xB, 0x9, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_RELEASE], 0xB, 0xB, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_PROGRESS], 0xB, 0xD, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_CHORUS], 0xB, 0xF, 0x5); - sub_80BAE78(gUnknown_020387B4[CRY_TEST_PRIORITY], 0xB, 0x11, 0x5); - sub_80BAE78(gUnknown_020387B1, 0x1B, 0x10, 0x1); - sub_80BAE78(gUnknown_020387D8, 0x1B, 0xE, 0x1); - sub_80BAE78(gUnknown_020387D9, 0x1B, 0xC, 0x1); -} - -void sub_80BAE10(u8 var1, u8 var2) -{ - u8 str1[sizeof(gUnknown_083D03DC)]; - u8 str2[sizeof(gUnknown_083D03DE)]; - - memcpy(str1, gUnknown_083D03DC, sizeof(gUnknown_083D03DC)); - memcpy(str2, gUnknown_083D03DE, sizeof(gUnknown_083D03DE)); - - MenuPrint(str2, gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 1)]); - MenuPrint(str1, gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 1)]); -} - -/*void sub_80BAE78(int var1, u16 var2, u16 var3, u8 var4) -{ - u32 powers[6]; - u8 str[8]; - u8 i; - u8 someVar, someVar2; - - memcpy(powers, gUnknown_083D03E0, sizeof(powers); - - for(i = 0; i < var4; i++) - str[i] = 0; - - str[var4 + 1] = CHAR_0; - someVar = 0; - - if(var1 < 0) // make absolute value? wtf - { - var1 = -var1; // just use abs? - someVar = 1; - } - - // _080BAED6 - someVar2 = 0; - if(var4 == 1) - someVar2 = 1; - - // _080BAEE2 - for(;;) - { - - } -}*/ - -// no. -__attribute__((naked)) -void sub_80BAE78(int var1, u16 var2, u16 var3, u8 var4) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x2C\n\ - mov r8, r0\n\ - lsls r1, 16\n\ - lsrs r6, r1, 16\n\ - lsls r2, 16\n\ - lsrs r2, 16\n\ - lsls r3, 24\n\ - lsrs r7, r3, 24\n\ - mov r1, sp\n\ - ldr r0, _080BAF80 @ =gUnknown_083D03E0\n\ - ldm r0!, {r3-r5}\n\ - stm r1!, {r3-r5}\n\ - ldm r0!, {r3-r5}\n\ - stm r1!, {r3-r5}\n\ - movs r5, 0\n\ - add r0, sp, 0x18\n\ - mov r9, r0\n\ - cmp r5, r7\n\ - bgt _080BAEC0\n\ - mov r4, r9\n\ - movs r3, 0\n\ -_080BAEAC:\n\ - lsls r0, r5, 24\n\ - asrs r0, 24\n\ - adds r1, r4, r0\n\ - strb r3, [r1]\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - asrs r0, 24\n\ - cmp r0, r7\n\ - ble _080BAEAC\n\ -_080BAEC0:\n\ - adds r0, r7, 0x1\n\ - add r0, r9\n\ - movs r1, 0xFF\n\ - strb r1, [r0]\n\ - movs r1, 0\n\ - mov r3, r8\n\ - cmp r3, 0\n\ - bge _080BAED6\n\ - negs r3, r3\n\ - mov r8, r3\n\ - movs r1, 0x1\n\ -_080BAED6:\n\ - movs r4, 0\n\ - mov r10, r4\n\ - cmp r7, 0x1\n\ - bne _080BAEE2\n\ - movs r5, 0x1\n\ - mov r10, r5\n\ -_080BAEE2:\n\ - subs r0, r7, 0x1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - lsls r0, r5, 24\n\ - lsls r6, 24\n\ - str r6, [sp, 0x24]\n\ - lsls r2, 24\n\ - str r2, [sp, 0x28]\n\ - cmp r0, 0\n\ - blt _080BAF62\n\ - str r1, [sp, 0x20]\n\ -_080BAEF8:\n\ - asrs r6, r0, 24\n\ - lsls r0, r6, 2\n\ - add r0, sp\n\ - ldr r1, [r0]\n\ - mov r0, r8\n\ - bl __divsi3\n\ - lsls r0, 24\n\ - lsrs r2, r0, 24\n\ - cmp r0, 0\n\ - bne _080BAF1A\n\ - mov r0, r10\n\ - cmp r0, 0\n\ - bne _080BAF1A\n\ - lsls r4, r5, 24\n\ - cmp r6, 0\n\ - bne _080BAF46\n\ -_080BAF1A:\n\ - lsls r4, r5, 24\n\ - ldr r3, [sp, 0x20]\n\ - cmp r3, 0\n\ - beq _080BAF34\n\ - mov r5, r10\n\ - cmp r5, 0\n\ - bne _080BAF34\n\ - asrs r0, r4, 24\n\ - subs r0, r7, r0\n\ - subs r0, 0x1\n\ - add r0, r9\n\ - movs r1, 0xAE\n\ - strb r1, [r0]\n\ -_080BAF34:\n\ - asrs r1, r4, 24\n\ - subs r1, r7, r1\n\ - add r1, r9\n\ - lsls r0, r2, 24\n\ - asrs r0, 24\n\ - subs r0, 0x5F\n\ - strb r0, [r1]\n\ - movs r0, 0x1\n\ - mov r10, r0\n\ -_080BAF46:\n\ - asrs r4, 24\n\ - lsls r0, r4, 2\n\ - add r0, sp\n\ - ldr r1, [r0]\n\ - mov r0, r8\n\ - bl __modsi3\n\ - mov r8, r0\n\ - subs r4, 0x1\n\ - lsls r4, 24\n\ - lsrs r5, r4, 24\n\ - lsls r0, r5, 24\n\ - cmp r0, 0\n\ - bge _080BAEF8\n\ -_080BAF62:\n\ - ldr r3, [sp, 0x24]\n\ - lsrs r1, r3, 24\n\ - ldr r4, [sp, 0x28]\n\ - lsrs r2, r4, 24\n\ - mov r0, r9\n\ - bl MenuPrint\n\ - add sp, 0x2C\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080BAF80: .4byte gUnknown_083D03E0\n\ - .syntax divided"); -} - -void sub_80BAF84(u8 taskId) -{ - u8 seStr[sizeof(gOtherText_SE)]; - u8 panStr[sizeof(gOtherText_Pan)]; - u8 playingStr[sizeof(gDebugText_Playing)]; - - memcpy(seStr, gOtherText_SE, sizeof(gOtherText_SE)); - memcpy(panStr, gOtherText_Pan, sizeof(gOtherText_Pan)); - memcpy(playingStr, gDebugText_Playing, sizeof(gDebugText_Playing)); - - REG_DISPCNT = 0x3140; - MenuDrawTextWindow(0, 0, 0x1D, 0x13); - MenuPrint(seStr, 3, 2); - MenuPrint(panStr, 3, 4); - MenuPrint(playingStr, 3, 8); - REG_WIN0H = WIN_RANGE(0, 240); - REG_WIN0V = WIN_RANGE(0, 160); - gUnknown_020387B4[CRY_TEST_UNK0] = 1; - gUnknown_020387B4[CRY_TEST_PANPOT] = 0; - gUnknown_020387B4[CRY_TEST_CHORUS] = 0; - gUnknown_020387B4[CRY_TEST_PROGRESS] = 0; - gUnknown_020387B4[CRY_TEST_RELEASE] = 0; - sub_80BB1D4(); - TASK.FUNC = sub_80BB038; -} - -void sub_80BB038(u8 taskId) -{ - sub_80BB1D4(); - if(gUnknown_020387B4[CRY_TEST_PROGRESS]) - { - if(gUnknown_020387B4[CRY_TEST_RELEASE]) - { - gUnknown_020387B4[CRY_TEST_RELEASE]--; - } - else // _080BB05C - { - s8 panpot = gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]]; - if(panpot != -128) - { - if(panpot == 0x7F) - { - gUnknown_020387B4[CRY_TEST_CHORUS] += 2; - if(gUnknown_020387B4[CRY_TEST_CHORUS] < 0x3F) - SE12PanpotControl(gUnknown_020387B4[CRY_TEST_CHORUS]); - } - } - else // _080BB08C - { - gUnknown_020387B4[CRY_TEST_CHORUS] -= 2; - if(gUnknown_020387B4[CRY_TEST_CHORUS] > -0x40) - SE12PanpotControl(gUnknown_020387B4[CRY_TEST_CHORUS]); - } - } - } - // _080BB0A2 - if(gMain.newKeys & B_BUTTON) - { - REG_DISPCNT = 0x7140; - REG_WIN0H = WIN_RANGE(17, 223); - REG_WIN0V = WIN_RANGE(1, 31); - MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); - TASK.FUNC = sub_80BA258; - return; - } - if(gMain.newKeys & A_BUTTON) // _080BB104 - { - s8 panpot = gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]]; - if(panpot != -128) - { - if(panpot == 0x7F) - { - PlaySE12WithPanning(gUnknown_020387B4[CRY_TEST_UNK0], -0x40); - gUnknown_020387B4[CRY_TEST_CHORUS] = -0x40; - gUnknown_020387B4[CRY_TEST_PROGRESS] = 1; - gUnknown_020387B4[CRY_TEST_RELEASE] = 0x1E; - return; - } - } - else // _080BB140 - { - PlaySE12WithPanning(gUnknown_020387B4[CRY_TEST_UNK0], 0x3F); - gUnknown_020387B4[CRY_TEST_CHORUS] = 0x3F; - gUnknown_020387B4[CRY_TEST_PROGRESS] = 1; - gUnknown_020387B4[CRY_TEST_RELEASE] = 0x1E; - return; - } - // _080BB154 - PlaySE12WithPanning(gUnknown_020387B4[CRY_TEST_UNK0], panpot); - gUnknown_020387B4[CRY_TEST_PROGRESS] = 0; - return; - } - if(gMain.newKeys & L_BUTTON) // _080BB15E - { - gUnknown_020387B4[CRY_TEST_PANPOT]++; - if(gUnknown_020387B4[CRY_TEST_PANPOT] > 4) - gUnknown_020387B4[CRY_TEST_PANPOT] = 0; - } - if(gMain.newKeys & R_BUTTON) // _080BB176 - { - gUnknown_020387B4[CRY_TEST_PANPOT]--; - if(gUnknown_020387B4[CRY_TEST_PANPOT] < 0) - gUnknown_020387B4[CRY_TEST_PANPOT] = 4; - } - if(gMain.newAndRepeatedKeys & DPAD_RIGHT) // _080BB192 - { - gUnknown_020387B4[CRY_TEST_UNK0]++; - if(gUnknown_020387B4[CRY_TEST_UNK0] > 0xF7) - gUnknown_020387B4[CRY_TEST_UNK0] = 0; - } - else if(gMain.newAndRepeatedKeys & DPAD_LEFT) // _080BB1B0 - { - gUnknown_020387B4[CRY_TEST_UNK0]--; - if(gUnknown_020387B4[CRY_TEST_UNK0] < 0) - gUnknown_020387B4[CRY_TEST_UNK0] = 0xF7; - } -} - -void sub_80BB1D4(void) -{ - u8 lrStr[sizeof(gOtherText_LR)]; - u8 rlStr[sizeof(gOtherText_RL)]; - - memcpy(lrStr, gOtherText_LR, sizeof(lrStr)); - memcpy(rlStr, gOtherText_RL, sizeof(rlStr)); - - sub_80BAE78(gUnknown_020387B4[CRY_TEST_UNK0], 7, 2, 3); - - switch(gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]]) - { - case 0x7F: - MenuPrint(lrStr, 7, 4); - break; - case -0x80: - MenuPrint(rlStr, 7, 4); - break; - default: - sub_80BAE78(gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]], 7, 4, 3); - break; - } - sub_80BAE78(IsSEPlaying(), 12, 8, 1); -} - -void sub_80BB25C(u8 taskId) -{ - struct CryRelatedStruct cryStruct, cryStruct2; - u8 zero; - - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); - gUnknown_03005D34 = 1; - ResetSpriteData(); - FreeAllSpritePalettes(); - - cryStruct.unk0 = 0x2000; - cryStruct.unk2 = 29; - cryStruct.paletteNo = 12; - cryStruct.yPos = 30; - cryStruct.xPos = 4; - - zero = 0; // wtf? - gUnknown_03005E98 = 0; - - while(sub_8119E3C(&cryStruct, 3) == FALSE); - - cryStruct2.unk0 = 0; - cryStruct2.unk2 = 15; - cryStruct2.paletteNo = 13; - cryStruct2.xPos = 12; - cryStruct2.yPos = 12; - - zero = 0; // wtf? - gUnknown_03005E98 = 0; - - while(ShowPokedexCryScreen(&cryStruct2, 2) == FALSE); - - MenuDrawTextWindow(0, 16, 5, 19); - sub_80BB494(); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); - REG_BG2HOFS = 0; - REG_BG2VOFS = 0; - REG_BG2CNT = 0xF01; - REG_BG3CNT = 0x1D03; - REG_DISPCNT = 0x1d40; - m4aMPlayFadeOutTemporarily(&gMPlay_BGM, 2); - TASK.FUNC = sub_80BB3B4; -} - -void sub_80BB3B4(u8 taskId) -{ - sub_8119F88(3); - - if(gMain.newKeys & A_BUTTON) - { - sub_811A050(gUnknown_03005D34); - } - if(gMain.newKeys & R_BUTTON) - { - StopCryAndClearCrySongs(); - } - if(gMain.newAndRepeatedKeys & DPAD_UP) - { - if(--gUnknown_03005D34 == 0) - gUnknown_03005D34 = 384; // total species - sub_80BB494(); - } - if(gMain.newAndRepeatedKeys & DPAD_DOWN) - { - if(++gUnknown_03005D34 > 384) - gUnknown_03005D34 = 1; - sub_80BB494(); - } - if(gMain.newKeys & B_BUTTON) - { - REG_DISPCNT = 0x7140; - REG_WIN0H = WIN_RANGE(17, 223); - REG_WIN0V = WIN_RANGE(1, 31); - MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); - TASK.FUNC = sub_80BA258; - DestroyCryMeterNeedleSprite(); - } -} - -void sub_80BB494(void) -{ - sub_80BAE78(gUnknown_03005D34, 1, 17, 3); -} diff --git a/src/unused_8124F94.c b/src/unused_8124F94.c index 93b569058..5f76fa92e 100644 --- a/src/unused_8124F94.c +++ b/src/unused_8124F94.c @@ -64,7 +64,7 @@ u8 unref_sub_8124FD8(struct UnknownStruct1 *a, const struct UnknownStruct2 *b) } else { - sub_800D238(b->src, a->dest + a->unk2 * 64); + LZDecompressWram(b->src, a->dest + a->unk2 * 64); } a->unk88[a->unk1].unk8 = a->unk2; temp = r6 + a->unk2; @@ -95,7 +95,7 @@ u8 unref_sub_81250A4(struct UnknownStruct1 *a, struct UnknownStruct3 *b) { u16 palette[16]; - sub_800D238(b->paletteSrc, palette); + LZDecompressWram(b->paletteSrc, palette); LoadPalette(palette, a->paletteNum * 16, 32); } a->unk8[a->paletteNum].paletteCount = a->paletteNum; @@ -111,7 +111,7 @@ u8 unref_sub_8125118(struct UnknownStruct1 *a, struct UnknownStruct3 *b) u8 r7 = b->paletteCount; u8 i; - sub_800D238(b->paletteSrc, palettes); + LZDecompressWram(b->paletteSrc, palettes); for (i = a->paletteNum; i < r7; i++) { if (a->paletteNum + i >= 16) |